// 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  S40C9_nt  {
  int s40c9f0[2];
  void  mf40c9(); // _ZN8S40C9_nt6mf40c9Ev
};
//SIG(-1 S40C9_nt) C1{ m Fi[2]}


void  S40C9_nt ::mf40c9(){}

//skip512 S40C9_nt

#else // __cplusplus

Class_Descriptor cd_S40C9_nt = {  "S40C9_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  S40C8_nt  {
  int s40c8f0;
  __tsi64 s40c8f1;
  void *s40c8f2[4];
  int s40c8f3[2];
  void *s40c8f4;
  ::S40C9_nt s40c8f5;
  void *s40c8f6[2];
  virtual  ~S40C8_nt(); // _ZN8S40C8_ntD1Ev
  virtual void  v8(); // _ZN8S40C8_nt2v8Ev
  virtual void  v9(); // _ZN8S40C8_nt2v9Ev
  virtual void  v10(); // _ZN8S40C8_nt3v10Ev
  virtual void  v11(); // _ZN8S40C8_nt3v11Ev
  virtual void  v12(); // _ZN8S40C8_nt3v12Ev
  virtual void  v13(); // _ZN8S40C8_nt3v13Ev
  virtual void  v14(); // _ZN8S40C8_nt3v14Ev
  virtual void  v15(); // _ZN8S40C8_nt3v15Ev
  virtual void  v16(); // _ZN8S40C8_nt3v16Ev
  virtual void  v17(); // _ZN8S40C8_nt3v17Ev
  virtual void  v18(); // _ZN8S40C8_nt3v18Ev
  virtual void  v19(); // _ZN8S40C8_nt3v19Ev
  virtual void  v20(); // _ZN8S40C8_nt3v20Ev
  virtual void  v21(); // _ZN8S40C8_nt3v21Ev
  virtual void  v22(); // _ZN8S40C8_nt3v22Ev
  virtual void  v23(); // _ZN8S40C8_nt3v23Ev
  virtual void  v24(); // _ZN8S40C8_nt3v24Ev
  virtual void  v25(); // _ZN8S40C8_nt3v25Ev
  virtual void  v26(); // _ZN8S40C8_nt3v26Ev
  virtual void  v27(); // _ZN8S40C8_nt3v27Ev
  virtual void  v28(); // _ZN8S40C8_nt3v28Ev
  virtual void  v29(); // _ZN8S40C8_nt3v29Ev
  virtual void  v30(); // _ZN8S40C8_nt3v30Ev
  virtual void  v31(); // _ZN8S40C8_nt3v31Ev
  virtual void  v32(); // _ZN8S40C8_nt3v32Ev
  virtual void  v33(); // _ZN8S40C8_nt3v33Ev
  virtual void  v34(); // _ZN8S40C8_nt3v34Ev
  virtual void  v35(); // _ZN8S40C8_nt3v35Ev
  virtual void  v36(); // _ZN8S40C8_nt3v36Ev
  virtual void  v37(); // _ZN8S40C8_nt3v37Ev
  virtual void  v38(); // _ZN8S40C8_nt3v38Ev
  virtual void  v39(); // _ZN8S40C8_nt3v39Ev
  virtual void  v40(); // _ZN8S40C8_nt3v40Ev
  virtual void  v41(); // _ZN8S40C8_nt3v41Ev
  virtual void  v42(); // _ZN8S40C8_nt3v42Ev
  virtual void  v43(); // _ZN8S40C8_nt3v43Ev
  virtual void  v44(); // _ZN8S40C8_nt3v44Ev
  virtual void  v45(); // _ZN8S40C8_nt3v45Ev
  virtual void  v46(); // _ZN8S40C8_nt3v46Ev
  virtual void  v47(); // _ZN8S40C8_nt3v47Ev
  virtual void  v48(); // _ZN8S40C8_nt3v48Ev
  virtual void  v49(); // _ZN8S40C8_nt3v49Ev
  virtual void  v50(); // _ZN8S40C8_nt3v50Ev
  virtual void  v51(); // _ZN8S40C8_nt3v51Ev
  virtual void  v52(); // _ZN8S40C8_nt3v52Ev
  virtual void  v53(); // _ZN8S40C8_nt3v53Ev
  virtual void  v54(); // _ZN8S40C8_nt3v54Ev
  virtual void  v55(); // _ZN8S40C8_nt3v55Ev
  virtual void  v56(); // _ZN8S40C8_nt3v56Ev
  virtual void  v57(); // _ZN8S40C8_nt3v57Ev
  virtual void  v58(); // _ZN8S40C8_nt3v58Ev
  virtual void  v59(); // _ZN8S40C8_nt3v59Ev
  virtual void  v60(); // _ZN8S40C8_nt3v60Ev
  virtual void  v61(); // _ZN8S40C8_nt3v61Ev
  virtual void  v62(); // _ZN8S40C8_nt3v62Ev
  virtual void  v63(); // _ZN8S40C8_nt3v63Ev
  virtual void  v64(); // _ZN8S40C8_nt3v64Ev
  virtual void  v65(); // _ZN8S40C8_nt3v65Ev
  virtual void  v66(); // _ZN8S40C8_nt3v66Ev
  virtual void  v67(); // _ZN8S40C8_nt3v67Ev
  virtual void  v68(); // _ZN8S40C8_nt3v68Ev
  virtual void  v69(); // _ZN8S40C8_nt3v69Ev
  virtual void  v70(); // _ZN8S40C8_nt3v70Ev
  virtual void  v71(); // _ZN8S40C8_nt3v71Ev
  S40C8_nt(); // tgen
};
//SIG(-1 S40C8_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]}


 S40C8_nt ::~S40C8_nt(){ note_dtor("S40C8_nt", this);}
void  S40C8_nt ::v8(){vfunc_called(this, "_ZN8S40C8_nt2v8Ev");}
void  S40C8_nt ::v9(){vfunc_called(this, "_ZN8S40C8_nt2v9Ev");}
void  S40C8_nt ::v10(){vfunc_called(this, "_ZN8S40C8_nt3v10Ev");}
void  S40C8_nt ::v11(){vfunc_called(this, "_ZN8S40C8_nt3v11Ev");}
void  S40C8_nt ::v12(){vfunc_called(this, "_ZN8S40C8_nt3v12Ev");}
void  S40C8_nt ::v13(){vfunc_called(this, "_ZN8S40C8_nt3v13Ev");}
void  S40C8_nt ::v14(){vfunc_called(this, "_ZN8S40C8_nt3v14Ev");}
void  S40C8_nt ::v15(){vfunc_called(this, "_ZN8S40C8_nt3v15Ev");}
void  S40C8_nt ::v16(){vfunc_called(this, "_ZN8S40C8_nt3v16Ev");}
void  S40C8_nt ::v17(){vfunc_called(this, "_ZN8S40C8_nt3v17Ev");}
void  S40C8_nt ::v18(){vfunc_called(this, "_ZN8S40C8_nt3v18Ev");}
void  S40C8_nt ::v19(){vfunc_called(this, "_ZN8S40C8_nt3v19Ev");}
void  S40C8_nt ::v20(){vfunc_called(this, "_ZN8S40C8_nt3v20Ev");}
void  S40C8_nt ::v21(){vfunc_called(this, "_ZN8S40C8_nt3v21Ev");}
void  S40C8_nt ::v22(){vfunc_called(this, "_ZN8S40C8_nt3v22Ev");}
void  S40C8_nt ::v23(){vfunc_called(this, "_ZN8S40C8_nt3v23Ev");}
void  S40C8_nt ::v24(){vfunc_called(this, "_ZN8S40C8_nt3v24Ev");}
void  S40C8_nt ::v25(){vfunc_called(this, "_ZN8S40C8_nt3v25Ev");}
void  S40C8_nt ::v26(){vfunc_called(this, "_ZN8S40C8_nt3v26Ev");}
void  S40C8_nt ::v27(){vfunc_called(this, "_ZN8S40C8_nt3v27Ev");}
void  S40C8_nt ::v28(){vfunc_called(this, "_ZN8S40C8_nt3v28Ev");}
void  S40C8_nt ::v29(){vfunc_called(this, "_ZN8S40C8_nt3v29Ev");}
void  S40C8_nt ::v30(){vfunc_called(this, "_ZN8S40C8_nt3v30Ev");}
void  S40C8_nt ::v31(){vfunc_called(this, "_ZN8S40C8_nt3v31Ev");}
void  S40C8_nt ::v32(){vfunc_called(this, "_ZN8S40C8_nt3v32Ev");}
void  S40C8_nt ::v33(){vfunc_called(this, "_ZN8S40C8_nt3v33Ev");}
void  S40C8_nt ::v34(){vfunc_called(this, "_ZN8S40C8_nt3v34Ev");}
void  S40C8_nt ::v35(){vfunc_called(this, "_ZN8S40C8_nt3v35Ev");}
void  S40C8_nt ::v36(){vfunc_called(this, "_ZN8S40C8_nt3v36Ev");}
void  S40C8_nt ::v37(){vfunc_called(this, "_ZN8S40C8_nt3v37Ev");}
void  S40C8_nt ::v38(){vfunc_called(this, "_ZN8S40C8_nt3v38Ev");}
void  S40C8_nt ::v39(){vfunc_called(this, "_ZN8S40C8_nt3v39Ev");}
void  S40C8_nt ::v40(){vfunc_called(this, "_ZN8S40C8_nt3v40Ev");}
void  S40C8_nt ::v41(){vfunc_called(this, "_ZN8S40C8_nt3v41Ev");}
void  S40C8_nt ::v42(){vfunc_called(this, "_ZN8S40C8_nt3v42Ev");}
void  S40C8_nt ::v43(){vfunc_called(this, "_ZN8S40C8_nt3v43Ev");}
void  S40C8_nt ::v44(){vfunc_called(this, "_ZN8S40C8_nt3v44Ev");}
void  S40C8_nt ::v45(){vfunc_called(this, "_ZN8S40C8_nt3v45Ev");}
void  S40C8_nt ::v46(){vfunc_called(this, "_ZN8S40C8_nt3v46Ev");}
void  S40C8_nt ::v47(){vfunc_called(this, "_ZN8S40C8_nt3v47Ev");}
void  S40C8_nt ::v48(){vfunc_called(this, "_ZN8S40C8_nt3v48Ev");}
void  S40C8_nt ::v49(){vfunc_called(this, "_ZN8S40C8_nt3v49Ev");}
void  S40C8_nt ::v50(){vfunc_called(this, "_ZN8S40C8_nt3v50Ev");}
void  S40C8_nt ::v51(){vfunc_called(this, "_ZN8S40C8_nt3v51Ev");}
void  S40C8_nt ::v52(){vfunc_called(this, "_ZN8S40C8_nt3v52Ev");}
void  S40C8_nt ::v53(){vfunc_called(this, "_ZN8S40C8_nt3v53Ev");}
void  S40C8_nt ::v54(){vfunc_called(this, "_ZN8S40C8_nt3v54Ev");}
void  S40C8_nt ::v55(){vfunc_called(this, "_ZN8S40C8_nt3v55Ev");}
void  S40C8_nt ::v56(){vfunc_called(this, "_ZN8S40C8_nt3v56Ev");}
void  S40C8_nt ::v57(){vfunc_called(this, "_ZN8S40C8_nt3v57Ev");}
void  S40C8_nt ::v58(){vfunc_called(this, "_ZN8S40C8_nt3v58Ev");}
void  S40C8_nt ::v59(){vfunc_called(this, "_ZN8S40C8_nt3v59Ev");}
void  S40C8_nt ::v60(){vfunc_called(this, "_ZN8S40C8_nt3v60Ev");}
void  S40C8_nt ::v61(){vfunc_called(this, "_ZN8S40C8_nt3v61Ev");}
void  S40C8_nt ::v62(){vfunc_called(this, "_ZN8S40C8_nt3v62Ev");}
void  S40C8_nt ::v63(){vfunc_called(this, "_ZN8S40C8_nt3v63Ev");}
void  S40C8_nt ::v64(){vfunc_called(this, "_ZN8S40C8_nt3v64Ev");}
void  S40C8_nt ::v65(){vfunc_called(this, "_ZN8S40C8_nt3v65Ev");}
void  S40C8_nt ::v66(){vfunc_called(this, "_ZN8S40C8_nt3v66Ev");}
void  S40C8_nt ::v67(){vfunc_called(this, "_ZN8S40C8_nt3v67Ev");}
void  S40C8_nt ::v68(){vfunc_called(this, "_ZN8S40C8_nt3v68Ev");}
void  S40C8_nt ::v69(){vfunc_called(this, "_ZN8S40C8_nt3v69Ev");}
void  S40C8_nt ::v70(){vfunc_called(this, "_ZN8S40C8_nt3v70Ev");}
void  S40C8_nt ::v71(){vfunc_called(this, "_ZN8S40C8_nt3v71Ev");}
S40C8_nt ::S40C8_nt(){ note_ctor("S40C8_nt", this);} // tgen

//skip512 S40C8_nt

#else // __cplusplus

extern void _ZN8S40C8_ntC1Ev();
extern void _ZN8S40C8_ntD1Ev();
Name_Map name_map_S40C8_nt[] = {
  NSPAIR(_ZN8S40C8_ntC1Ev),
  NSPAIR(_ZN8S40C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern void _ZN8S40C8_ntD1Ev();
extern void _ZN8S40C8_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
static  VTBL_ENTRY vtc_S40C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C8_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI8S40C8_nt[];
VTBL_ENTRY *P__ZTI8S40C8_nt = _ZTI8S40C8_nt; 
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
Class_Descriptor cd_S40C8_nt = {  "S40C8_nt", // class name
  0,0,//no base classes
  &(vtc_S40C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S40C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S40C8_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  S40C12_nt  {
  void *s40c12f0;
  int s40c12f1[2];
  void  mf40c12(); // _ZN9S40C12_nt7mf40c12Ev
};
//SIG(-1 S40C12_nt) C1{ m Fp Fi[2]}


void  S40C12_nt ::mf40c12(){}

//skip512 S40C12_nt

#else // __cplusplus

Class_Descriptor cd_S40C12_nt = {  "S40C12_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  S40C11_nt  : S40C12_nt {
};
//SIG(-1 S40C11_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S40C11_nt

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C11_nt = {  "S40C11_nt", // class name
  bases_S40C11_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  S40C10_nt  : S40C11_nt {
};
//SIG(-1 S40C10_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S40C10_nt

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C11_nt;
static Base_Class bases_S40C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S40C13_nt  {
  int s40c13f0;
  void  mf40c13(); // _ZN9S40C13_nt7mf40c13Ev
};
//SIG(-1 S40C13_nt) C1{ m Fi}


void  S40C13_nt ::mf40c13(){}

//skip512 S40C13_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S40C13_nt[];
VTBL_ENTRY *P__ZTI9S40C13_nt = _ZTI9S40C13_nt; 
Class_Descriptor cd_S40C13_nt = {  "S40C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI9S40C13_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  S40C17  : S40C12_nt {
};
//SIG(-1 S40C17) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C17()
{
  extern Class_Descriptor cd_S40C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C17, buf);
    S40C17 &lv = *(new (buf) S40C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C17)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C17");
    test_class_info(&lv, &cd_S40C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C17(Test_S40C17, "S40C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C17 = {  "S40C17", // class name
  bases_S40C17, 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  S40C16  : S40C17 {
};
//SIG(-1 S40C16) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C16()
{
  extern Class_Descriptor cd_S40C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C16, buf);
    S40C16 &lv = *(new (buf) S40C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C16)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C17*), 0, "S40C16");
    check_base_class_offset(lv, (S40C17*), 0, "S40C16");
    test_class_info(&lv, &cd_S40C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C16(Test_S40C16, "S40C16", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C17;
static Base_Class bases_S40C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C16 = {  "S40C16", // class name
  bases_S40C16, 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  S40C18_nt  {
  int s40c18f0[3];
  void  mf40c18(); // _ZN9S40C18_nt7mf40c18Ev
};
//SIG(-1 S40C18_nt) C1{ m Fi[3]}


void  S40C18_nt ::mf40c18(){}

//skip512 S40C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C23  : S40C12_nt {
};
//SIG(-1 S40C23) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C23()
{
  extern Class_Descriptor cd_S40C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C23, buf);
    S40C23 &lv = *(new (buf) S40C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C23)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C23");
    test_class_info(&lv, &cd_S40C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C23(Test_S40C23, "S40C23", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C23 = {  "S40C23", // class name
  bases_S40C23, 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  S40C22  : S40C23 {
};
//SIG(-1 S40C22) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C22()
{
  extern Class_Descriptor cd_S40C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C22, buf);
    S40C22 &lv = *(new (buf) S40C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C22)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C23*), 0, "S40C22");
    check_base_class_offset(lv, (S40C23*), 0, "S40C22");
    test_class_info(&lv, &cd_S40C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C22(Test_S40C22, "S40C22", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C23;
static Base_Class bases_S40C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C22 = {  "S40C22", // class name
  bases_S40C22, 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  S40C7_nt  : S40C8_nt {
  ::S40C10_nt s40c7f0;
  ::S40C10_nt s40c7f1;
  ::S40C13_nt s40c7f2;
  int s40c7f3;
  char s40c7f4[4];
  void *s40c7f5[2];
  ::S40C10_nt s40c7f6;
  unsigned int s40c7f7:1;
  unsigned int s40c7f8:1;
  unsigned int s40c7f9:1;
  unsigned int s40c7f10:1;
  unsigned int s40c7f11:1;
  unsigned int s40c7f12:1;
  unsigned int s40c7f13:1;
  unsigned int s40c7f14:1;
  unsigned int s40c7f15:1;
  unsigned int s40c7f16:1;
  unsigned int s40c7f17:1;
  unsigned int s40c7f18:1;
  unsigned int s40c7f19:1;
  unsigned int s40c7f20:1;
  unsigned int s40c7f21:1;
  unsigned int s40c7f22:1;
  unsigned int s40c7f23:1;
  unsigned int s40c7f24:1;
  unsigned int s40c7f25:1;
  unsigned int s40c7f26:1;
  unsigned int s40c7f27:1;
  unsigned int s40c7f28:1;
  unsigned int s40c7f29:1;
  unsigned int s40c7f30:1;
  unsigned int s40c7f31:1;
  unsigned int s40c7f32:1;
  unsigned int s40c7f33:1;
  unsigned int s40c7f34:1;
  unsigned int s40c7f35:1;
  unsigned int s40c7f36:1;
  unsigned int s40c7f37:1;
  unsigned int s40c7f38:1;
  unsigned int s40c7f39:1;
  unsigned int s40c7f40:1;
  unsigned int s40c7f41:1;
  unsigned int s40c7f42:1;
  unsigned int s40c7f43:1;
  unsigned int s40c7f44:1;
  unsigned int s40c7f45:1;
  unsigned int s40c7f46:1;
  unsigned int s40c7f47:1;
  unsigned int s40c7f48:1;
  unsigned int s40c7f49:1;
  unsigned int s40c7f50:1;
  unsigned int s40c7f51:1;
  unsigned int s40c7f52:1;
  unsigned int s40c7f53:1;
  unsigned int s40c7f54:1;
  unsigned int s40c7f55:1;
  unsigned int s40c7f56:1;
  unsigned int s40c7f57:1;
  unsigned int s40c7f58:1;
  unsigned int s40c7f59:1;
  unsigned int s40c7f60:1;
  unsigned int s40c7f61:1;
  unsigned int s40c7f62:1;
  unsigned int s40c7f63:1;
  unsigned int s40c7f64:1;
  unsigned int s40c7f65:1;
  unsigned int s40c7f66:1;
  unsigned int s40c7f67:1;
  unsigned int s40c7f68:1;
  unsigned int s40c7f69:1;
  unsigned int s40c7f70:1;
  unsigned int s40c7f71:1;
  unsigned int s40c7f72:1;
  unsigned int s40c7f73:1;
  unsigned int s40c7f74:1;
  unsigned int s40c7f75:1;
  unsigned int s40c7f76:1;
  unsigned int s40c7f77:1;
  unsigned int s40c7f78:1;
  unsigned int s40c7f79:1;
  unsigned int s40c7f80:1;
  unsigned int s40c7f81:1;
  unsigned int s40c7f82:1;
  unsigned int s40c7f83:1;
  int s40c7f84[5];
  void *s40c7f85[2];
  int s40c7f86[3];
  ::S40C9_nt s40c7f87;
  ::S40C9_nt s40c7f88;
  ::S40C9_nt s40c7f89;
  ::S40C16 s40c7f90;
  ::S40C16 s40c7f91;
  int s40c7f92;
  void *s40c7f93[2];
  ::S40C18_nt s40c7f94;
  ::S40C18_nt s40c7f95;
  ::S40C18_nt s40c7f96;
  ::S40C18_nt s40c7f97;
  void *s40c7f98;
  ::S40C9_nt s40c7f99;
  ::S40C16 s40c7f100;
  ::S40C18_nt s40c7f101;
  ::S40C18_nt s40c7f102;
  int s40c7f103;
  ::S40C18_nt s40c7f104;
  ::S40C18_nt s40c7f105;
  void *s40c7f106;
  int s40c7f107;
  char s40c7f108;
  ::S40C18_nt s40c7f109;
  ::S40C18_nt s40c7f110;
  void *s40c7f111;
  int s40c7f112;
  void *s40c7f113;
  ::S40C16 s40c7f114;
  ::S40C22 s40c7f115;
  ::S40C22 s40c7f116;
  virtual  ~S40C7_nt(); // _ZN8S40C7_ntD1Ev
  virtual void  v72(); // _ZN8S40C7_nt3v72Ev
  virtual void  v73(); // _ZN8S40C7_nt3v73Ev
  virtual void  v74(); // _ZN8S40C7_nt3v74Ev
  virtual void  v75(); // _ZN8S40C7_nt3v75Ev
  virtual void  v76(); // _ZN8S40C7_nt3v76Ev
  virtual void  v77(); // _ZN8S40C7_nt3v77Ev
  virtual void  v78(); // _ZN8S40C7_nt3v78Ev
  virtual void  v79(); // _ZN8S40C7_nt3v79Ev
  virtual void  v80(); // _ZN8S40C7_nt3v80Ev
  virtual void  v81(); // _ZN8S40C7_nt3v81Ev
  virtual void  v82(); // _ZN8S40C7_nt3v82Ev
  virtual void  v83(); // _ZN8S40C7_nt3v83Ev
  virtual void  v84(); // _ZN8S40C7_nt3v84Ev
  virtual void  v85(); // _ZN8S40C7_nt3v85Ev
  virtual void  v86(); // _ZN8S40C7_nt3v86Ev
  virtual void  v87(); // _ZN8S40C7_nt3v87Ev
  virtual void  v88(); // _ZN8S40C7_nt3v88Ev
  virtual void  v89(); // _ZN8S40C7_nt3v89Ev
  virtual void  v90(); // _ZN8S40C7_nt3v90Ev
  virtual void  v91(); // _ZN8S40C7_nt3v91Ev
  virtual void  v92(); // _ZN8S40C7_nt3v92Ev
  virtual void  v93(); // _ZN8S40C7_nt3v93Ev
  virtual void  v94(); // _ZN8S40C7_nt3v94Ev
  virtual void  v95(); // _ZN8S40C7_nt3v95Ev
  virtual void  v96(); // _ZN8S40C7_nt3v96Ev
  virtual void  v97(); // _ZN8S40C7_nt3v97Ev
  virtual void  v98(); // _ZN8S40C7_nt3v98Ev
  virtual void  v99(); // _ZN8S40C7_nt3v99Ev
  virtual void  v100(); // _ZN8S40C7_nt4v100Ev
  virtual void  v101(); // _ZN8S40C7_nt4v101Ev
  virtual void  v102(); // _ZN8S40C7_nt4v102Ev
  virtual void  v103(); // _ZN8S40C7_nt4v103Ev
  virtual void  v104(); // _ZN8S40C7_nt4v104Ev
  virtual void  v105(); // _ZN8S40C7_nt4v105Ev
  virtual void  v106(); // _ZN8S40C7_nt4v106Ev
  virtual void  v107(); // _ZN8S40C7_nt4v107Ev
  virtual void  v108(); // _ZN8S40C7_nt4v108Ev
  virtual void  v109(); // _ZN8S40C7_nt4v109Ev
  virtual void  v110(); // _ZN8S40C7_nt4v110Ev
  virtual void  v111(); // _ZN8S40C7_nt4v111Ev
  virtual void  v112(); // _ZN8S40C7_nt4v112Ev
  virtual void  v113(); // _ZN8S40C7_nt4v113Ev
  virtual void  v114(); // _ZN8S40C7_nt4v114Ev
  virtual void  v115(); // _ZN8S40C7_nt4v115Ev
  virtual void  v116(); // _ZN8S40C7_nt4v116Ev
  virtual void  v117(); // _ZN8S40C7_nt4v117Ev
  virtual void  v118(); // _ZN8S40C7_nt4v118Ev
  virtual void  v119(); // _ZN8S40C7_nt4v119Ev
  virtual void  v120(); // _ZN8S40C7_nt4v120Ev
  virtual void  v121(); // _ZN8S40C7_nt4v121Ev
  virtual void  v122(); // _ZN8S40C7_nt4v122Ev
  virtual void  v123(); // _ZN8S40C7_nt4v123Ev
  virtual void  v124(); // _ZN8S40C7_nt4v124Ev
  virtual void  v125(); // _ZN8S40C7_nt4v125Ev
  virtual void  v126(); // _ZN8S40C7_nt4v126Ev
  virtual void  v127(); // _ZN8S40C7_nt4v127Ev
  virtual void  v128(); // _ZN8S40C7_nt4v128Ev
  virtual void  v129(); // _ZN8S40C7_nt4v129Ev
  virtual void  v130(); // _ZN8S40C7_nt4v130Ev
  virtual void  v131(); // _ZN8S40C7_nt4v131Ev
  virtual void  v132(); // _ZN8S40C7_nt4v132Ev
  virtual void  v133(); // _ZN8S40C7_nt4v133Ev
  virtual void  v134(); // _ZN8S40C7_nt4v134Ev
  virtual void  v135(); // _ZN8S40C7_nt4v135Ev
  virtual void  v136(); // _ZN8S40C7_nt4v136Ev
  virtual void  v137(); // _ZN8S40C7_nt4v137Ev
  virtual void  v138(); // _ZN8S40C7_nt4v138Ev
  virtual void  v139(); // _ZN8S40C7_nt4v139Ev
  virtual void  v140(); // _ZN8S40C7_nt4v140Ev
  virtual void  v141(); // _ZN8S40C7_nt4v141Ev
  virtual void  v142(); // _ZN8S40C7_nt4v142Ev
  virtual void  v143(); // _ZN8S40C7_nt4v143Ev
  virtual void  v144(); // _ZN8S40C7_nt4v144Ev
  virtual void  v145(); // _ZN8S40C7_nt4v145Ev
  virtual void  v146(); // _ZN8S40C7_nt4v146Ev
  virtual void  v147(); // _ZN8S40C7_nt4v147Ev
  virtual void  v148(); // _ZN8S40C7_nt4v148Ev
  virtual void  v149(); // _ZN8S40C7_nt4v149Ev
  virtual void  v150(); // _ZN8S40C7_nt4v150Ev
  virtual void  v151(); // _ZN8S40C7_nt4v151Ev
  virtual void  v152(); // _ZN8S40C7_nt4v152Ev
  virtual void  v153(); // _ZN8S40C7_nt4v153Ev
  virtual void  v154(); // _ZN8S40C7_nt4v154Ev
  virtual void  v155(); // _ZN8S40C7_nt4v155Ev
  virtual void  v156(); // _ZN8S40C7_nt4v156Ev
  virtual void  v157(); // _ZN8S40C7_nt4v157Ev
  virtual void  v158(); // _ZN8S40C7_nt4v158Ev
  virtual void  v159(); // _ZN8S40C7_nt4v159Ev
  virtual void  v160(); // _ZN8S40C7_nt4v160Ev
  virtual void  v161(); // _ZN8S40C7_nt4v161Ev
  virtual void  v162(); // _ZN8S40C7_nt4v162Ev
  virtual void  v163(); // _ZN8S40C7_nt4v163Ev
  virtual void  v164(); // _ZN8S40C7_nt4v164Ev
  virtual void  v165(); // _ZN8S40C7_nt4v165Ev
  virtual void  v166(); // _ZN8S40C7_nt4v166Ev
  virtual void  v167(); // _ZN8S40C7_nt4v167Ev
  virtual void  v168(); // _ZN8S40C7_nt4v168Ev
  virtual void  v169(); // _ZN8S40C7_nt4v169Ev
  virtual void  v170(); // _ZN8S40C7_nt4v170Ev
  virtual void  v171(); // _ZN8S40C7_nt4v171Ev
  virtual void  v172(); // _ZN8S40C7_nt4v172Ev
  virtual void  v173(); // _ZN8S40C7_nt4v173Ev
  virtual void  v174(); // _ZN8S40C7_nt4v174Ev
  virtual void  v175(); // _ZN8S40C7_nt4v175Ev
  virtual void  v176(); // _ZN8S40C7_nt4v176Ev
  virtual void  v177(); // _ZN8S40C7_nt4v177Ev
  virtual void  v178(); // _ZN8S40C7_nt4v178Ev
  virtual void  v179(); // _ZN8S40C7_nt4v179Ev
  virtual void  v180(); // _ZN8S40C7_nt4v180Ev
  virtual void  v181(); // _ZN8S40C7_nt4v181Ev
  virtual void  v182(); // _ZN8S40C7_nt4v182Ev
  virtual void  v183(); // _ZN8S40C7_nt4v183Ev
  virtual void  v184(); // _ZN8S40C7_nt4v184Ev
  virtual void  v185(); // _ZN8S40C7_nt4v185Ev
  virtual void  v186(); // _ZN8S40C7_nt4v186Ev
  virtual void  v187(); // _ZN8S40C7_nt4v187Ev
  virtual void  v188(); // _ZN8S40C7_nt4v188Ev
  virtual void  v189(); // _ZN8S40C7_nt4v189Ev
  virtual void  v190(); // _ZN8S40C7_nt4v190Ev
  virtual void  v191(); // _ZN8S40C7_nt4v191Ev
  virtual void  v192(); // _ZN8S40C7_nt4v192Ev
  virtual void  v193(); // _ZN8S40C7_nt4v193Ev
  virtual void  v194(); // _ZN8S40C7_nt4v194Ev
  virtual void  v195(); // _ZN8S40C7_nt4v195Ev
  virtual void  v196(); // _ZN8S40C7_nt4v196Ev
  virtual void  v197(); // _ZN8S40C7_nt4v197Ev
  virtual void  v198(); // _ZN8S40C7_nt4v198Ev
  virtual void  v199(); // _ZN8S40C7_nt4v199Ev
  virtual void  v200(); // _ZN8S40C7_nt4v200Ev
  virtual void  v201(); // _ZN8S40C7_nt4v201Ev
  virtual void  v202(); // _ZN8S40C7_nt4v202Ev
  virtual void  v203(); // _ZN8S40C7_nt4v203Ev
  virtual void  v204(); // _ZN8S40C7_nt4v204Ev
  virtual void  v205(); // _ZN8S40C7_nt4v205Ev
  virtual void  v206(); // _ZN8S40C7_nt4v206Ev
  virtual void  v207(); // _ZN8S40C7_nt4v207Ev
  virtual void  v208(); // _ZN8S40C7_nt4v208Ev
  virtual void  v209(); // _ZN8S40C7_nt4v209Ev
  virtual void  v210(); // _ZN8S40C7_nt4v210Ev
  virtual void  v211(); // _ZN8S40C7_nt4v211Ev
  virtual void  v212(); // _ZN8S40C7_nt4v212Ev
  virtual void  v213(); // _ZN8S40C7_nt4v213Ev
  virtual void  v214(); // _ZN8S40C7_nt4v214Ev
  S40C7_nt(); // tgen
};
//SIG(-1 S40C7_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}


 S40C7_nt ::~S40C7_nt(){ note_dtor("S40C7_nt", this);}
void  S40C7_nt ::v72(){vfunc_called(this, "_ZN8S40C7_nt3v72Ev");}
void  S40C7_nt ::v73(){vfunc_called(this, "_ZN8S40C7_nt3v73Ev");}
void  S40C7_nt ::v74(){vfunc_called(this, "_ZN8S40C7_nt3v74Ev");}
void  S40C7_nt ::v75(){vfunc_called(this, "_ZN8S40C7_nt3v75Ev");}
void  S40C7_nt ::v76(){vfunc_called(this, "_ZN8S40C7_nt3v76Ev");}
void  S40C7_nt ::v77(){vfunc_called(this, "_ZN8S40C7_nt3v77Ev");}
void  S40C7_nt ::v78(){vfunc_called(this, "_ZN8S40C7_nt3v78Ev");}
void  S40C7_nt ::v79(){vfunc_called(this, "_ZN8S40C7_nt3v79Ev");}
void  S40C7_nt ::v80(){vfunc_called(this, "_ZN8S40C7_nt3v80Ev");}
void  S40C7_nt ::v81(){vfunc_called(this, "_ZN8S40C7_nt3v81Ev");}
void  S40C7_nt ::v82(){vfunc_called(this, "_ZN8S40C7_nt3v82Ev");}
void  S40C7_nt ::v83(){vfunc_called(this, "_ZN8S40C7_nt3v83Ev");}
void  S40C7_nt ::v84(){vfunc_called(this, "_ZN8S40C7_nt3v84Ev");}
void  S40C7_nt ::v85(){vfunc_called(this, "_ZN8S40C7_nt3v85Ev");}
void  S40C7_nt ::v86(){vfunc_called(this, "_ZN8S40C7_nt3v86Ev");}
void  S40C7_nt ::v87(){vfunc_called(this, "_ZN8S40C7_nt3v87Ev");}
void  S40C7_nt ::v88(){vfunc_called(this, "_ZN8S40C7_nt3v88Ev");}
void  S40C7_nt ::v89(){vfunc_called(this, "_ZN8S40C7_nt3v89Ev");}
void  S40C7_nt ::v90(){vfunc_called(this, "_ZN8S40C7_nt3v90Ev");}
void  S40C7_nt ::v91(){vfunc_called(this, "_ZN8S40C7_nt3v91Ev");}
void  S40C7_nt ::v92(){vfunc_called(this, "_ZN8S40C7_nt3v92Ev");}
void  S40C7_nt ::v93(){vfunc_called(this, "_ZN8S40C7_nt3v93Ev");}
void  S40C7_nt ::v94(){vfunc_called(this, "_ZN8S40C7_nt3v94Ev");}
void  S40C7_nt ::v95(){vfunc_called(this, "_ZN8S40C7_nt3v95Ev");}
void  S40C7_nt ::v96(){vfunc_called(this, "_ZN8S40C7_nt3v96Ev");}
void  S40C7_nt ::v97(){vfunc_called(this, "_ZN8S40C7_nt3v97Ev");}
void  S40C7_nt ::v98(){vfunc_called(this, "_ZN8S40C7_nt3v98Ev");}
void  S40C7_nt ::v99(){vfunc_called(this, "_ZN8S40C7_nt3v99Ev");}
void  S40C7_nt ::v100(){vfunc_called(this, "_ZN8S40C7_nt4v100Ev");}
void  S40C7_nt ::v101(){vfunc_called(this, "_ZN8S40C7_nt4v101Ev");}
void  S40C7_nt ::v102(){vfunc_called(this, "_ZN8S40C7_nt4v102Ev");}
void  S40C7_nt ::v103(){vfunc_called(this, "_ZN8S40C7_nt4v103Ev");}
void  S40C7_nt ::v104(){vfunc_called(this, "_ZN8S40C7_nt4v104Ev");}
void  S40C7_nt ::v105(){vfunc_called(this, "_ZN8S40C7_nt4v105Ev");}
void  S40C7_nt ::v106(){vfunc_called(this, "_ZN8S40C7_nt4v106Ev");}
void  S40C7_nt ::v107(){vfunc_called(this, "_ZN8S40C7_nt4v107Ev");}
void  S40C7_nt ::v108(){vfunc_called(this, "_ZN8S40C7_nt4v108Ev");}
void  S40C7_nt ::v109(){vfunc_called(this, "_ZN8S40C7_nt4v109Ev");}
void  S40C7_nt ::v110(){vfunc_called(this, "_ZN8S40C7_nt4v110Ev");}
void  S40C7_nt ::v111(){vfunc_called(this, "_ZN8S40C7_nt4v111Ev");}
void  S40C7_nt ::v112(){vfunc_called(this, "_ZN8S40C7_nt4v112Ev");}
void  S40C7_nt ::v113(){vfunc_called(this, "_ZN8S40C7_nt4v113Ev");}
void  S40C7_nt ::v114(){vfunc_called(this, "_ZN8S40C7_nt4v114Ev");}
void  S40C7_nt ::v115(){vfunc_called(this, "_ZN8S40C7_nt4v115Ev");}
void  S40C7_nt ::v116(){vfunc_called(this, "_ZN8S40C7_nt4v116Ev");}
void  S40C7_nt ::v117(){vfunc_called(this, "_ZN8S40C7_nt4v117Ev");}
void  S40C7_nt ::v118(){vfunc_called(this, "_ZN8S40C7_nt4v118Ev");}
void  S40C7_nt ::v119(){vfunc_called(this, "_ZN8S40C7_nt4v119Ev");}
void  S40C7_nt ::v120(){vfunc_called(this, "_ZN8S40C7_nt4v120Ev");}
void  S40C7_nt ::v121(){vfunc_called(this, "_ZN8S40C7_nt4v121Ev");}
void  S40C7_nt ::v122(){vfunc_called(this, "_ZN8S40C7_nt4v122Ev");}
void  S40C7_nt ::v123(){vfunc_called(this, "_ZN8S40C7_nt4v123Ev");}
void  S40C7_nt ::v124(){vfunc_called(this, "_ZN8S40C7_nt4v124Ev");}
void  S40C7_nt ::v125(){vfunc_called(this, "_ZN8S40C7_nt4v125Ev");}
void  S40C7_nt ::v126(){vfunc_called(this, "_ZN8S40C7_nt4v126Ev");}
void  S40C7_nt ::v127(){vfunc_called(this, "_ZN8S40C7_nt4v127Ev");}
void  S40C7_nt ::v128(){vfunc_called(this, "_ZN8S40C7_nt4v128Ev");}
void  S40C7_nt ::v129(){vfunc_called(this, "_ZN8S40C7_nt4v129Ev");}
void  S40C7_nt ::v130(){vfunc_called(this, "_ZN8S40C7_nt4v130Ev");}
void  S40C7_nt ::v131(){vfunc_called(this, "_ZN8S40C7_nt4v131Ev");}
void  S40C7_nt ::v132(){vfunc_called(this, "_ZN8S40C7_nt4v132Ev");}
void  S40C7_nt ::v133(){vfunc_called(this, "_ZN8S40C7_nt4v133Ev");}
void  S40C7_nt ::v134(){vfunc_called(this, "_ZN8S40C7_nt4v134Ev");}
void  S40C7_nt ::v135(){vfunc_called(this, "_ZN8S40C7_nt4v135Ev");}
void  S40C7_nt ::v136(){vfunc_called(this, "_ZN8S40C7_nt4v136Ev");}
void  S40C7_nt ::v137(){vfunc_called(this, "_ZN8S40C7_nt4v137Ev");}
void  S40C7_nt ::v138(){vfunc_called(this, "_ZN8S40C7_nt4v138Ev");}
void  S40C7_nt ::v139(){vfunc_called(this, "_ZN8S40C7_nt4v139Ev");}
void  S40C7_nt ::v140(){vfunc_called(this, "_ZN8S40C7_nt4v140Ev");}
void  S40C7_nt ::v141(){vfunc_called(this, "_ZN8S40C7_nt4v141Ev");}
void  S40C7_nt ::v142(){vfunc_called(this, "_ZN8S40C7_nt4v142Ev");}
void  S40C7_nt ::v143(){vfunc_called(this, "_ZN8S40C7_nt4v143Ev");}
void  S40C7_nt ::v144(){vfunc_called(this, "_ZN8S40C7_nt4v144Ev");}
void  S40C7_nt ::v145(){vfunc_called(this, "_ZN8S40C7_nt4v145Ev");}
void  S40C7_nt ::v146(){vfunc_called(this, "_ZN8S40C7_nt4v146Ev");}
void  S40C7_nt ::v147(){vfunc_called(this, "_ZN8S40C7_nt4v147Ev");}
void  S40C7_nt ::v148(){vfunc_called(this, "_ZN8S40C7_nt4v148Ev");}
void  S40C7_nt ::v149(){vfunc_called(this, "_ZN8S40C7_nt4v149Ev");}
void  S40C7_nt ::v150(){vfunc_called(this, "_ZN8S40C7_nt4v150Ev");}
void  S40C7_nt ::v151(){vfunc_called(this, "_ZN8S40C7_nt4v151Ev");}
void  S40C7_nt ::v152(){vfunc_called(this, "_ZN8S40C7_nt4v152Ev");}
void  S40C7_nt ::v153(){vfunc_called(this, "_ZN8S40C7_nt4v153Ev");}
void  S40C7_nt ::v154(){vfunc_called(this, "_ZN8S40C7_nt4v154Ev");}
void  S40C7_nt ::v155(){vfunc_called(this, "_ZN8S40C7_nt4v155Ev");}
void  S40C7_nt ::v156(){vfunc_called(this, "_ZN8S40C7_nt4v156Ev");}
void  S40C7_nt ::v157(){vfunc_called(this, "_ZN8S40C7_nt4v157Ev");}
void  S40C7_nt ::v158(){vfunc_called(this, "_ZN8S40C7_nt4v158Ev");}
void  S40C7_nt ::v159(){vfunc_called(this, "_ZN8S40C7_nt4v159Ev");}
void  S40C7_nt ::v160(){vfunc_called(this, "_ZN8S40C7_nt4v160Ev");}
void  S40C7_nt ::v161(){vfunc_called(this, "_ZN8S40C7_nt4v161Ev");}
void  S40C7_nt ::v162(){vfunc_called(this, "_ZN8S40C7_nt4v162Ev");}
void  S40C7_nt ::v163(){vfunc_called(this, "_ZN8S40C7_nt4v163Ev");}
void  S40C7_nt ::v164(){vfunc_called(this, "_ZN8S40C7_nt4v164Ev");}
void  S40C7_nt ::v165(){vfunc_called(this, "_ZN8S40C7_nt4v165Ev");}
void  S40C7_nt ::v166(){vfunc_called(this, "_ZN8S40C7_nt4v166Ev");}
void  S40C7_nt ::v167(){vfunc_called(this, "_ZN8S40C7_nt4v167Ev");}
void  S40C7_nt ::v168(){vfunc_called(this, "_ZN8S40C7_nt4v168Ev");}
void  S40C7_nt ::v169(){vfunc_called(this, "_ZN8S40C7_nt4v169Ev");}
void  S40C7_nt ::v170(){vfunc_called(this, "_ZN8S40C7_nt4v170Ev");}
void  S40C7_nt ::v171(){vfunc_called(this, "_ZN8S40C7_nt4v171Ev");}
void  S40C7_nt ::v172(){vfunc_called(this, "_ZN8S40C7_nt4v172Ev");}
void  S40C7_nt ::v173(){vfunc_called(this, "_ZN8S40C7_nt4v173Ev");}
void  S40C7_nt ::v174(){vfunc_called(this, "_ZN8S40C7_nt4v174Ev");}
void  S40C7_nt ::v175(){vfunc_called(this, "_ZN8S40C7_nt4v175Ev");}
void  S40C7_nt ::v176(){vfunc_called(this, "_ZN8S40C7_nt4v176Ev");}
void  S40C7_nt ::v177(){vfunc_called(this, "_ZN8S40C7_nt4v177Ev");}
void  S40C7_nt ::v178(){vfunc_called(this, "_ZN8S40C7_nt4v178Ev");}
void  S40C7_nt ::v179(){vfunc_called(this, "_ZN8S40C7_nt4v179Ev");}
void  S40C7_nt ::v180(){vfunc_called(this, "_ZN8S40C7_nt4v180Ev");}
void  S40C7_nt ::v181(){vfunc_called(this, "_ZN8S40C7_nt4v181Ev");}
void  S40C7_nt ::v182(){vfunc_called(this, "_ZN8S40C7_nt4v182Ev");}
void  S40C7_nt ::v183(){vfunc_called(this, "_ZN8S40C7_nt4v183Ev");}
void  S40C7_nt ::v184(){vfunc_called(this, "_ZN8S40C7_nt4v184Ev");}
void  S40C7_nt ::v185(){vfunc_called(this, "_ZN8S40C7_nt4v185Ev");}
void  S40C7_nt ::v186(){vfunc_called(this, "_ZN8S40C7_nt4v186Ev");}
void  S40C7_nt ::v187(){vfunc_called(this, "_ZN8S40C7_nt4v187Ev");}
void  S40C7_nt ::v188(){vfunc_called(this, "_ZN8S40C7_nt4v188Ev");}
void  S40C7_nt ::v189(){vfunc_called(this, "_ZN8S40C7_nt4v189Ev");}
void  S40C7_nt ::v190(){vfunc_called(this, "_ZN8S40C7_nt4v190Ev");}
void  S40C7_nt ::v191(){vfunc_called(this, "_ZN8S40C7_nt4v191Ev");}
void  S40C7_nt ::v192(){vfunc_called(this, "_ZN8S40C7_nt4v192Ev");}
void  S40C7_nt ::v193(){vfunc_called(this, "_ZN8S40C7_nt4v193Ev");}
void  S40C7_nt ::v194(){vfunc_called(this, "_ZN8S40C7_nt4v194Ev");}
void  S40C7_nt ::v195(){vfunc_called(this, "_ZN8S40C7_nt4v195Ev");}
void  S40C7_nt ::v196(){vfunc_called(this, "_ZN8S40C7_nt4v196Ev");}
void  S40C7_nt ::v197(){vfunc_called(this, "_ZN8S40C7_nt4v197Ev");}
void  S40C7_nt ::v198(){vfunc_called(this, "_ZN8S40C7_nt4v198Ev");}
void  S40C7_nt ::v199(){vfunc_called(this, "_ZN8S40C7_nt4v199Ev");}
void  S40C7_nt ::v200(){vfunc_called(this, "_ZN8S40C7_nt4v200Ev");}
void  S40C7_nt ::v201(){vfunc_called(this, "_ZN8S40C7_nt4v201Ev");}
void  S40C7_nt ::v202(){vfunc_called(this, "_ZN8S40C7_nt4v202Ev");}
void  S40C7_nt ::v203(){vfunc_called(this, "_ZN8S40C7_nt4v203Ev");}
void  S40C7_nt ::v204(){vfunc_called(this, "_ZN8S40C7_nt4v204Ev");}
void  S40C7_nt ::v205(){vfunc_called(this, "_ZN8S40C7_nt4v205Ev");}
void  S40C7_nt ::v206(){vfunc_called(this, "_ZN8S40C7_nt4v206Ev");}
void  S40C7_nt ::v207(){vfunc_called(this, "_ZN8S40C7_nt4v207Ev");}
void  S40C7_nt ::v208(){vfunc_called(this, "_ZN8S40C7_nt4v208Ev");}
void  S40C7_nt ::v209(){vfunc_called(this, "_ZN8S40C7_nt4v209Ev");}
void  S40C7_nt ::v210(){vfunc_called(this, "_ZN8S40C7_nt4v210Ev");}
void  S40C7_nt ::v211(){vfunc_called(this, "_ZN8S40C7_nt4v211Ev");}
void  S40C7_nt ::v212(){vfunc_called(this, "_ZN8S40C7_nt4v212Ev");}
void  S40C7_nt ::v213(){vfunc_called(this, "_ZN8S40C7_nt4v213Ev");}
void  S40C7_nt ::v214(){vfunc_called(this, "_ZN8S40C7_nt4v214Ev");}
S40C7_nt ::S40C7_nt(){ note_ctor("S40C7_nt", this);} // tgen

//skip512 S40C7_nt

#else // __cplusplus

extern void _ZN8S40C7_ntC1Ev();
extern void _ZN8S40C7_ntD1Ev();
Name_Map name_map_S40C7_nt[] = {
  NSPAIR(_ZN8S40C7_ntC1Ev),
  NSPAIR(_ZN8S40C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
static Base_Class bases_S40C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S40C7_nt[];
extern void _ZN8S40C7_ntD1Ev();
extern void _ZN8S40C7_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
static  VTBL_ENTRY vtc_S40C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C7_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
};
extern VTBL_ENTRY _ZTI8S40C7_nt[];
VTBL_ENTRY *P__ZTI8S40C7_nt = _ZTI8S40C7_nt; 
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
Class_Descriptor cd_S40C7_nt = {  "S40C7_nt", // class name
  bases_S40C7_nt, 1,
  &(vtc_S40C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI8S40C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C7_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  S40C28  : S40C12_nt {
};
//SIG(-1 S40C28) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C28()
{
  extern Class_Descriptor cd_S40C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C28, buf);
    S40C28 &lv = *(new (buf) S40C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C28)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C28");
    test_class_info(&lv, &cd_S40C28);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C28(Test_S40C28, "S40C28", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C28 = {  "S40C28", // class name
  bases_S40C28, 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  S40C27  : S40C28 {
};
//SIG(-1 S40C27) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C27()
{
  extern Class_Descriptor cd_S40C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C27, buf);
    S40C27 &lv = *(new (buf) S40C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C27)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C28*), 0, "S40C27");
    check_base_class_offset(lv, (S40C28*), 0, "S40C27");
    test_class_info(&lv, &cd_S40C27);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C27(Test_S40C27, "S40C27", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C28;
static Base_Class bases_S40C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C27 = {  "S40C27", // class name
  bases_S40C27, 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  S40C26_nt  : S40C27 {
};
//SIG(-1 S40C26_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S40C26_nt

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C28;
extern Class_Descriptor cd_S40C27;
static Base_Class bases_S40C26_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S40C6_nt  : S40C7_nt {
  int s40c6f0[3];
  void *s40c6f1[2];
  int s40c6f2;
  void *s40c6f3[2];
  unsigned int s40c6f4:1;
  unsigned int s40c6f5:1;
  unsigned int s40c6f6:1;
  unsigned int s40c6f7:1;
  unsigned int s40c6f8:1;
  unsigned int s40c6f9:1;
  unsigned int s40c6f10:1;
  unsigned int s40c6f11:1;
  unsigned int s40c6f12:1;
  unsigned int s40c6f13:1;
  unsigned int s40c6f14:1;
  unsigned int s40c6f15:1;
  unsigned int s40c6f16:1;
  unsigned int s40c6f17:1;
  unsigned int s40c6f18:1;
  unsigned int s40c6f19:1;
  unsigned int s40c6f20:1;
  unsigned int s40c6f21:1;
  unsigned int s40c6f22:1;
  unsigned int s40c6f23:1;
  unsigned int s40c6f24:1;
  unsigned int s40c6f25:1;
  unsigned int s40c6f26:1;
  unsigned int s40c6f27:1;
  unsigned int s40c6f28:1;
  unsigned int s40c6f29:1;
  unsigned int s40c6f30:1;
  unsigned int s40c6f31:1;
  unsigned int s40c6f32:1;
  unsigned int s40c6f33:1;
  unsigned int s40c6f34:1;
  unsigned int s40c6f35:1;
  unsigned int s40c6f36:1;
  unsigned int s40c6f37:1;
  unsigned int s40c6f38:1;
  unsigned int s40c6f39:1;
  unsigned int s40c6f40:1;
  unsigned int s40c6f41:1;
  unsigned int s40c6f42:1;
  unsigned int s40c6f43:1;
  unsigned int s40c6f44:1;
  unsigned int s40c6f45:1;
  unsigned int s40c6f46:1;
  unsigned int s40c6f47:1;
  unsigned int s40c6f48:1;
  unsigned int s40c6f49:1;
  unsigned int s40c6f50:1;
  unsigned int s40c6f51:1;
  unsigned int s40c6f52:1;
  unsigned int s40c6f53:1;
  int s40c6f54[5];
  char s40c6f55[4];
  int s40c6f56[10];
  void *s40c6f57[2];
  int s40c6f58[4];
  ::S40C18_nt s40c6f59;
  int s40c6f60[19];
  ::S40C18_nt s40c6f61;
  int s40c6f62[2];
  void *s40c6f63;
  int s40c6f64[5];
  ::S40C18_nt s40c6f65;
  ::S40C18_nt s40c6f66;
  int s40c6f67;
  void *s40c6f68;
  int s40c6f69;
  ::S40C18_nt s40c6f70;
  int s40c6f71;
  void *s40c6f72;
  int s40c6f73[3];
  ::S40C26_nt s40c6f74;
  void *s40c6f75[3];
  ::S40C9_nt s40c6f76;
  ::S40C9_nt s40c6f77;
  void *s40c6f78;
  int s40c6f79;
  ::S40C18_nt s40c6f80;
  void *s40c6f81;
  ::S40C18_nt s40c6f82;
  void *s40c6f83[2];
  int s40c6f84[2];
  void *s40c6f85;
  int s40c6f86[2];
  void *s40c6f87;
  int s40c6f88[3];
  void *s40c6f89[3];
  ::S40C18_nt s40c6f90;
  ::S40C18_nt s40c6f91;
  int s40c6f92;
  void *s40c6f93[2];
  int s40c6f94;
  virtual  ~S40C6_nt(); // _ZN8S40C6_ntD1Ev
  virtual void  v215(); // _ZN8S40C6_nt4v215Ev
  virtual void  v216(); // _ZN8S40C6_nt4v216Ev
  virtual void  v217(); // _ZN8S40C6_nt4v217Ev
  virtual void  v218(); // _ZN8S40C6_nt4v218Ev
  virtual void  v219(); // _ZN8S40C6_nt4v219Ev
  virtual void  v220(); // _ZN8S40C6_nt4v220Ev
  virtual void  v221(); // _ZN8S40C6_nt4v221Ev
  virtual void  v222(); // _ZN8S40C6_nt4v222Ev
  virtual void  v223(); // _ZN8S40C6_nt4v223Ev
  virtual void  v224(); // _ZN8S40C6_nt4v224Ev
  virtual void  v225(); // _ZN8S40C6_nt4v225Ev
  virtual void  v226(); // _ZN8S40C6_nt4v226Ev
  virtual void  v227(); // _ZN8S40C6_nt4v227Ev
  virtual void  v228(); // _ZN8S40C6_nt4v228Ev
  virtual void  v229(); // _ZN8S40C6_nt4v229Ev
  virtual void  v230(); // _ZN8S40C6_nt4v230Ev
  virtual void  v231(); // _ZN8S40C6_nt4v231Ev
  virtual void  v232(); // _ZN8S40C6_nt4v232Ev
  virtual void  v233(); // _ZN8S40C6_nt4v233Ev
  virtual void  v234(); // _ZN8S40C6_nt4v234Ev
  virtual void  v235(); // _ZN8S40C6_nt4v235Ev
  virtual void  v236(); // _ZN8S40C6_nt4v236Ev
  virtual void  v237(); // _ZN8S40C6_nt4v237Ev
  virtual void  v238(); // _ZN8S40C6_nt4v238Ev
  virtual void  v239(); // _ZN8S40C6_nt4v239Ev
  virtual void  v240(); // _ZN8S40C6_nt4v240Ev
  virtual void  v241(); // _ZN8S40C6_nt4v241Ev
  virtual void  v242(); // _ZN8S40C6_nt4v242Ev
  virtual void  v243(); // _ZN8S40C6_nt4v243Ev
  virtual void  v244(); // _ZN8S40C6_nt4v244Ev
  virtual void  v245(); // _ZN8S40C6_nt4v245Ev
  virtual void  v246(); // _ZN8S40C6_nt4v246Ev
  virtual void  v247(); // _ZN8S40C6_nt4v247Ev
  virtual void  v248(); // _ZN8S40C6_nt4v248Ev
  virtual void  v249(); // _ZN8S40C6_nt4v249Ev
  virtual void  v250(); // _ZN8S40C6_nt4v250Ev
  virtual void  v251(); // _ZN8S40C6_nt4v251Ev
  virtual void  v252(); // _ZN8S40C6_nt4v252Ev
  virtual void  v253(); // _ZN8S40C6_nt4v253Ev
  virtual void  v254(); // _ZN8S40C6_nt4v254Ev
  virtual void  v255(); // _ZN8S40C6_nt4v255Ev
  virtual void  v256(); // _ZN8S40C6_nt4v256Ev
  virtual void  v257(); // _ZN8S40C6_nt4v257Ev
  virtual void  v258(); // _ZN8S40C6_nt4v258Ev
  virtual void  v259(); // _ZN8S40C6_nt4v259Ev
  virtual void  v260(); // _ZN8S40C6_nt4v260Ev
  virtual void  v261(); // _ZN8S40C6_nt4v261Ev
  virtual void  v262(); // _ZN8S40C6_nt4v262Ev
  virtual void  v263(); // _ZN8S40C6_nt4v263Ev
  virtual void  v264(); // _ZN8S40C6_nt4v264Ev
  virtual void  v265(); // _ZN8S40C6_nt4v265Ev
  virtual void  v266(); // _ZN8S40C6_nt4v266Ev
  virtual void  v267(); // _ZN8S40C6_nt4v267Ev
  virtual void  v268(); // _ZN8S40C6_nt4v268Ev
  virtual void  v269(); // _ZN8S40C6_nt4v269Ev
  virtual void  v270(); // _ZN8S40C6_nt4v270Ev
  virtual void  v271(); // _ZN8S40C6_nt4v271Ev
  virtual void  v272(); // _ZN8S40C6_nt4v272Ev
  virtual void  v273(); // _ZN8S40C6_nt4v273Ev
  virtual void  v274(); // _ZN8S40C6_nt4v274Ev
  virtual void  v275(); // _ZN8S40C6_nt4v275Ev
  virtual void  v276(); // _ZN8S40C6_nt4v276Ev
  virtual void  v277(); // _ZN8S40C6_nt4v277Ev
  virtual void  v278(); // _ZN8S40C6_nt4v278Ev
  virtual void  v279(); // _ZN8S40C6_nt4v279Ev
  virtual void  v280(); // _ZN8S40C6_nt4v280Ev
  virtual void  v281(); // _ZN8S40C6_nt4v281Ev
  virtual void  v282(); // _ZN8S40C6_nt4v282Ev
  virtual void  v283(); // _ZN8S40C6_nt4v283Ev
  virtual void  v284(); // _ZN8S40C6_nt4v284Ev
  virtual void  v285(); // _ZN8S40C6_nt4v285Ev
  virtual void  v286(); // _ZN8S40C6_nt4v286Ev
  virtual void  v287(); // _ZN8S40C6_nt4v287Ev
  virtual void  v288(); // _ZN8S40C6_nt4v288Ev
  virtual void  v289(); // _ZN8S40C6_nt4v289Ev
  virtual void  v290(); // _ZN8S40C6_nt4v290Ev
  virtual void  v291(); // _ZN8S40C6_nt4v291Ev
  virtual void  v292(); // _ZN8S40C6_nt4v292Ev
  virtual void  v293(); // _ZN8S40C6_nt4v293Ev
  virtual void  v294(); // _ZN8S40C6_nt4v294Ev
  virtual void  v295(); // _ZN8S40C6_nt4v295Ev
  virtual void  v296(); // _ZN8S40C6_nt4v296Ev
  virtual void  v297(); // _ZN8S40C6_nt4v297Ev
  virtual void  v298(); // _ZN8S40C6_nt4v298Ev
  virtual void  v299(); // _ZN8S40C6_nt4v299Ev
  virtual void  v300(); // _ZN8S40C6_nt4v300Ev
  virtual void  v301(); // _ZN8S40C6_nt4v301Ev
  virtual void  v302(); // _ZN8S40C6_nt4v302Ev
  virtual void  v303(); // _ZN8S40C6_nt4v303Ev
  virtual void  v304(); // _ZN8S40C6_nt4v304Ev
  virtual void  v305(); // _ZN8S40C6_nt4v305Ev
  virtual void  v306(); // _ZN8S40C6_nt4v306Ev
  virtual void  v307(); // _ZN8S40C6_nt4v307Ev
  virtual void  v308(); // _ZN8S40C6_nt4v308Ev
  virtual void  v309(); // _ZN8S40C6_nt4v309Ev
  virtual void  v310(); // _ZN8S40C6_nt4v310Ev
  virtual void  v311(); // _ZN8S40C6_nt4v311Ev
  virtual void  v312(); // _ZN8S40C6_nt4v312Ev
  S40C6_nt(); // tgen
};
//SIG(-1 S40C6_nt) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 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 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 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC11 Fi[19] FC11 Fi[2] Fp Fi[5] FC11 FC11 Fi Fp Fi FC11 Fi Fp Fi[3] FC14{ BC15{ BC16{ BC7}}} Fp[3] FC4 FC4 Fp Fi FC11 Fp FC11 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC11 FC11 Fi Fp[2] Fi}


 S40C6_nt ::~S40C6_nt(){ note_dtor("S40C6_nt", this);}
void  S40C6_nt ::v215(){vfunc_called(this, "_ZN8S40C6_nt4v215Ev");}
void  S40C6_nt ::v216(){vfunc_called(this, "_ZN8S40C6_nt4v216Ev");}
void  S40C6_nt ::v217(){vfunc_called(this, "_ZN8S40C6_nt4v217Ev");}
void  S40C6_nt ::v218(){vfunc_called(this, "_ZN8S40C6_nt4v218Ev");}
void  S40C6_nt ::v219(){vfunc_called(this, "_ZN8S40C6_nt4v219Ev");}
void  S40C6_nt ::v220(){vfunc_called(this, "_ZN8S40C6_nt4v220Ev");}
void  S40C6_nt ::v221(){vfunc_called(this, "_ZN8S40C6_nt4v221Ev");}
void  S40C6_nt ::v222(){vfunc_called(this, "_ZN8S40C6_nt4v222Ev");}
void  S40C6_nt ::v223(){vfunc_called(this, "_ZN8S40C6_nt4v223Ev");}
void  S40C6_nt ::v224(){vfunc_called(this, "_ZN8S40C6_nt4v224Ev");}
void  S40C6_nt ::v225(){vfunc_called(this, "_ZN8S40C6_nt4v225Ev");}
void  S40C6_nt ::v226(){vfunc_called(this, "_ZN8S40C6_nt4v226Ev");}
void  S40C6_nt ::v227(){vfunc_called(this, "_ZN8S40C6_nt4v227Ev");}
void  S40C6_nt ::v228(){vfunc_called(this, "_ZN8S40C6_nt4v228Ev");}
void  S40C6_nt ::v229(){vfunc_called(this, "_ZN8S40C6_nt4v229Ev");}
void  S40C6_nt ::v230(){vfunc_called(this, "_ZN8S40C6_nt4v230Ev");}
void  S40C6_nt ::v231(){vfunc_called(this, "_ZN8S40C6_nt4v231Ev");}
void  S40C6_nt ::v232(){vfunc_called(this, "_ZN8S40C6_nt4v232Ev");}
void  S40C6_nt ::v233(){vfunc_called(this, "_ZN8S40C6_nt4v233Ev");}
void  S40C6_nt ::v234(){vfunc_called(this, "_ZN8S40C6_nt4v234Ev");}
void  S40C6_nt ::v235(){vfunc_called(this, "_ZN8S40C6_nt4v235Ev");}
void  S40C6_nt ::v236(){vfunc_called(this, "_ZN8S40C6_nt4v236Ev");}
void  S40C6_nt ::v237(){vfunc_called(this, "_ZN8S40C6_nt4v237Ev");}
void  S40C6_nt ::v238(){vfunc_called(this, "_ZN8S40C6_nt4v238Ev");}
void  S40C6_nt ::v239(){vfunc_called(this, "_ZN8S40C6_nt4v239Ev");}
void  S40C6_nt ::v240(){vfunc_called(this, "_ZN8S40C6_nt4v240Ev");}
void  S40C6_nt ::v241(){vfunc_called(this, "_ZN8S40C6_nt4v241Ev");}
void  S40C6_nt ::v242(){vfunc_called(this, "_ZN8S40C6_nt4v242Ev");}
void  S40C6_nt ::v243(){vfunc_called(this, "_ZN8S40C6_nt4v243Ev");}
void  S40C6_nt ::v244(){vfunc_called(this, "_ZN8S40C6_nt4v244Ev");}
void  S40C6_nt ::v245(){vfunc_called(this, "_ZN8S40C6_nt4v245Ev");}
void  S40C6_nt ::v246(){vfunc_called(this, "_ZN8S40C6_nt4v246Ev");}
void  S40C6_nt ::v247(){vfunc_called(this, "_ZN8S40C6_nt4v247Ev");}
void  S40C6_nt ::v248(){vfunc_called(this, "_ZN8S40C6_nt4v248Ev");}
void  S40C6_nt ::v249(){vfunc_called(this, "_ZN8S40C6_nt4v249Ev");}
void  S40C6_nt ::v250(){vfunc_called(this, "_ZN8S40C6_nt4v250Ev");}
void  S40C6_nt ::v251(){vfunc_called(this, "_ZN8S40C6_nt4v251Ev");}
void  S40C6_nt ::v252(){vfunc_called(this, "_ZN8S40C6_nt4v252Ev");}
void  S40C6_nt ::v253(){vfunc_called(this, "_ZN8S40C6_nt4v253Ev");}
void  S40C6_nt ::v254(){vfunc_called(this, "_ZN8S40C6_nt4v254Ev");}
void  S40C6_nt ::v255(){vfunc_called(this, "_ZN8S40C6_nt4v255Ev");}
void  S40C6_nt ::v256(){vfunc_called(this, "_ZN8S40C6_nt4v256Ev");}
void  S40C6_nt ::v257(){vfunc_called(this, "_ZN8S40C6_nt4v257Ev");}
void  S40C6_nt ::v258(){vfunc_called(this, "_ZN8S40C6_nt4v258Ev");}
void  S40C6_nt ::v259(){vfunc_called(this, "_ZN8S40C6_nt4v259Ev");}
void  S40C6_nt ::v260(){vfunc_called(this, "_ZN8S40C6_nt4v260Ev");}
void  S40C6_nt ::v261(){vfunc_called(this, "_ZN8S40C6_nt4v261Ev");}
void  S40C6_nt ::v262(){vfunc_called(this, "_ZN8S40C6_nt4v262Ev");}
void  S40C6_nt ::v263(){vfunc_called(this, "_ZN8S40C6_nt4v263Ev");}
void  S40C6_nt ::v264(){vfunc_called(this, "_ZN8S40C6_nt4v264Ev");}
void  S40C6_nt ::v265(){vfunc_called(this, "_ZN8S40C6_nt4v265Ev");}
void  S40C6_nt ::v266(){vfunc_called(this, "_ZN8S40C6_nt4v266Ev");}
void  S40C6_nt ::v267(){vfunc_called(this, "_ZN8S40C6_nt4v267Ev");}
void  S40C6_nt ::v268(){vfunc_called(this, "_ZN8S40C6_nt4v268Ev");}
void  S40C6_nt ::v269(){vfunc_called(this, "_ZN8S40C6_nt4v269Ev");}
void  S40C6_nt ::v270(){vfunc_called(this, "_ZN8S40C6_nt4v270Ev");}
void  S40C6_nt ::v271(){vfunc_called(this, "_ZN8S40C6_nt4v271Ev");}
void  S40C6_nt ::v272(){vfunc_called(this, "_ZN8S40C6_nt4v272Ev");}
void  S40C6_nt ::v273(){vfunc_called(this, "_ZN8S40C6_nt4v273Ev");}
void  S40C6_nt ::v274(){vfunc_called(this, "_ZN8S40C6_nt4v274Ev");}
void  S40C6_nt ::v275(){vfunc_called(this, "_ZN8S40C6_nt4v275Ev");}
void  S40C6_nt ::v276(){vfunc_called(this, "_ZN8S40C6_nt4v276Ev");}
void  S40C6_nt ::v277(){vfunc_called(this, "_ZN8S40C6_nt4v277Ev");}
void  S40C6_nt ::v278(){vfunc_called(this, "_ZN8S40C6_nt4v278Ev");}
void  S40C6_nt ::v279(){vfunc_called(this, "_ZN8S40C6_nt4v279Ev");}
void  S40C6_nt ::v280(){vfunc_called(this, "_ZN8S40C6_nt4v280Ev");}
void  S40C6_nt ::v281(){vfunc_called(this, "_ZN8S40C6_nt4v281Ev");}
void  S40C6_nt ::v282(){vfunc_called(this, "_ZN8S40C6_nt4v282Ev");}
void  S40C6_nt ::v283(){vfunc_called(this, "_ZN8S40C6_nt4v283Ev");}
void  S40C6_nt ::v284(){vfunc_called(this, "_ZN8S40C6_nt4v284Ev");}
void  S40C6_nt ::v285(){vfunc_called(this, "_ZN8S40C6_nt4v285Ev");}
void  S40C6_nt ::v286(){vfunc_called(this, "_ZN8S40C6_nt4v286Ev");}
void  S40C6_nt ::v287(){vfunc_called(this, "_ZN8S40C6_nt4v287Ev");}
void  S40C6_nt ::v288(){vfunc_called(this, "_ZN8S40C6_nt4v288Ev");}
void  S40C6_nt ::v289(){vfunc_called(this, "_ZN8S40C6_nt4v289Ev");}
void  S40C6_nt ::v290(){vfunc_called(this, "_ZN8S40C6_nt4v290Ev");}
void  S40C6_nt ::v291(){vfunc_called(this, "_ZN8S40C6_nt4v291Ev");}
void  S40C6_nt ::v292(){vfunc_called(this, "_ZN8S40C6_nt4v292Ev");}
void  S40C6_nt ::v293(){vfunc_called(this, "_ZN8S40C6_nt4v293Ev");}
void  S40C6_nt ::v294(){vfunc_called(this, "_ZN8S40C6_nt4v294Ev");}
void  S40C6_nt ::v295(){vfunc_called(this, "_ZN8S40C6_nt4v295Ev");}
void  S40C6_nt ::v296(){vfunc_called(this, "_ZN8S40C6_nt4v296Ev");}
void  S40C6_nt ::v297(){vfunc_called(this, "_ZN8S40C6_nt4v297Ev");}
void  S40C6_nt ::v298(){vfunc_called(this, "_ZN8S40C6_nt4v298Ev");}
void  S40C6_nt ::v299(){vfunc_called(this, "_ZN8S40C6_nt4v299Ev");}
void  S40C6_nt ::v300(){vfunc_called(this, "_ZN8S40C6_nt4v300Ev");}
void  S40C6_nt ::v301(){vfunc_called(this, "_ZN8S40C6_nt4v301Ev");}
void  S40C6_nt ::v302(){vfunc_called(this, "_ZN8S40C6_nt4v302Ev");}
void  S40C6_nt ::v303(){vfunc_called(this, "_ZN8S40C6_nt4v303Ev");}
void  S40C6_nt ::v304(){vfunc_called(this, "_ZN8S40C6_nt4v304Ev");}
void  S40C6_nt ::v305(){vfunc_called(this, "_ZN8S40C6_nt4v305Ev");}
void  S40C6_nt ::v306(){vfunc_called(this, "_ZN8S40C6_nt4v306Ev");}
void  S40C6_nt ::v307(){vfunc_called(this, "_ZN8S40C6_nt4v307Ev");}
void  S40C6_nt ::v308(){vfunc_called(this, "_ZN8S40C6_nt4v308Ev");}
void  S40C6_nt ::v309(){vfunc_called(this, "_ZN8S40C6_nt4v309Ev");}
void  S40C6_nt ::v310(){vfunc_called(this, "_ZN8S40C6_nt4v310Ev");}
void  S40C6_nt ::v311(){vfunc_called(this, "_ZN8S40C6_nt4v311Ev");}
void  S40C6_nt ::v312(){vfunc_called(this, "_ZN8S40C6_nt4v312Ev");}
S40C6_nt ::S40C6_nt(){ note_ctor("S40C6_nt", this);} // tgen

//skip512 S40C6_nt

#else // __cplusplus

extern void _ZN8S40C6_ntC1Ev();
extern void _ZN8S40C6_ntD1Ev();
Name_Map name_map_S40C6_nt[] = {
  NSPAIR(_ZN8S40C6_ntC1Ev),
  NSPAIR(_ZN8S40C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
static Base_Class bases_S40C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S40C6_nt[];
extern void _ZN8S40C6_ntD1Ev();
extern void _ZN8S40C6_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
static  VTBL_ENTRY vtc_S40C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
};
extern VTBL_ENTRY _ZTI8S40C6_nt[];
VTBL_ENTRY *P__ZTI8S40C6_nt = _ZTI8S40C6_nt; 
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
Class_Descriptor cd_S40C6_nt = {  "S40C6_nt", // class name
  bases_S40C6_nt, 2,
  &(vtc_S40C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1200,936), // object size
  NSPAIRA(_ZTI8S40C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C6_nt),309, //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  S40C30  : S40C12_nt {
};
//SIG(-1 S40C30) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C30()
{
  extern Class_Descriptor cd_S40C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C30, buf);
    S40C30 &lv = *(new (buf) S40C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C30)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C30");
    test_class_info(&lv, &cd_S40C30);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C30(Test_S40C30, "S40C30", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C30 = {  "S40C30", // class name
  bases_S40C30, 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  S40C29  : S40C30 {
};
//SIG(-1 S40C29) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C29()
{
  extern Class_Descriptor cd_S40C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C29, buf);
    S40C29 &lv = *(new (buf) S40C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C29)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C30*), 0, "S40C29");
    check_base_class_offset(lv, (S40C30*), 0, "S40C29");
    test_class_info(&lv, &cd_S40C29);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C29(Test_S40C29, "S40C29", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C30;
static Base_Class bases_S40C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C30,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C29 = {  "S40C29", // class name
  bases_S40C29, 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  S40C5_nt  : S40C6_nt {
  void *s40c5f0;
  unsigned int s40c5f1:1;
  unsigned int s40c5f2:1;
  unsigned int s40c5f3:1;
  unsigned int s40c5f4:1;
  unsigned int s40c5f5:1;
  unsigned int s40c5f6:1;
  unsigned int s40c5f7:1;
  unsigned int s40c5f8:1;
  unsigned int s40c5f9:1;
  unsigned int s40c5f10:1;
  unsigned int s40c5f11:1;
  unsigned int s40c5f12:1;
  ::S40C29 s40c5f13;
  int s40c5f14;
  ::S40C18_nt s40c5f15;
  int s40c5f16[3];
  ::S40C18_nt s40c5f17;
  int s40c5f18[2];
  void *s40c5f19;
  int s40c5f20[2];
  char s40c5f21;
  int s40c5f22[8];
  virtual  ~S40C5_nt(); // _ZN8S40C5_ntD1Ev
  virtual void  v313(); // _ZN8S40C5_nt4v313Ev
  virtual void  v314(); // _ZN8S40C5_nt4v314Ev
  virtual void  v315(); // _ZN8S40C5_nt4v315Ev
  virtual void  v316(); // _ZN8S40C5_nt4v316Ev
  virtual void  v317(); // _ZN8S40C5_nt4v317Ev
  virtual void  v318(); // _ZN8S40C5_nt4v318Ev
  virtual void  v319(); // _ZN8S40C5_nt4v319Ev
  virtual void  v320(); // _ZN8S40C5_nt4v320Ev
  virtual void  v321(); // _ZN8S40C5_nt4v321Ev
  virtual void  v322(); // _ZN8S40C5_nt4v322Ev
  virtual void  v323(); // _ZN8S40C5_nt4v323Ev
  virtual void  v324(); // _ZN8S40C5_nt4v324Ev
  virtual void  v325(); // _ZN8S40C5_nt4v325Ev
  virtual void  v326(); // _ZN8S40C5_nt4v326Ev
  virtual void  v327(); // _ZN8S40C5_nt4v327Ev
  virtual void  v328(); // _ZN8S40C5_nt4v328Ev
  virtual void  v329(); // _ZN8S40C5_nt4v329Ev
  virtual void  v330(); // _ZN8S40C5_nt4v330Ev
  virtual void  v331(); // _ZN8S40C5_nt4v331Ev
  virtual void  v332(); // _ZN8S40C5_nt4v332Ev
  virtual void  v333(); // _ZN8S40C5_nt4v333Ev
  virtual void  v334(); // _ZN8S40C5_nt4v334Ev
  S40C5_nt(); // tgen
};
//SIG(-1 S40C5_nt) C1{ BC2{ BC3{ BC4{ 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 FC5{ m Fi[2]} Fp[2]} vd 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 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC6 FC9{ m Fi} Fi Fc[4] Fp[2] FC6 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] FC5 FC5 FC5 FC10{ BC11{ BC8}} FC10 Fi Fp[2] FC12{ m Fi[3]} FC12 FC12 FC12 Fp FC5 FC10 FC12 FC12 Fi FC12 FC12 Fp Fi Fc FC12 FC12 Fp Fi Fp FC10 FC13{ BC14{ BC8}} FC13} vd v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC12 Fi[19] FC12 Fi[2] Fp Fi[5] FC12 FC12 Fi Fp Fi FC12 Fi Fp Fi[3] FC15{ BC16{ BC17{ BC8}}} Fp[3] FC5 FC5 Fp Fi FC12 Fp FC12 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC12 FC12 Fi Fp[2] Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC18{ BC19{ BC8}} Fi FC12 Fi[3] FC12 Fi[2] Fp Fi[2] Fc Fi[8]}


 S40C5_nt ::~S40C5_nt(){ note_dtor("S40C5_nt", this);}
void  S40C5_nt ::v313(){vfunc_called(this, "_ZN8S40C5_nt4v313Ev");}
void  S40C5_nt ::v314(){vfunc_called(this, "_ZN8S40C5_nt4v314Ev");}
void  S40C5_nt ::v315(){vfunc_called(this, "_ZN8S40C5_nt4v315Ev");}
void  S40C5_nt ::v316(){vfunc_called(this, "_ZN8S40C5_nt4v316Ev");}
void  S40C5_nt ::v317(){vfunc_called(this, "_ZN8S40C5_nt4v317Ev");}
void  S40C5_nt ::v318(){vfunc_called(this, "_ZN8S40C5_nt4v318Ev");}
void  S40C5_nt ::v319(){vfunc_called(this, "_ZN8S40C5_nt4v319Ev");}
void  S40C5_nt ::v320(){vfunc_called(this, "_ZN8S40C5_nt4v320Ev");}
void  S40C5_nt ::v321(){vfunc_called(this, "_ZN8S40C5_nt4v321Ev");}
void  S40C5_nt ::v322(){vfunc_called(this, "_ZN8S40C5_nt4v322Ev");}
void  S40C5_nt ::v323(){vfunc_called(this, "_ZN8S40C5_nt4v323Ev");}
void  S40C5_nt ::v324(){vfunc_called(this, "_ZN8S40C5_nt4v324Ev");}
void  S40C5_nt ::v325(){vfunc_called(this, "_ZN8S40C5_nt4v325Ev");}
void  S40C5_nt ::v326(){vfunc_called(this, "_ZN8S40C5_nt4v326Ev");}
void  S40C5_nt ::v327(){vfunc_called(this, "_ZN8S40C5_nt4v327Ev");}
void  S40C5_nt ::v328(){vfunc_called(this, "_ZN8S40C5_nt4v328Ev");}
void  S40C5_nt ::v329(){vfunc_called(this, "_ZN8S40C5_nt4v329Ev");}
void  S40C5_nt ::v330(){vfunc_called(this, "_ZN8S40C5_nt4v330Ev");}
void  S40C5_nt ::v331(){vfunc_called(this, "_ZN8S40C5_nt4v331Ev");}
void  S40C5_nt ::v332(){vfunc_called(this, "_ZN8S40C5_nt4v332Ev");}
void  S40C5_nt ::v333(){vfunc_called(this, "_ZN8S40C5_nt4v333Ev");}
void  S40C5_nt ::v334(){vfunc_called(this, "_ZN8S40C5_nt4v334Ev");}
S40C5_nt ::S40C5_nt(){ note_ctor("S40C5_nt", this);} // tgen

//skip512 S40C5_nt

#else // __cplusplus

extern void _ZN8S40C5_ntC1Ev();
extern void _ZN8S40C5_ntD1Ev();
Name_Map name_map_S40C5_nt[] = {
  NSPAIR(_ZN8S40C5_ntC1Ev),
  NSPAIR(_ZN8S40C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
static Base_Class bases_S40C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S40C5_nt[];
extern void _ZN8S40C5_ntD1Ev();
extern void _ZN8S40C5_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
static  VTBL_ENTRY vtc_S40C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
};
extern VTBL_ENTRY _ZTI8S40C5_nt[];
VTBL_ENTRY *P__ZTI8S40C5_nt = _ZTI8S40C5_nt; 
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
Class_Descriptor cd_S40C5_nt = {  "S40C5_nt", // class name
  bases_S40C5_nt, 3,
  &(vtc_S40C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1336,1052), // object size
  NSPAIRA(_ZTI8S40C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C5_nt),331, //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  S40C35_nt  {
  int s40c35f0[4];
  void  mf40c35(); // _ZN9S40C35_nt7mf40c35Ev
};
//SIG(-1 S40C35_nt) C1{ m Fi[4]}


void  S40C35_nt ::mf40c35(){}

//skip512 S40C35_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C34_nt  {
  ::S40C18_nt s40c34f0;
  ::S40C35_nt s40c34f1;
  ::S40C18_nt s40c34f2;
  ::S40C18_nt s40c34f3;
  char s40c34f4;
  void  mf40c34(); // _ZN9S40C34_nt7mf40c34Ev
};
//SIG(-1 S40C34_nt) C1{ m FC2{ m Fi[3]} FC3{ m Fi[4]} FC2 FC2 Fc}


void  S40C34_nt ::mf40c34(){}

//skip512 S40C34_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C33_nt  {
  ::S40C34_nt s40c33f0;
  char s40c33f1[4];
  unsigned int s40c33f2:1;
  int s40c33f3;
};
//SIG(-1 S40C33_nt) C1{ FC2{ m FC3{ m Fi[3]} FC4{ m Fi[4]} FC3 FC3 Fc} Fc[4] Fi:1 Fi}



//skip512 S40C33_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C4_nt  : S40C5_nt {
  void *s40c4f0;
  ::S40C29 s40c4f1;
  ::S40C18_nt s40c4f2;
  ::S40C18_nt s40c4f3;
  unsigned int s40c4f4:1;
  unsigned int s40c4f5:1;
  unsigned int s40c4f6:1;
  unsigned int s40c4f7:1;
  unsigned int s40c4f8:1;
  unsigned int s40c4f9:1;
  unsigned int s40c4f10:1;
  unsigned int s40c4f11:1;
  unsigned int s40c4f12:1;
  unsigned int s40c4f13:1;
  unsigned int s40c4f14:1;
  unsigned int s40c4f15:1;
  unsigned int s40c4f16:1;
  int s40c4f17[4];
  void *s40c4f18[2];
  int s40c4f19[8];
  void *s40c4f20[5];
  int s40c4f21[13];
  ::S40C18_nt s40c4f22;
  int s40c4f23[3];
  ::S40C33_nt s40c4f24;
  int s40c4f25[2];
  virtual  ~S40C4_nt(); // _ZN8S40C4_ntD1Ev
  virtual void  v335(); // _ZN8S40C4_nt4v335Ev
  virtual void  v336(); // _ZN8S40C4_nt4v336Ev
  virtual void  v337(); // _ZN8S40C4_nt4v337Ev
  virtual void  v338(); // _ZN8S40C4_nt4v338Ev
  virtual void  v339(); // _ZN8S40C4_nt4v339Ev
  virtual void  v340(); // _ZN8S40C4_nt4v340Ev
  virtual void  v341(); // _ZN8S40C4_nt4v341Ev
  virtual void  v342(); // _ZN8S40C4_nt4v342Ev
  virtual void  v343(); // _ZN8S40C4_nt4v343Ev
  virtual void  v344(); // _ZN8S40C4_nt4v344Ev
  virtual void  v345(); // _ZN8S40C4_nt4v345Ev
  virtual void  v346(); // _ZN8S40C4_nt4v346Ev
  virtual void  v347(); // _ZN8S40C4_nt4v347Ev
  virtual void  v348(); // _ZN8S40C4_nt4v348Ev
  virtual void  v349(); // _ZN8S40C4_nt4v349Ev
  virtual void  v350(); // _ZN8S40C4_nt4v350Ev
  virtual void  v351(); // _ZN8S40C4_nt4v351Ev
  virtual void  v352(); // _ZN8S40C4_nt4v352Ev
  virtual void  v353(); // _ZN8S40C4_nt4v353Ev
  virtual void  v354(); // _ZN8S40C4_nt4v354Ev
  virtual void  v355(); // _ZN8S40C4_nt4v355Ev
  virtual void  v356(); // _ZN8S40C4_nt4v356Ev
  virtual void  v357(); // _ZN8S40C4_nt4v357Ev
  virtual void  v358(); // _ZN8S40C4_nt4v358Ev
  S40C4_nt(); // tgen
};
//SIG(-1 S40C4_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd 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 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 FC10{ m Fi} Fi Fc[4] Fp[2] FC7 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] FC6 FC6 FC6 FC11{ BC12{ BC9}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC13 FC13 FC13 Fp FC6 FC11 FC13 FC13 Fi FC13 FC13 Fp Fi Fc FC13 FC13 Fp Fi Fp FC11 FC14{ BC15{ BC9}} FC14} vd v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC13 Fi[19] FC13 Fi[2] Fp Fi[5] FC13 FC13 Fi Fp Fi FC13 Fi Fp Fi[3] FC16{ BC17{ BC18{ BC9}}} Fp[3] FC6 FC6 Fp Fi FC13 Fp FC13 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC13 FC13 Fi Fp[2] Fi} vd v330 v331 v332 v333 v334 v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ BC20{ BC9}} Fi FC13 Fi[3] FC13 Fi[2] Fp Fi[2] Fc Fi[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC19 FC13 FC13 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[4] Fp[2] Fi[8] Fp[5] Fi[13] FC13 Fi[3] FC21{ FC22{ m FC13 FC23{ m Fi[4]} FC13 FC13 Fc} Fc[4] Fi:1 Fi} Fi[2]}


 S40C4_nt ::~S40C4_nt(){ note_dtor("S40C4_nt", this);}
void  S40C4_nt ::v335(){vfunc_called(this, "_ZN8S40C4_nt4v335Ev");}
void  S40C4_nt ::v336(){vfunc_called(this, "_ZN8S40C4_nt4v336Ev");}
void  S40C4_nt ::v337(){vfunc_called(this, "_ZN8S40C4_nt4v337Ev");}
void  S40C4_nt ::v338(){vfunc_called(this, "_ZN8S40C4_nt4v338Ev");}
void  S40C4_nt ::v339(){vfunc_called(this, "_ZN8S40C4_nt4v339Ev");}
void  S40C4_nt ::v340(){vfunc_called(this, "_ZN8S40C4_nt4v340Ev");}
void  S40C4_nt ::v341(){vfunc_called(this, "_ZN8S40C4_nt4v341Ev");}
void  S40C4_nt ::v342(){vfunc_called(this, "_ZN8S40C4_nt4v342Ev");}
void  S40C4_nt ::v343(){vfunc_called(this, "_ZN8S40C4_nt4v343Ev");}
void  S40C4_nt ::v344(){vfunc_called(this, "_ZN8S40C4_nt4v344Ev");}
void  S40C4_nt ::v345(){vfunc_called(this, "_ZN8S40C4_nt4v345Ev");}
void  S40C4_nt ::v346(){vfunc_called(this, "_ZN8S40C4_nt4v346Ev");}
void  S40C4_nt ::v347(){vfunc_called(this, "_ZN8S40C4_nt4v347Ev");}
void  S40C4_nt ::v348(){vfunc_called(this, "_ZN8S40C4_nt4v348Ev");}
void  S40C4_nt ::v349(){vfunc_called(this, "_ZN8S40C4_nt4v349Ev");}
void  S40C4_nt ::v350(){vfunc_called(this, "_ZN8S40C4_nt4v350Ev");}
void  S40C4_nt ::v351(){vfunc_called(this, "_ZN8S40C4_nt4v351Ev");}
void  S40C4_nt ::v352(){vfunc_called(this, "_ZN8S40C4_nt4v352Ev");}
void  S40C4_nt ::v353(){vfunc_called(this, "_ZN8S40C4_nt4v353Ev");}
void  S40C4_nt ::v354(){vfunc_called(this, "_ZN8S40C4_nt4v354Ev");}
void  S40C4_nt ::v355(){vfunc_called(this, "_ZN8S40C4_nt4v355Ev");}
void  S40C4_nt ::v356(){vfunc_called(this, "_ZN8S40C4_nt4v356Ev");}
void  S40C4_nt ::v357(){vfunc_called(this, "_ZN8S40C4_nt4v357Ev");}
void  S40C4_nt ::v358(){vfunc_called(this, "_ZN8S40C4_nt4v358Ev");}
S40C4_nt ::S40C4_nt(){ note_ctor("S40C4_nt", this);} // tgen

//skip512 S40C4_nt

#else // __cplusplus

extern void _ZN8S40C4_ntC1Ev();
extern void _ZN8S40C4_ntD1Ev();
Name_Map name_map_S40C4_nt[] = {
  NSPAIR(_ZN8S40C4_ntC1Ev),
  NSPAIR(_ZN8S40C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
static Base_Class bases_S40C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S40C4_nt[];
extern void _ZN8S40C4_ntD1Ev();
extern void _ZN8S40C4_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
static  VTBL_ENTRY vtc_S40C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
};
extern VTBL_ENTRY _ZTI8S40C4_nt[];
VTBL_ENTRY *P__ZTI8S40C4_nt = _ZTI8S40C4_nt; 
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
Class_Descriptor cd_S40C4_nt = {  "S40C4_nt", // class name
  bases_S40C4_nt, 4,
  &(vtc_S40C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1648,1324), // object size
  NSPAIRA(_ZTI8S40C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C4_nt),355, //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  S40C3_nt  : S40C4_nt {
  unsigned int s40c3f0:1;
  void *s40c3f1;
  ::S40C35_nt s40c3f2;
  virtual  ~S40C3_nt(); // _ZN8S40C3_ntD1Ev
  virtual void  v359(); // _ZN8S40C3_nt4v359Ev
  virtual void  v360(); // _ZN8S40C3_nt4v360Ev
  virtual void  v361(); // _ZN8S40C3_nt4v361Ev
  S40C3_nt(); // tgen
};
//SIG(-1 S40C3_nt) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69 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 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC8 FC11{ m Fi} Fi Fc[4] Fp[2] FC8 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] FC7 FC7 FC7 FC12{ BC13{ BC10}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC14 FC14 FC14 Fp FC7 FC12 FC14 FC14 Fi FC14 FC14 Fp Fi Fc FC14 FC14 Fp Fi Fp FC12 FC15{ BC16{ BC10}} FC15} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC14 Fi[19] FC14 Fi[2] Fp Fi[5] FC14 FC14 Fi Fp Fi FC14 Fi Fp Fi[3] FC17{ BC18{ BC19{ BC10}}} Fp[3] FC7 FC7 Fp Fi FC14 Fp FC14 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC14 FC14 Fi Fp[2] Fi} vd v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC20{ BC21{ BC10}} Fi FC14 Fi[3] FC14 Fi[2] Fp Fi[2] Fc Fi[8]} vd v331 v332 v333 v334 v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 Fp FC20 FC14 FC14 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[4] Fp[2] Fi[8] Fp[5] Fi[13] FC14 Fi[3] FC22{ FC23{ m FC14 FC24{ m Fi[4]} FC14 FC14 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v1 v2 v3 Fi:1 Fp FC24}


 S40C3_nt ::~S40C3_nt(){ note_dtor("S40C3_nt", this);}
void  S40C3_nt ::v359(){vfunc_called(this, "_ZN8S40C3_nt4v359Ev");}
void  S40C3_nt ::v360(){vfunc_called(this, "_ZN8S40C3_nt4v360Ev");}
void  S40C3_nt ::v361(){vfunc_called(this, "_ZN8S40C3_nt4v361Ev");}
S40C3_nt ::S40C3_nt(){ note_ctor("S40C3_nt", this);} // tgen

//skip512 S40C3_nt

#else // __cplusplus

extern void _ZN8S40C3_ntC1Ev();
extern void _ZN8S40C3_ntD1Ev();
Name_Map name_map_S40C3_nt[] = {
  NSPAIR(_ZN8S40C3_ntC1Ev),
  NSPAIR(_ZN8S40C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
static Base_Class bases_S40C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S40C3_nt[];
extern void _ZN8S40C3_ntD1Ev();
extern void _ZN8S40C3_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
static  VTBL_ENTRY vtc_S40C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
};
extern VTBL_ENTRY _ZTI8S40C3_nt[];
VTBL_ENTRY *P__ZTI8S40C3_nt = _ZTI8S40C3_nt; 
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
Class_Descriptor cd_S40C3_nt = {  "S40C3_nt", // class name
  bases_S40C3_nt, 5,
  &(vtc_S40C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1680,1348), // object size
  NSPAIRA(_ZTI8S40C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C3_nt),358, //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  S40C38  : S40C12_nt {
};
//SIG(-1 S40C38) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C38()
{
  extern Class_Descriptor cd_S40C38;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C38, buf);
    S40C38 &lv = *(new (buf) S40C38());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C38)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C38)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C38");
    test_class_info(&lv, &cd_S40C38);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C38(Test_S40C38, "S40C38", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C38[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C38 = {  "S40C38", // class name
  bases_S40C38, 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  S40C37  : S40C38 {
};
//SIG(-1 S40C37) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C37()
{
  extern Class_Descriptor cd_S40C37;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C37, buf);
    S40C37 &lv = *(new (buf) S40C37());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C37)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C38*), 0, "S40C37");
    check_base_class_offset(lv, (S40C38*), 0, "S40C37");
    test_class_info(&lv, &cd_S40C37);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C37(Test_S40C37, "S40C37", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C38;
static Base_Class bases_S40C37[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C37 = {  "S40C37", // class name
  bases_S40C37, 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  S40C41_nt  {
  void *s40c41f0;
  ::S40C26_nt s40c41f1;
  void  mf40c41(); // _ZN9S40C41_nt7mf40c41Ev
};
//SIG(-1 S40C41_nt) C1{ m Fp FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}}}


void  S40C41_nt ::mf40c41(){}

//skip512 S40C41_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C43  : S40C12_nt {
};
//SIG(-1 S40C43) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C43()
{
  extern Class_Descriptor cd_S40C43;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C43, buf);
    S40C43 &lv = *(new (buf) S40C43());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C43)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C43");
    test_class_info(&lv, &cd_S40C43);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C43(Test_S40C43, "S40C43", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C43[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C43 = {  "S40C43", // class name
  bases_S40C43, 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  S40C42  : S40C43 {
};
//SIG(-1 S40C42) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C42()
{
  extern Class_Descriptor cd_S40C42;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C42, buf);
    S40C42 &lv = *(new (buf) S40C42());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C42)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C42)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C43*), 0, "S40C42");
    check_base_class_offset(lv, (S40C43*), 0, "S40C42");
    test_class_info(&lv, &cd_S40C42);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C42(Test_S40C42, "S40C42", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C43;
static Base_Class bases_S40C42[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C43,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C42 = {  "S40C42", // class name
  bases_S40C42, 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  S40C47  : S40C12_nt {
};
//SIG(-1 S40C47) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C47()
{
  extern Class_Descriptor cd_S40C47;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C47, buf);
    S40C47 &lv = *(new (buf) S40C47());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C47)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C47)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C47");
    test_class_info(&lv, &cd_S40C47);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C47(Test_S40C47, "S40C47", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C47[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C47 = {  "S40C47", // class name
  bases_S40C47, 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  S40C46  : S40C47 {
};
//SIG(-1 S40C46) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C46()
{
  extern Class_Descriptor cd_S40C46;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C46, buf);
    S40C46 &lv = *(new (buf) S40C46());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C46)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C46)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C47*), 0, "S40C46");
    check_base_class_offset(lv, (S40C47*), 0, "S40C46");
    test_class_info(&lv, &cd_S40C46);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C46(Test_S40C46, "S40C46", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C47;
static Base_Class bases_S40C46[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C47,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C46 = {  "S40C46", // class name
  bases_S40C46, 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  S40C51  : S40C12_nt {
};
//SIG(-1 S40C51) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C51()
{
  extern Class_Descriptor cd_S40C51;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C51, buf);
    S40C51 &lv = *(new (buf) S40C51());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C51)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C51)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C51");
    test_class_info(&lv, &cd_S40C51);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C51(Test_S40C51, "S40C51", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C51[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C51 = {  "S40C51", // class name
  bases_S40C51, 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  S40C50  : S40C51 {
};
//SIG(-1 S40C50) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C50()
{
  extern Class_Descriptor cd_S40C50;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C50, buf);
    S40C50 &lv = *(new (buf) S40C50());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C50)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C50)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C51*), 0, "S40C50");
    check_base_class_offset(lv, (S40C51*), 0, "S40C50");
    test_class_info(&lv, &cd_S40C50);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C50(Test_S40C50, "S40C50", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C51;
static Base_Class bases_S40C50[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C51,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C50 = {  "S40C50", // class name
  bases_S40C50, 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  S40C55  : S40C12_nt {
};
//SIG(-1 S40C55) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C55()
{
  extern Class_Descriptor cd_S40C55;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C55, buf);
    S40C55 &lv = *(new (buf) S40C55());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C55)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C55)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C55");
    test_class_info(&lv, &cd_S40C55);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C55(Test_S40C55, "S40C55", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C55[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C55 = {  "S40C55", // class name
  bases_S40C55, 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  S40C54  : S40C55 {
};
//SIG(-1 S40C54) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C54()
{
  extern Class_Descriptor cd_S40C54;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C54, buf);
    S40C54 &lv = *(new (buf) S40C54());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C54)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C54)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C55*), 0, "S40C54");
    check_base_class_offset(lv, (S40C55*), 0, "S40C54");
    test_class_info(&lv, &cd_S40C54);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C54(Test_S40C54, "S40C54", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C55;
static Base_Class bases_S40C54[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C55,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C54 = {  "S40C54", // class name
  bases_S40C54, 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  S40C59  : S40C12_nt {
};
//SIG(-1 S40C59) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C59()
{
  extern Class_Descriptor cd_S40C59;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C59, buf);
    S40C59 &lv = *(new (buf) S40C59());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C59)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C59)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C59");
    test_class_info(&lv, &cd_S40C59);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C59(Test_S40C59, "S40C59", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C59[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C59 = {  "S40C59", // class name
  bases_S40C59, 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  S40C58  : S40C59 {
};
//SIG(-1 S40C58) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C58()
{
  extern Class_Descriptor cd_S40C58;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C58, buf);
    S40C58 &lv = *(new (buf) S40C58());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C58)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C58)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C59*), 0, "S40C58");
    check_base_class_offset(lv, (S40C59*), 0, "S40C58");
    test_class_info(&lv, &cd_S40C58);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C58(Test_S40C58, "S40C58", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C59;
static Base_Class bases_S40C58[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C59,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C58 = {  "S40C58", // class name
  bases_S40C58, 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  S40C63  : S40C12_nt {
};
//SIG(-1 S40C63) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C63()
{
  extern Class_Descriptor cd_S40C63;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C63, buf);
    S40C63 &lv = *(new (buf) S40C63());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C63)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C63)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C63");
    test_class_info(&lv, &cd_S40C63);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C63(Test_S40C63, "S40C63", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C63[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C63 = {  "S40C63", // class name
  bases_S40C63, 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  S40C62  : S40C63 {
};
//SIG(-1 S40C62) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C62()
{
  extern Class_Descriptor cd_S40C62;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C62, buf);
    S40C62 &lv = *(new (buf) S40C62());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C62)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C62)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C63*), 0, "S40C62");
    check_base_class_offset(lv, (S40C63*), 0, "S40C62");
    test_class_info(&lv, &cd_S40C62);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C62(Test_S40C62, "S40C62", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C63;
static Base_Class bases_S40C62[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C63,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C62 = {  "S40C62", // class name
  bases_S40C62, 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  S40C67  : S40C12_nt {
};
//SIG(-1 S40C67) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C67()
{
  extern Class_Descriptor cd_S40C67;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C67, buf);
    S40C67 &lv = *(new (buf) S40C67());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C67)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C67)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C67");
    test_class_info(&lv, &cd_S40C67);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C67(Test_S40C67, "S40C67", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C67[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C67 = {  "S40C67", // class name
  bases_S40C67, 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  S40C66  : S40C67 {
};
//SIG(-1 S40C66) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C66()
{
  extern Class_Descriptor cd_S40C66;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C66, buf);
    S40C66 &lv = *(new (buf) S40C66());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C66)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C66)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C67*), 0, "S40C66");
    check_base_class_offset(lv, (S40C67*), 0, "S40C66");
    test_class_info(&lv, &cd_S40C66);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C66(Test_S40C66, "S40C66", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C67;
static Base_Class bases_S40C66[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C67,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C66 = {  "S40C66", // class name
  bases_S40C66, 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  S40C68_nt  {
  ::S40C66 s40c68f0;
  char s40c68f1;
  void  mf40c68(); // _ZN9S40C68_nt7mf40c68Ev
};
//SIG(-1 S40C68_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fc}


void  S40C68_nt ::mf40c68(){}

//skip512 S40C68_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C72  : S40C12_nt {
};
//SIG(-1 S40C72) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C72()
{
  extern Class_Descriptor cd_S40C72;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C72, buf);
    S40C72 &lv = *(new (buf) S40C72());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C72)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C72)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C72");
    test_class_info(&lv, &cd_S40C72);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C72(Test_S40C72, "S40C72", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C72[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C72 = {  "S40C72", // class name
  bases_S40C72, 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  S40C71  : S40C72 {
};
//SIG(-1 S40C71) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C71()
{
  extern Class_Descriptor cd_S40C71;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C71, buf);
    S40C71 &lv = *(new (buf) S40C71());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C71)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C71)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C72*), 0, "S40C71");
    check_base_class_offset(lv, (S40C72*), 0, "S40C71");
    test_class_info(&lv, &cd_S40C71);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C71(Test_S40C71, "S40C71", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C72;
static Base_Class bases_S40C71[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C72,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C71 = {  "S40C71", // class name
  bases_S40C71, 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  S40C75_nt  {
  int s40c75f0;
  ::S40C18_nt s40c75f1;
  ::S40C18_nt s40c75f2;
  void *s40c75f3;
  ::S40C9_nt s40c75f4;
};
//SIG(-1 S40C75_nt) C1{ Fi FC2{ m Fi[3]} FC2 Fp FC3{ m Fi[2]}}



//skip512 S40C75_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C77  : S40C12_nt {
};
//SIG(-1 S40C77) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C77()
{
  extern Class_Descriptor cd_S40C77;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C77, buf);
    S40C77 &lv = *(new (buf) S40C77());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C77)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C77)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C77");
    test_class_info(&lv, &cd_S40C77);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C77(Test_S40C77, "S40C77", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C77[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C77 = {  "S40C77", // class name
  bases_S40C77, 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  S40C76  : S40C77 {
};
//SIG(-1 S40C76) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C76()
{
  extern Class_Descriptor cd_S40C76;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C76, buf);
    S40C76 &lv = *(new (buf) S40C76());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C76)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C76)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C77*), 0, "S40C76");
    check_base_class_offset(lv, (S40C77*), 0, "S40C76");
    test_class_info(&lv, &cd_S40C76);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C76(Test_S40C76, "S40C76", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C77;
static Base_Class bases_S40C76[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C77,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C76 = {  "S40C76", // class name
  bases_S40C76, 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  S40C81  : S40C12_nt {
};
//SIG(-1 S40C81) C1{ BC2{ m Fp Fi[2]}}



static void Test_S40C81()
{
  extern Class_Descriptor cd_S40C81;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C81, buf);
    S40C81 &lv = *(new (buf) S40C81());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C81)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C81)");
    check_base_class_offset(lv, (S40C12_nt*), 0, "S40C81");
    test_class_info(&lv, &cd_S40C81);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C81(Test_S40C81, "S40C81", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
static Base_Class bases_S40C81[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C81 = {  "S40C81", // class name
  bases_S40C81, 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  S40C80  : S40C81 {
};
//SIG(-1 S40C80) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S40C80()
{
  extern Class_Descriptor cd_S40C80;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S40C80, buf);
    S40C80 &lv = *(new (buf) S40C80());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S40C80)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C80)");
    check_base_class_offset(lv, (S40C12_nt*)(S40C81*), 0, "S40C80");
    check_base_class_offset(lv, (S40C81*), 0, "S40C80");
    test_class_info(&lv, &cd_S40C80);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C80(Test_S40C80, "S40C80", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C12_nt;
extern Class_Descriptor cd_S40C81;
static Base_Class bases_S40C80[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C81,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S40C80 = {  "S40C80", // class name
  bases_S40C80, 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  S40C2_nt  : S40C3_nt {
  unsigned int s40c2f0:1;
  unsigned int s40c2f1:1;
  unsigned int s40c2f2:1;
  unsigned int s40c2f3:1;
  unsigned int s40c2f4:1;
  unsigned int s40c2f5:1;
  unsigned int s40c2f6:1;
  unsigned int s40c2f7:1;
  unsigned int s40c2f8:1;
  unsigned int s40c2f9:1;
  unsigned int s40c2f10:1;
  unsigned int s40c2f11:1;
  unsigned int s40c2f12:1;
  unsigned int s40c2f13:1;
  unsigned int s40c2f14:1;
  unsigned int s40c2f15:1;
  unsigned int s40c2f16:1;
  unsigned int s40c2f17:1;
  unsigned int s40c2f18:1;
  unsigned int s40c2f19:1;
  unsigned int s40c2f20:1;
  unsigned int s40c2f21:1;
  unsigned int s40c2f22:1;
  unsigned int s40c2f23:1;
  unsigned int s40c2f24:1;
  unsigned int s40c2f25:1;
  unsigned int s40c2f26:1;
  unsigned int s40c2f27:1;
  unsigned int s40c2f28:1;
  unsigned int s40c2f29:1;
  unsigned int s40c2f30:1;
  unsigned int s40c2f31:1;
  unsigned int s40c2f32:1;
  unsigned int s40c2f33:1;
  unsigned int s40c2f34:1;
  unsigned int s40c2f35:1;
  unsigned int s40c2f36:1;
  unsigned int s40c2f37:1;
  unsigned int s40c2f38:1;
  unsigned int s40c2f39:1;
  unsigned int s40c2f40:1;
  unsigned int s40c2f41:1;
  unsigned int s40c2f42:1;
  unsigned int s40c2f43:1;
  unsigned int s40c2f44:1;
  unsigned int s40c2f45:1;
  unsigned int s40c2f46:1;
  unsigned int s40c2f47:1;
  unsigned int s40c2f48:1;
  unsigned int s40c2f49:1;
  unsigned int s40c2f50:1;
  unsigned int s40c2f51:1;
  unsigned int s40c2f52:1;
  unsigned int s40c2f53:1;
  unsigned int s40c2f54:1;
  unsigned int s40c2f55:1;
  unsigned int s40c2f56:1;
  unsigned int s40c2f57:1;
  unsigned int s40c2f58:1;
  unsigned int s40c2f59:1;
  unsigned int s40c2f60:1;
  unsigned int s40c2f61:1;
  ::S40C37 s40c2f62;
  void *s40c2f63;
  char s40c2f64[3];
  void *s40c2f65;
  int s40c2f66;
  void *s40c2f67[2];
  int s40c2f68[2];
  void *s40c2f69;
  int s40c2f70[5];
  void *s40c2f71[3];
  int s40c2f72[2];
  ::S40C37 s40c2f73;
  int s40c2f74[3];
  unsigned int s40c2f75:1;
  int s40c2f76[5];
  void *s40c2f77[2];
  int s40c2f78;
  void *s40c2f79;
  int s40c2f80;
  void *s40c2f81;
  int s40c2f82[2];
  void *s40c2f83[3];
  int s40c2f84;
  ::S40C26_nt s40c2f85;
  ::S40C26_nt s40c2f86;
  ::S40C41_nt s40c2f87;
  int s40c2f88[5];
  void *s40c2f89[2];
  int s40c2f90;
  ::S40C18_nt s40c2f91;
  ::S40C42 s40c2f92;
  int s40c2f93;
  ::S40C42 s40c2f94;
  void *s40c2f95;
  int s40c2f96;
  ::S40C46 s40c2f97;
  ::S40C46 s40c2f98;
  ::S40C50 s40c2f99;
  ::S40C50 s40c2f100;
  ::S40C54 s40c2f101;
  int s40c2f102;
  void *s40c2f103[2];
  ::S40C54 s40c2f104;
  void *s40c2f105;
  int s40c2f106[6];
  void *s40c2f107[2];
  int s40c2f108[3];
  void *s40c2f109;
  ::S40C58 s40c2f110;
  void *s40c2f111;
  ::S40C9_nt s40c2f112;
  int s40c2f113;
  ::S40C9_nt s40c2f114;
  ::S40C58 s40c2f115;
  int s40c2f116[6];
  void *s40c2f117;
  int s40c2f118[2];
  ::S40C9_nt s40c2f119;
  ::S40C9_nt s40c2f120;
  ::S40C58 s40c2f121;
  ::S40C18_nt s40c2f122;
  void *s40c2f123[2];
  int s40c2f124;
  void *s40c2f125[2];
  int s40c2f126;
  void *s40c2f127[3];
  int s40c2f128;
  ::S40C9_nt s40c2f129;
  void *s40c2f130[2];
  ::S40C62 s40c2f131;
  ::S40C9_nt s40c2f132;
  int s40c2f133;
  ::S40C9_nt s40c2f134;
  void *s40c2f135[3];
  ::S40C18_nt s40c2f136;
  ::S40C18_nt s40c2f137;
  ::S40C9_nt s40c2f138;
  ::S40C18_nt s40c2f139;
  int s40c2f140;
  ::S40C35_nt s40c2f141;
  ::S40C35_nt s40c2f142;
  ::S40C35_nt s40c2f143;
  ::S40C35_nt s40c2f144;
  ::S40C35_nt s40c2f145;
  int s40c2f146[4];
  ::S40C18_nt s40c2f147;
  void *s40c2f148;
  ::S40C18_nt s40c2f149;
  ::S40C62 s40c2f150;
  ::S40C66 s40c2f151;
  ::S40C9_nt s40c2f152;
  ::S40C68_nt s40c2f153;
  ::S40C54 s40c2f154;
  int s40c2f155;
  void *s40c2f156[2];
  int s40c2f157[9];
  ::S40C71 s40c2f158;
  int s40c2f159;
  ::S40C18_nt s40c2f160;
  int s40c2f161[2];
  ::S40C18_nt s40c2f162;
  ::S40C71 s40c2f163;
  ::S40C75_nt s40c2f164;
  int s40c2f165[3];
  void *s40c2f166[2];
  ::S40C76 s40c2f167;
  ::S40C76 s40c2f168;
  void *s40c2f169;
  int s40c2f170[2];
  ::S40C80 s40c2f171;
  ::S40C80 s40c2f172;
  virtual  ~S40C2_nt(); // _ZN8S40C2_ntD1Ev
  virtual void  v362(); // _ZN8S40C2_nt4v362Ev
  virtual void  v363(); // _ZN8S40C2_nt4v363Ev
  virtual void  v364(); // _ZN8S40C2_nt4v364Ev
  virtual void  v365(); // _ZN8S40C2_nt4v365Ev
  virtual void  v366(); // _ZN8S40C2_nt4v366Ev
  virtual void  v367(); // _ZN8S40C2_nt4v367Ev
  virtual void  v368(); // _ZN8S40C2_nt4v368Ev
  virtual void  v369(); // _ZN8S40C2_nt4v369Ev
  virtual void  v370(); // _ZN8S40C2_nt4v370Ev
  virtual void  v371(); // _ZN8S40C2_nt4v371Ev
  virtual void  v372(); // _ZN8S40C2_nt4v372Ev
  virtual void  v373(); // _ZN8S40C2_nt4v373Ev
  virtual void  v374(); // _ZN8S40C2_nt4v374Ev
  virtual void  v375(); // _ZN8S40C2_nt4v375Ev
  virtual void  v376(); // _ZN8S40C2_nt4v376Ev
  virtual void  v377(); // _ZN8S40C2_nt4v377Ev
  virtual void  v378(); // _ZN8S40C2_nt4v378Ev
  virtual void  v379(); // _ZN8S40C2_nt4v379Ev
  virtual void  v380(); // _ZN8S40C2_nt4v380Ev
  virtual void  v381(); // _ZN8S40C2_nt4v381Ev
  virtual void  v382(); // _ZN8S40C2_nt4v382Ev
  virtual void  v383(); // _ZN8S40C2_nt4v383Ev
  virtual void  v384(); // _ZN8S40C2_nt4v384Ev
  virtual void  v385(); // _ZN8S40C2_nt4v385Ev
  virtual void  v386(); // _ZN8S40C2_nt4v386Ev
  virtual void  v387(); // _ZN8S40C2_nt4v387Ev
  virtual void  v388(); // _ZN8S40C2_nt4v388Ev
  virtual void  v389(); // _ZN8S40C2_nt4v389Ev
  virtual void  v390(); // _ZN8S40C2_nt4v390Ev
  S40C2_nt(); // tgen
};
//SIG(-1 S40C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd 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 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd 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 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC9 FC12{ m Fi} Fi Fc[4] Fp[2] FC9 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] FC8 FC8 FC8 FC13{ BC14{ BC11}} FC13 Fi Fp[2] FC15{ m Fi[3]} FC15 FC15 FC15 Fp FC8 FC13 FC15 FC15 Fi FC15 FC15 Fp Fi Fc FC15 FC15 Fp Fi Fp FC13 FC16{ BC17{ BC11}} FC16} vd v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 v331 v332 v333 v334 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC15 Fi[19] FC15 Fi[2] Fp Fi[5] FC15 FC15 Fi Fp Fi FC15 Fi Fp Fi[3] FC18{ BC19{ BC20{ BC11}}} Fp[3] FC8 FC8 Fp Fi FC15 Fp FC15 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC15 FC15 Fi Fp[2] Fi} vd v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 v355 v356 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC21{ BC22{ BC11}} Fi FC15 Fi[3] FC15 Fi[2] Fp Fi[2] Fc Fi[8]} vd v357 v358 v359 v360 v361 v362 v363 v364 v365 v366 v367 v368 v369 v370 v371 v372 v373 v374 v375 v376 v377 v378 v379 v380 Fp FC21 FC15 FC15 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[4] Fp[2] Fi[8] Fp[5] Fi[13] FC15 Fi[3] FC23{ FC24{ m FC15 FC25{ m Fi[4]} FC15 FC15 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v381 v382 v383 Fi:1 Fp FC25} 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 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 FC26{ BC27{ BC11}} Fp Fc[3] Fp Fi Fp[2] Fi[2] Fp Fi[5] Fp[3] Fi[2] FC26 Fi[3] Fi:1 Fi[5] Fp[2] Fi Fp Fi Fp Fi[2] Fp[3] Fi FC18 FC18 FC28{ m Fp FC18} Fi[5] Fp[2] Fi FC15 FC29{ BC30{ BC11}} Fi FC29 Fp Fi FC31{ BC32{ BC11}} FC31 FC33{ BC34{ BC11}} FC33 FC35{ BC36{ BC11}} Fi Fp[2] FC35 Fp Fi[6] Fp[2] Fi[3] Fp FC37{ BC38{ BC11}} Fp FC8 Fi FC8 FC37 Fi[6] Fp Fi[2] FC8 FC8 FC37 FC15 Fp[2] Fi Fp[2] Fi Fp[3] Fi FC8 Fp[2] FC39{ BC40{ BC11}} FC8 Fi FC8 Fp[3] FC15 FC15 FC8 FC15 Fi FC25 FC25 FC25 FC25 FC25 Fi[4] FC15 Fp FC15 FC39 FC41{ BC42{ BC11}} FC8 FC43{ m FC41 Fc} FC35 Fi Fp[2] Fi[9] FC44{ BC45{ BC11}} Fi FC15 Fi[2] FC15 FC44 FC46{ Fi FC15 FC15 Fp FC8} Fi[3] Fp[2] FC47{ BC48{ BC11}} FC47 Fp Fi[2] FC49{ BC50{ BC11}} FC49}


 S40C2_nt ::~S40C2_nt(){ note_dtor("S40C2_nt", this);}
void  S40C2_nt ::v362(){vfunc_called(this, "_ZN8S40C2_nt4v362Ev");}
void  S40C2_nt ::v363(){vfunc_called(this, "_ZN8S40C2_nt4v363Ev");}
void  S40C2_nt ::v364(){vfunc_called(this, "_ZN8S40C2_nt4v364Ev");}
void  S40C2_nt ::v365(){vfunc_called(this, "_ZN8S40C2_nt4v365Ev");}
void  S40C2_nt ::v366(){vfunc_called(this, "_ZN8S40C2_nt4v366Ev");}
void  S40C2_nt ::v367(){vfunc_called(this, "_ZN8S40C2_nt4v367Ev");}
void  S40C2_nt ::v368(){vfunc_called(this, "_ZN8S40C2_nt4v368Ev");}
void  S40C2_nt ::v369(){vfunc_called(this, "_ZN8S40C2_nt4v369Ev");}
void  S40C2_nt ::v370(){vfunc_called(this, "_ZN8S40C2_nt4v370Ev");}
void  S40C2_nt ::v371(){vfunc_called(this, "_ZN8S40C2_nt4v371Ev");}
void  S40C2_nt ::v372(){vfunc_called(this, "_ZN8S40C2_nt4v372Ev");}
void  S40C2_nt ::v373(){vfunc_called(this, "_ZN8S40C2_nt4v373Ev");}
void  S40C2_nt ::v374(){vfunc_called(this, "_ZN8S40C2_nt4v374Ev");}
void  S40C2_nt ::v375(){vfunc_called(this, "_ZN8S40C2_nt4v375Ev");}
void  S40C2_nt ::v376(){vfunc_called(this, "_ZN8S40C2_nt4v376Ev");}
void  S40C2_nt ::v377(){vfunc_called(this, "_ZN8S40C2_nt4v377Ev");}
void  S40C2_nt ::v378(){vfunc_called(this, "_ZN8S40C2_nt4v378Ev");}
void  S40C2_nt ::v379(){vfunc_called(this, "_ZN8S40C2_nt4v379Ev");}
void  S40C2_nt ::v380(){vfunc_called(this, "_ZN8S40C2_nt4v380Ev");}
void  S40C2_nt ::v381(){vfunc_called(this, "_ZN8S40C2_nt4v381Ev");}
void  S40C2_nt ::v382(){vfunc_called(this, "_ZN8S40C2_nt4v382Ev");}
void  S40C2_nt ::v383(){vfunc_called(this, "_ZN8S40C2_nt4v383Ev");}
void  S40C2_nt ::v384(){vfunc_called(this, "_ZN8S40C2_nt4v384Ev");}
void  S40C2_nt ::v385(){vfunc_called(this, "_ZN8S40C2_nt4v385Ev");}
void  S40C2_nt ::v386(){vfunc_called(this, "_ZN8S40C2_nt4v386Ev");}
void  S40C2_nt ::v387(){vfunc_called(this, "_ZN8S40C2_nt4v387Ev");}
void  S40C2_nt ::v388(){vfunc_called(this, "_ZN8S40C2_nt4v388Ev");}
void  S40C2_nt ::v389(){vfunc_called(this, "_ZN8S40C2_nt4v389Ev");}
void  S40C2_nt ::v390(){vfunc_called(this, "_ZN8S40C2_nt4v390Ev");}
S40C2_nt ::S40C2_nt(){ note_ctor("S40C2_nt", this);} // tgen

//skip512 S40C2_nt

#else // __cplusplus

extern void _ZN8S40C2_ntC1Ev();
extern void _ZN8S40C2_ntD1Ev();
Name_Map name_map_S40C2_nt[] = {
  NSPAIR(_ZN8S40C2_ntC1Ev),
  NSPAIR(_ZN8S40C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
extern Class_Descriptor cd_S40C3_nt;
extern VTBL_ENTRY _ZTI8S40C3_nt[];
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
static Base_Class bases_S40C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S40C2_nt[];
extern void _ZN8S40C2_ntD1Ev();
extern void _ZN8S40C2_ntD0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
extern void _ZN8S40C2_nt4v362Ev();
extern void _ZN8S40C2_nt4v363Ev();
extern void _ZN8S40C2_nt4v364Ev();
extern void _ZN8S40C2_nt4v365Ev();
extern void _ZN8S40C2_nt4v366Ev();
extern void _ZN8S40C2_nt4v367Ev();
extern void _ZN8S40C2_nt4v368Ev();
extern void _ZN8S40C2_nt4v369Ev();
extern void _ZN8S40C2_nt4v370Ev();
extern void _ZN8S40C2_nt4v371Ev();
extern void _ZN8S40C2_nt4v372Ev();
extern void _ZN8S40C2_nt4v373Ev();
extern void _ZN8S40C2_nt4v374Ev();
extern void _ZN8S40C2_nt4v375Ev();
extern void _ZN8S40C2_nt4v376Ev();
extern void _ZN8S40C2_nt4v377Ev();
extern void _ZN8S40C2_nt4v378Ev();
extern void _ZN8S40C2_nt4v379Ev();
extern void _ZN8S40C2_nt4v380Ev();
extern void _ZN8S40C2_nt4v381Ev();
extern void _ZN8S40C2_nt4v382Ev();
extern void _ZN8S40C2_nt4v383Ev();
extern void _ZN8S40C2_nt4v384Ev();
extern void _ZN8S40C2_nt4v385Ev();
extern void _ZN8S40C2_nt4v386Ev();
extern void _ZN8S40C2_nt4v387Ev();
extern void _ZN8S40C2_nt4v388Ev();
extern void _ZN8S40C2_nt4v389Ev();
extern void _ZN8S40C2_nt4v390Ev();
static  VTBL_ENTRY vtc_S40C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S40C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S40C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S40C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v362Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v363Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v364Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v365Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v366Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v367Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v368Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v369Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v370Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v371Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v372Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v373Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v374Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v375Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v376Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v377Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v378Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v379Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v380Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v381Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v382Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v383Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v384Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v385Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v386Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v387Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v388Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v389Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v390Ev,
};
extern VTBL_ENTRY _ZTI8S40C2_nt[];
VTBL_ENTRY *P__ZTI8S40C2_nt = _ZTI8S40C2_nt; 
extern  VTBL_ENTRY _ZTV8S40C2_nt[];
Class_Descriptor cd_S40C2_nt = {  "S40C2_nt", // class name
  bases_S40C2_nt, 6,
  &(vtc_S40C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3208,2480), // object size
  NSPAIRA(_ZTI8S40C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S40C2_nt),387, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C82  {
  ::S40C18_nt s40c82f0;
  ::S40C18_nt s40c82f1;
  char s40c82f2;
  void  mf40c82(); // _ZN6S40C827mf40c82Ev
};
//SIG(-1 S40C82) C1{ m FC2{ m Fi[3]} FC2 Fc}


void  S40C82 ::mf40c82(){}

static void Test_S40C82()
{
  {
    init_simple_test("S40C82");
    S40C82 lv;
    check2(sizeof(lv), 28, "sizeof(S40C82)");
    check2(__alignof__(lv), 4, "__alignof__(S40C82)");
    check_field_offset(lv, s40c82f0, 0, "S40C82.s40c82f0");
    check_field_offset(lv, s40c82f1, 12, "S40C82.s40c82f1");
    check_field_offset(lv, s40c82f2, 24, "S40C82.s40c82f2");
  }
}
static Arrange_To_Call_Me vS40C82(Test_S40C82, "S40C82", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S40C1  : S40C2_nt {
  void *s40c1f0[3];
  unsigned int s40c1f1:1;
  ::S40C82 s40c1f2;
  virtual  ~S40C1(); // _ZN5S40C1D1Ev
  virtual void  v1(); // _ZN5S40C12v1Ev
  virtual void  v2(); // _ZN5S40C12v2Ev
  virtual void  v3(); // _ZN5S40C12v3Ev
  virtual void  v4(); // _ZN5S40C12v4Ev
  virtual void  v5(); // _ZN5S40C12v5Ev
  virtual void  v6(); // _ZN5S40C12v6Ev
  virtual void  v7(); // _ZN5S40C12v7Ev
  S40C1(); // tgen
};
//SIG(1 S40C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ BC8{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC9{ m Fi[2]} Fp[2]} vd 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 v211 v212 v213 v214 FC10{ BC11{ BC12{ m Fp Fi[2]}}} FC10 FC13{ m Fi} Fi Fc[4] Fp[2] FC10 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] FC9 FC9 FC9 FC14{ BC15{ BC12}} FC14 Fi Fp[2] FC16{ m Fi[3]} FC16 FC16 FC16 Fp FC9 FC14 FC16 FC16 Fi FC16 FC16 Fp Fi Fc FC16 FC16 Fp Fi Fp FC14 FC17{ BC18{ BC12}} FC17} vd v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 Fi[3] Fp[2] Fi Fp[2] 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] Fc[4] Fi[10] Fp[2] Fi[4] FC16 Fi[19] FC16 Fi[2] Fp Fi[5] FC16 FC16 Fi Fp Fi FC16 Fi Fp Fi[3] FC19{ BC20{ BC21{ BC12}}} Fp[3] FC9 FC9 Fp Fi FC16 Fp FC16 Fp[2] Fi[2] Fp Fi[2] Fp Fi[3] Fp[3] FC16 FC16 Fi Fp[2] Fi} vd v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 v331 v332 v333 v334 Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC22{ BC23{ BC12}} Fi FC16 Fi[3] FC16 Fi[2] Fp Fi[2] Fc Fi[8]} vd v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 v355 v356 v357 v358 Fp FC22 FC16 FC16 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[4] Fp[2] Fi[8] Fp[5] Fi[13] FC16 Fi[3] FC24{ FC25{ m FC16 FC26{ m Fi[4]} FC16 FC16 Fc} Fc[4] Fi:1 Fi} Fi[2]} vd v359 v360 v361 Fi:1 Fp FC26} vd v362 v363 v364 v365 v366 v367 v368 v369 v370 v371 v372 v373 v374 v375 v376 v377 v378 v379 v380 v381 v382 v383 v384 v385 v386 v387 v388 v389 v390 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 FC27{ BC28{ BC12}} Fp Fc[3] Fp Fi Fp[2] Fi[2] Fp Fi[5] Fp[3] Fi[2] FC27 Fi[3] Fi:1 Fi[5] Fp[2] Fi Fp Fi Fp Fi[2] Fp[3] Fi FC19 FC19 FC29{ m Fp FC19} Fi[5] Fp[2] Fi FC16 FC30{ BC31{ BC12}} Fi FC30 Fp Fi FC32{ BC33{ BC12}} FC32 FC34{ BC35{ BC12}} FC34 FC36{ BC37{ BC12}} Fi Fp[2] FC36 Fp Fi[6] Fp[2] Fi[3] Fp FC38{ BC39{ BC12}} Fp FC9 Fi FC9 FC38 Fi[6] Fp Fi[2] FC9 FC9 FC38 FC16 Fp[2] Fi Fp[2] Fi Fp[3] Fi FC9 Fp[2] FC40{ BC41{ BC12}} FC9 Fi FC9 Fp[3] FC16 FC16 FC9 FC16 Fi FC26 FC26 FC26 FC26 FC26 Fi[4] FC16 Fp FC16 FC40 FC42{ BC43{ BC12}} FC9 FC44{ m FC42 Fc} FC36 Fi Fp[2] Fi[9] FC45{ BC46{ BC12}} Fi FC16 Fi[2] FC16 FC45 FC47{ Fi FC16 FC16 Fp FC9} Fi[3] Fp[2] FC48{ BC49{ BC12}} FC48 Fp Fi[2] FC50{ BC51{ BC12}} FC50} vd v1 v2 v3 v4 v5 v6 v7 Fp[3] Fi:1 FC52{ m FC16 FC16 Fc}}


 S40C1 ::~S40C1(){ note_dtor("S40C1", this);}
void  S40C1 ::v1(){vfunc_called(this, "_ZN5S40C12v1Ev");}
void  S40C1 ::v2(){vfunc_called(this, "_ZN5S40C12v2Ev");}
void  S40C1 ::v3(){vfunc_called(this, "_ZN5S40C12v3Ev");}
void  S40C1 ::v4(){vfunc_called(this, "_ZN5S40C12v4Ev");}
void  S40C1 ::v5(){vfunc_called(this, "_ZN5S40C12v5Ev");}
void  S40C1 ::v6(){vfunc_called(this, "_ZN5S40C12v6Ev");}
void  S40C1 ::v7(){vfunc_called(this, "_ZN5S40C12v7Ev");}
S40C1 ::S40C1(){ note_ctor("S40C1", this);} // tgen

static void Test_S40C1()
{
  extern Class_Descriptor cd_S40C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(409,632)];
    init_test(&cd_S40C1, buf);
    S40C1 *dp, &lv = *(dp=new (buf) S40C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3264,2524), "sizeof(S40C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S40C1)");
    check_base_class_offset(lv, (S40C8_nt*)(S40C7_nt*)(S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C7_nt*)(S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C6_nt*)(S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C5_nt*)(S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C4_nt*)(S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C3_nt*)(S40C2_nt*), 0, "S40C1");
    check_base_class_offset(lv, (S40C2_nt*), 0, "S40C1");
    check_field_offset(lv, s40c1f0, ABISELECT(3208,2480), "S40C1.s40c1f0");
    set_bf_and_test(lv, s40c1f1, ABISELECT(3232,2492), 0, 1, 1, "S40C1");
    check_field_offset(lv, s40c1f2, ABISELECT(3236,2496), "S40C1.s40c1f2");
    test_class_info(&lv, &cd_S40C1);
    dp->~S40C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS40C1(Test_S40C1, "S40C1", ABISELECT(3264,2524));

#else // __cplusplus

extern void _ZN5S40C1C1Ev();
extern void _ZN5S40C1D1Ev();
Name_Map name_map_S40C1[] = {
  NSPAIR(_ZN5S40C1C1Ev),
  NSPAIR(_ZN5S40C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C8_nt;
extern VTBL_ENTRY _ZTI8S40C8_nt[];
extern  VTBL_ENTRY _ZTV8S40C8_nt[];
extern Class_Descriptor cd_S40C7_nt;
extern VTBL_ENTRY _ZTI8S40C7_nt[];
extern  VTBL_ENTRY _ZTV8S40C7_nt[];
extern Class_Descriptor cd_S40C6_nt;
extern VTBL_ENTRY _ZTI8S40C6_nt[];
extern  VTBL_ENTRY _ZTV8S40C6_nt[];
extern Class_Descriptor cd_S40C5_nt;
extern VTBL_ENTRY _ZTI8S40C5_nt[];
extern  VTBL_ENTRY _ZTV8S40C5_nt[];
extern Class_Descriptor cd_S40C4_nt;
extern VTBL_ENTRY _ZTI8S40C4_nt[];
extern  VTBL_ENTRY _ZTV8S40C4_nt[];
extern Class_Descriptor cd_S40C3_nt;
extern VTBL_ENTRY _ZTI8S40C3_nt[];
extern  VTBL_ENTRY _ZTV8S40C3_nt[];
extern Class_Descriptor cd_S40C2_nt;
extern VTBL_ENTRY _ZTI8S40C2_nt[];
extern  VTBL_ENTRY _ZTV8S40C2_nt[];
static Base_Class bases_S40C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S40C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S40C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S40C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S40C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S40C1[];
extern void _ZN5S40C1D1Ev();
extern void _ZN5S40C1D0Ev();
extern void _ZN8S40C8_nt2v8Ev();
extern void _ZN8S40C8_nt2v9Ev();
extern void _ZN8S40C8_nt3v10Ev();
extern void _ZN8S40C8_nt3v11Ev();
extern void _ZN8S40C8_nt3v12Ev();
extern void _ZN8S40C8_nt3v13Ev();
extern void _ZN8S40C8_nt3v14Ev();
extern void _ZN8S40C8_nt3v15Ev();
extern void _ZN8S40C8_nt3v16Ev();
extern void _ZN8S40C8_nt3v17Ev();
extern void _ZN8S40C8_nt3v18Ev();
extern void _ZN8S40C8_nt3v19Ev();
extern void _ZN8S40C8_nt3v20Ev();
extern void _ZN8S40C8_nt3v21Ev();
extern void _ZN8S40C8_nt3v22Ev();
extern void _ZN8S40C8_nt3v23Ev();
extern void _ZN8S40C8_nt3v24Ev();
extern void _ZN8S40C8_nt3v25Ev();
extern void _ZN8S40C8_nt3v26Ev();
extern void _ZN8S40C8_nt3v27Ev();
extern void _ZN8S40C8_nt3v28Ev();
extern void _ZN8S40C8_nt3v29Ev();
extern void _ZN8S40C8_nt3v30Ev();
extern void _ZN8S40C8_nt3v31Ev();
extern void _ZN8S40C8_nt3v32Ev();
extern void _ZN8S40C8_nt3v33Ev();
extern void _ZN8S40C8_nt3v34Ev();
extern void _ZN8S40C8_nt3v35Ev();
extern void _ZN8S40C8_nt3v36Ev();
extern void _ZN8S40C8_nt3v37Ev();
extern void _ZN8S40C8_nt3v38Ev();
extern void _ZN8S40C8_nt3v39Ev();
extern void _ZN8S40C8_nt3v40Ev();
extern void _ZN8S40C8_nt3v41Ev();
extern void _ZN8S40C8_nt3v42Ev();
extern void _ZN8S40C8_nt3v43Ev();
extern void _ZN8S40C8_nt3v44Ev();
extern void _ZN8S40C8_nt3v45Ev();
extern void _ZN8S40C8_nt3v46Ev();
extern void _ZN8S40C8_nt3v47Ev();
extern void _ZN8S40C8_nt3v48Ev();
extern void _ZN8S40C8_nt3v49Ev();
extern void _ZN8S40C8_nt3v50Ev();
extern void _ZN8S40C8_nt3v51Ev();
extern void _ZN8S40C8_nt3v52Ev();
extern void _ZN8S40C8_nt3v53Ev();
extern void _ZN8S40C8_nt3v54Ev();
extern void _ZN8S40C8_nt3v55Ev();
extern void _ZN8S40C8_nt3v56Ev();
extern void _ZN8S40C8_nt3v57Ev();
extern void _ZN8S40C8_nt3v58Ev();
extern void _ZN8S40C8_nt3v59Ev();
extern void _ZN8S40C8_nt3v60Ev();
extern void _ZN8S40C8_nt3v61Ev();
extern void _ZN8S40C8_nt3v62Ev();
extern void _ZN8S40C8_nt3v63Ev();
extern void _ZN8S40C8_nt3v64Ev();
extern void _ZN8S40C8_nt3v65Ev();
extern void _ZN8S40C8_nt3v66Ev();
extern void _ZN8S40C8_nt3v67Ev();
extern void _ZN8S40C8_nt3v68Ev();
extern void _ZN8S40C8_nt3v69Ev();
extern void _ZN8S40C8_nt3v70Ev();
extern void _ZN8S40C8_nt3v71Ev();
extern void _ZN8S40C7_nt3v72Ev();
extern void _ZN8S40C7_nt3v73Ev();
extern void _ZN8S40C7_nt3v74Ev();
extern void _ZN8S40C7_nt3v75Ev();
extern void _ZN8S40C7_nt3v76Ev();
extern void _ZN8S40C7_nt3v77Ev();
extern void _ZN8S40C7_nt3v78Ev();
extern void _ZN8S40C7_nt3v79Ev();
extern void _ZN8S40C7_nt3v80Ev();
extern void _ZN8S40C7_nt3v81Ev();
extern void _ZN8S40C7_nt3v82Ev();
extern void _ZN8S40C7_nt3v83Ev();
extern void _ZN8S40C7_nt3v84Ev();
extern void _ZN8S40C7_nt3v85Ev();
extern void _ZN8S40C7_nt3v86Ev();
extern void _ZN8S40C7_nt3v87Ev();
extern void _ZN8S40C7_nt3v88Ev();
extern void _ZN8S40C7_nt3v89Ev();
extern void _ZN8S40C7_nt3v90Ev();
extern void _ZN8S40C7_nt3v91Ev();
extern void _ZN8S40C7_nt3v92Ev();
extern void _ZN8S40C7_nt3v93Ev();
extern void _ZN8S40C7_nt3v94Ev();
extern void _ZN8S40C7_nt3v95Ev();
extern void _ZN8S40C7_nt3v96Ev();
extern void _ZN8S40C7_nt3v97Ev();
extern void _ZN8S40C7_nt3v98Ev();
extern void _ZN8S40C7_nt3v99Ev();
extern void _ZN8S40C7_nt4v100Ev();
extern void _ZN8S40C7_nt4v101Ev();
extern void _ZN8S40C7_nt4v102Ev();
extern void _ZN8S40C7_nt4v103Ev();
extern void _ZN8S40C7_nt4v104Ev();
extern void _ZN8S40C7_nt4v105Ev();
extern void _ZN8S40C7_nt4v106Ev();
extern void _ZN8S40C7_nt4v107Ev();
extern void _ZN8S40C7_nt4v108Ev();
extern void _ZN8S40C7_nt4v109Ev();
extern void _ZN8S40C7_nt4v110Ev();
extern void _ZN8S40C7_nt4v111Ev();
extern void _ZN8S40C7_nt4v112Ev();
extern void _ZN8S40C7_nt4v113Ev();
extern void _ZN8S40C7_nt4v114Ev();
extern void _ZN8S40C7_nt4v115Ev();
extern void _ZN8S40C7_nt4v116Ev();
extern void _ZN8S40C7_nt4v117Ev();
extern void _ZN8S40C7_nt4v118Ev();
extern void _ZN8S40C7_nt4v119Ev();
extern void _ZN8S40C7_nt4v120Ev();
extern void _ZN8S40C7_nt4v121Ev();
extern void _ZN8S40C7_nt4v122Ev();
extern void _ZN8S40C7_nt4v123Ev();
extern void _ZN8S40C7_nt4v124Ev();
extern void _ZN8S40C7_nt4v125Ev();
extern void _ZN8S40C7_nt4v126Ev();
extern void _ZN8S40C7_nt4v127Ev();
extern void _ZN8S40C7_nt4v128Ev();
extern void _ZN8S40C7_nt4v129Ev();
extern void _ZN8S40C7_nt4v130Ev();
extern void _ZN8S40C7_nt4v131Ev();
extern void _ZN8S40C7_nt4v132Ev();
extern void _ZN8S40C7_nt4v133Ev();
extern void _ZN8S40C7_nt4v134Ev();
extern void _ZN8S40C7_nt4v135Ev();
extern void _ZN8S40C7_nt4v136Ev();
extern void _ZN8S40C7_nt4v137Ev();
extern void _ZN8S40C7_nt4v138Ev();
extern void _ZN8S40C7_nt4v139Ev();
extern void _ZN8S40C7_nt4v140Ev();
extern void _ZN8S40C7_nt4v141Ev();
extern void _ZN8S40C7_nt4v142Ev();
extern void _ZN8S40C7_nt4v143Ev();
extern void _ZN8S40C7_nt4v144Ev();
extern void _ZN8S40C7_nt4v145Ev();
extern void _ZN8S40C7_nt4v146Ev();
extern void _ZN8S40C7_nt4v147Ev();
extern void _ZN8S40C7_nt4v148Ev();
extern void _ZN8S40C7_nt4v149Ev();
extern void _ZN8S40C7_nt4v150Ev();
extern void _ZN8S40C7_nt4v151Ev();
extern void _ZN8S40C7_nt4v152Ev();
extern void _ZN8S40C7_nt4v153Ev();
extern void _ZN8S40C7_nt4v154Ev();
extern void _ZN8S40C7_nt4v155Ev();
extern void _ZN8S40C7_nt4v156Ev();
extern void _ZN8S40C7_nt4v157Ev();
extern void _ZN8S40C7_nt4v158Ev();
extern void _ZN8S40C7_nt4v159Ev();
extern void _ZN8S40C7_nt4v160Ev();
extern void _ZN8S40C7_nt4v161Ev();
extern void _ZN8S40C7_nt4v162Ev();
extern void _ZN8S40C7_nt4v163Ev();
extern void _ZN8S40C7_nt4v164Ev();
extern void _ZN8S40C7_nt4v165Ev();
extern void _ZN8S40C7_nt4v166Ev();
extern void _ZN8S40C7_nt4v167Ev();
extern void _ZN8S40C7_nt4v168Ev();
extern void _ZN8S40C7_nt4v169Ev();
extern void _ZN8S40C7_nt4v170Ev();
extern void _ZN8S40C7_nt4v171Ev();
extern void _ZN8S40C7_nt4v172Ev();
extern void _ZN8S40C7_nt4v173Ev();
extern void _ZN8S40C7_nt4v174Ev();
extern void _ZN8S40C7_nt4v175Ev();
extern void _ZN8S40C7_nt4v176Ev();
extern void _ZN8S40C7_nt4v177Ev();
extern void _ZN8S40C7_nt4v178Ev();
extern void _ZN8S40C7_nt4v179Ev();
extern void _ZN8S40C7_nt4v180Ev();
extern void _ZN8S40C7_nt4v181Ev();
extern void _ZN8S40C7_nt4v182Ev();
extern void _ZN8S40C7_nt4v183Ev();
extern void _ZN8S40C7_nt4v184Ev();
extern void _ZN8S40C7_nt4v185Ev();
extern void _ZN8S40C7_nt4v186Ev();
extern void _ZN8S40C7_nt4v187Ev();
extern void _ZN8S40C7_nt4v188Ev();
extern void _ZN8S40C7_nt4v189Ev();
extern void _ZN8S40C7_nt4v190Ev();
extern void _ZN8S40C7_nt4v191Ev();
extern void _ZN8S40C7_nt4v192Ev();
extern void _ZN8S40C7_nt4v193Ev();
extern void _ZN8S40C7_nt4v194Ev();
extern void _ZN8S40C7_nt4v195Ev();
extern void _ZN8S40C7_nt4v196Ev();
extern void _ZN8S40C7_nt4v197Ev();
extern void _ZN8S40C7_nt4v198Ev();
extern void _ZN8S40C7_nt4v199Ev();
extern void _ZN8S40C7_nt4v200Ev();
extern void _ZN8S40C7_nt4v201Ev();
extern void _ZN8S40C7_nt4v202Ev();
extern void _ZN8S40C7_nt4v203Ev();
extern void _ZN8S40C7_nt4v204Ev();
extern void _ZN8S40C7_nt4v205Ev();
extern void _ZN8S40C7_nt4v206Ev();
extern void _ZN8S40C7_nt4v207Ev();
extern void _ZN8S40C7_nt4v208Ev();
extern void _ZN8S40C7_nt4v209Ev();
extern void _ZN8S40C7_nt4v210Ev();
extern void _ZN8S40C7_nt4v211Ev();
extern void _ZN8S40C7_nt4v212Ev();
extern void _ZN8S40C7_nt4v213Ev();
extern void _ZN8S40C7_nt4v214Ev();
extern void _ZN8S40C6_nt4v215Ev();
extern void _ZN8S40C6_nt4v216Ev();
extern void _ZN8S40C6_nt4v217Ev();
extern void _ZN8S40C6_nt4v218Ev();
extern void _ZN8S40C6_nt4v219Ev();
extern void _ZN8S40C6_nt4v220Ev();
extern void _ZN8S40C6_nt4v221Ev();
extern void _ZN8S40C6_nt4v222Ev();
extern void _ZN8S40C6_nt4v223Ev();
extern void _ZN8S40C6_nt4v224Ev();
extern void _ZN8S40C6_nt4v225Ev();
extern void _ZN8S40C6_nt4v226Ev();
extern void _ZN8S40C6_nt4v227Ev();
extern void _ZN8S40C6_nt4v228Ev();
extern void _ZN8S40C6_nt4v229Ev();
extern void _ZN8S40C6_nt4v230Ev();
extern void _ZN8S40C6_nt4v231Ev();
extern void _ZN8S40C6_nt4v232Ev();
extern void _ZN8S40C6_nt4v233Ev();
extern void _ZN8S40C6_nt4v234Ev();
extern void _ZN8S40C6_nt4v235Ev();
extern void _ZN8S40C6_nt4v236Ev();
extern void _ZN8S40C6_nt4v237Ev();
extern void _ZN8S40C6_nt4v238Ev();
extern void _ZN8S40C6_nt4v239Ev();
extern void _ZN8S40C6_nt4v240Ev();
extern void _ZN8S40C6_nt4v241Ev();
extern void _ZN8S40C6_nt4v242Ev();
extern void _ZN8S40C6_nt4v243Ev();
extern void _ZN8S40C6_nt4v244Ev();
extern void _ZN8S40C6_nt4v245Ev();
extern void _ZN8S40C6_nt4v246Ev();
extern void _ZN8S40C6_nt4v247Ev();
extern void _ZN8S40C6_nt4v248Ev();
extern void _ZN8S40C6_nt4v249Ev();
extern void _ZN8S40C6_nt4v250Ev();
extern void _ZN8S40C6_nt4v251Ev();
extern void _ZN8S40C6_nt4v252Ev();
extern void _ZN8S40C6_nt4v253Ev();
extern void _ZN8S40C6_nt4v254Ev();
extern void _ZN8S40C6_nt4v255Ev();
extern void _ZN8S40C6_nt4v256Ev();
extern void _ZN8S40C6_nt4v257Ev();
extern void _ZN8S40C6_nt4v258Ev();
extern void _ZN8S40C6_nt4v259Ev();
extern void _ZN8S40C6_nt4v260Ev();
extern void _ZN8S40C6_nt4v261Ev();
extern void _ZN8S40C6_nt4v262Ev();
extern void _ZN8S40C6_nt4v263Ev();
extern void _ZN8S40C6_nt4v264Ev();
extern void _ZN8S40C6_nt4v265Ev();
extern void _ZN8S40C6_nt4v266Ev();
extern void _ZN8S40C6_nt4v267Ev();
extern void _ZN8S40C6_nt4v268Ev();
extern void _ZN8S40C6_nt4v269Ev();
extern void _ZN8S40C6_nt4v270Ev();
extern void _ZN8S40C6_nt4v271Ev();
extern void _ZN8S40C6_nt4v272Ev();
extern void _ZN8S40C6_nt4v273Ev();
extern void _ZN8S40C6_nt4v274Ev();
extern void _ZN8S40C6_nt4v275Ev();
extern void _ZN8S40C6_nt4v276Ev();
extern void _ZN8S40C6_nt4v277Ev();
extern void _ZN8S40C6_nt4v278Ev();
extern void _ZN8S40C6_nt4v279Ev();
extern void _ZN8S40C6_nt4v280Ev();
extern void _ZN8S40C6_nt4v281Ev();
extern void _ZN8S40C6_nt4v282Ev();
extern void _ZN8S40C6_nt4v283Ev();
extern void _ZN8S40C6_nt4v284Ev();
extern void _ZN8S40C6_nt4v285Ev();
extern void _ZN8S40C6_nt4v286Ev();
extern void _ZN8S40C6_nt4v287Ev();
extern void _ZN8S40C6_nt4v288Ev();
extern void _ZN8S40C6_nt4v289Ev();
extern void _ZN8S40C6_nt4v290Ev();
extern void _ZN8S40C6_nt4v291Ev();
extern void _ZN8S40C6_nt4v292Ev();
extern void _ZN8S40C6_nt4v293Ev();
extern void _ZN8S40C6_nt4v294Ev();
extern void _ZN8S40C6_nt4v295Ev();
extern void _ZN8S40C6_nt4v296Ev();
extern void _ZN8S40C6_nt4v297Ev();
extern void _ZN8S40C6_nt4v298Ev();
extern void _ZN8S40C6_nt4v299Ev();
extern void _ZN8S40C6_nt4v300Ev();
extern void _ZN8S40C6_nt4v301Ev();
extern void _ZN8S40C6_nt4v302Ev();
extern void _ZN8S40C6_nt4v303Ev();
extern void _ZN8S40C6_nt4v304Ev();
extern void _ZN8S40C6_nt4v305Ev();
extern void _ZN8S40C6_nt4v306Ev();
extern void _ZN8S40C6_nt4v307Ev();
extern void _ZN8S40C6_nt4v308Ev();
extern void _ZN8S40C6_nt4v309Ev();
extern void _ZN8S40C6_nt4v310Ev();
extern void _ZN8S40C6_nt4v311Ev();
extern void _ZN8S40C6_nt4v312Ev();
extern void _ZN8S40C5_nt4v313Ev();
extern void _ZN8S40C5_nt4v314Ev();
extern void _ZN8S40C5_nt4v315Ev();
extern void _ZN8S40C5_nt4v316Ev();
extern void _ZN8S40C5_nt4v317Ev();
extern void _ZN8S40C5_nt4v318Ev();
extern void _ZN8S40C5_nt4v319Ev();
extern void _ZN8S40C5_nt4v320Ev();
extern void _ZN8S40C5_nt4v321Ev();
extern void _ZN8S40C5_nt4v322Ev();
extern void _ZN8S40C5_nt4v323Ev();
extern void _ZN8S40C5_nt4v324Ev();
extern void _ZN8S40C5_nt4v325Ev();
extern void _ZN8S40C5_nt4v326Ev();
extern void _ZN8S40C5_nt4v327Ev();
extern void _ZN8S40C5_nt4v328Ev();
extern void _ZN8S40C5_nt4v329Ev();
extern void _ZN8S40C5_nt4v330Ev();
extern void _ZN8S40C5_nt4v331Ev();
extern void _ZN8S40C5_nt4v332Ev();
extern void _ZN8S40C5_nt4v333Ev();
extern void _ZN8S40C5_nt4v334Ev();
extern void _ZN8S40C4_nt4v335Ev();
extern void _ZN8S40C4_nt4v336Ev();
extern void _ZN8S40C4_nt4v337Ev();
extern void _ZN8S40C4_nt4v338Ev();
extern void _ZN8S40C4_nt4v339Ev();
extern void _ZN8S40C4_nt4v340Ev();
extern void _ZN8S40C4_nt4v341Ev();
extern void _ZN8S40C4_nt4v342Ev();
extern void _ZN8S40C4_nt4v343Ev();
extern void _ZN8S40C4_nt4v344Ev();
extern void _ZN8S40C4_nt4v345Ev();
extern void _ZN8S40C4_nt4v346Ev();
extern void _ZN8S40C4_nt4v347Ev();
extern void _ZN8S40C4_nt4v348Ev();
extern void _ZN8S40C4_nt4v349Ev();
extern void _ZN8S40C4_nt4v350Ev();
extern void _ZN8S40C4_nt4v351Ev();
extern void _ZN8S40C4_nt4v352Ev();
extern void _ZN8S40C4_nt4v353Ev();
extern void _ZN8S40C4_nt4v354Ev();
extern void _ZN8S40C4_nt4v355Ev();
extern void _ZN8S40C4_nt4v356Ev();
extern void _ZN8S40C4_nt4v357Ev();
extern void _ZN8S40C4_nt4v358Ev();
extern void _ZN8S40C3_nt4v359Ev();
extern void _ZN8S40C3_nt4v360Ev();
extern void _ZN8S40C3_nt4v361Ev();
extern void _ZN8S40C2_nt4v362Ev();
extern void _ZN8S40C2_nt4v363Ev();
extern void _ZN8S40C2_nt4v364Ev();
extern void _ZN8S40C2_nt4v365Ev();
extern void _ZN8S40C2_nt4v366Ev();
extern void _ZN8S40C2_nt4v367Ev();
extern void _ZN8S40C2_nt4v368Ev();
extern void _ZN8S40C2_nt4v369Ev();
extern void _ZN8S40C2_nt4v370Ev();
extern void _ZN8S40C2_nt4v371Ev();
extern void _ZN8S40C2_nt4v372Ev();
extern void _ZN8S40C2_nt4v373Ev();
extern void _ZN8S40C2_nt4v374Ev();
extern void _ZN8S40C2_nt4v375Ev();
extern void _ZN8S40C2_nt4v376Ev();
extern void _ZN8S40C2_nt4v377Ev();
extern void _ZN8S40C2_nt4v378Ev();
extern void _ZN8S40C2_nt4v379Ev();
extern void _ZN8S40C2_nt4v380Ev();
extern void _ZN8S40C2_nt4v381Ev();
extern void _ZN8S40C2_nt4v382Ev();
extern void _ZN8S40C2_nt4v383Ev();
extern void _ZN8S40C2_nt4v384Ev();
extern void _ZN8S40C2_nt4v385Ev();
extern void _ZN8S40C2_nt4v386Ev();
extern void _ZN8S40C2_nt4v387Ev();
extern void _ZN8S40C2_nt4v388Ev();
extern void _ZN8S40C2_nt4v389Ev();
extern void _ZN8S40C2_nt4v390Ev();
extern void _ZN5S40C12v1Ev();
extern void _ZN5S40C12v2Ev();
extern void _ZN5S40C12v3Ev();
extern void _ZN5S40C12v4Ev();
extern void _ZN5S40C12v5Ev();
extern void _ZN5S40C12v6Ev();
extern void _ZN5S40C12v7Ev();
static  VTBL_ENTRY vtc_S40C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S40C1[0]),
  (VTBL_ENTRY)&_ZN5S40C1D1Ev,
  (VTBL_ENTRY)&_ZN5S40C1D0Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S40C8_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S40C7_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v223Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v224Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v225Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v226Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v227Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v228Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v229Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v230Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v231Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v232Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v233Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v234Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v235Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v236Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v237Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v238Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v239Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v240Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v241Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v242Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v243Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v244Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v245Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v246Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v247Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v248Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v249Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v250Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v251Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v252Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v253Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v254Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v255Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v256Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v257Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v258Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v259Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v260Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v261Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v262Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v263Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v264Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v265Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v266Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v267Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v268Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v269Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v270Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v271Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v272Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v273Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v274Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v275Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v276Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v277Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v278Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v279Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v280Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v281Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v282Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v283Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v284Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v285Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v286Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v287Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v288Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v289Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v290Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v291Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v292Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v293Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v294Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v295Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v296Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v297Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v298Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v299Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v300Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v301Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v302Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v303Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v304Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v305Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v306Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v307Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v308Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v309Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v310Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v311Ev,
  (VTBL_ENTRY)&_ZN8S40C6_nt4v312Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v313Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v314Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v315Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v316Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v317Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v318Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v319Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v320Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v321Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v322Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v323Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v324Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v325Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v326Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v327Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v328Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v329Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v330Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v331Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v332Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v333Ev,
  (VTBL_ENTRY)&_ZN8S40C5_nt4v334Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v335Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v336Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v337Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v338Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v339Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v340Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v341Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v342Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v343Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v344Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v345Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v346Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v347Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v348Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v349Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v350Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v351Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v352Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v353Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v354Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v355Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v356Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v357Ev,
  (VTBL_ENTRY)&_ZN8S40C4_nt4v358Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v359Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v360Ev,
  (VTBL_ENTRY)&_ZN8S40C3_nt4v361Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v362Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v363Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v364Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v365Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v366Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v367Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v368Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v369Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v370Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v371Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v372Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v373Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v374Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v375Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v376Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v377Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v378Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v379Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v380Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v381Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v382Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v383Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v384Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v385Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v386Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v387Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v388Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v389Ev,
  (VTBL_ENTRY)&_ZN8S40C2_nt4v390Ev,
  (VTBL_ENTRY)&_ZN5S40C12v1Ev,
  (VTBL_ENTRY)&_ZN5S40C12v2Ev,
  (VTBL_ENTRY)&_ZN5S40C12v3Ev,
  (VTBL_ENTRY)&_ZN5S40C12v4Ev,
  (VTBL_ENTRY)&_ZN5S40C12v5Ev,
  (VTBL_ENTRY)&_ZN5S40C12v6Ev,
  (VTBL_ENTRY)&_ZN5S40C12v7Ev,
};
extern VTBL_ENTRY _ZTI5S40C1[];
extern  VTBL_ENTRY _ZTV5S40C1[];
Class_Descriptor cd_S40C1 = {  "S40C1", // class name
  bases_S40C1, 7,
  &(vtc_S40C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3264,2524), // object size
  NSPAIRA(_ZTI5S40C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S40C1),394, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S77C7  {
  int s77c7f0;
  __tsi64 s77c7f1;
  void *s77c7f2[4];
  int s77c7f3[2];
  void *s77c7f4;
  ::S40C9_nt s77c7f5;
  void *s77c7f6[2];
  virtual  ~S77C7(); // _ZN5S77C7D1Ev
  virtual void  v4(); // _ZN5S77C72v4Ev
  virtual void  v5(); // _ZN5S77C72v5Ev
  virtual void  v6(); // _ZN5S77C72v6Ev
  virtual void  v7(); // _ZN5S77C72v7Ev
  virtual void  v8(); // _ZN5S77C72v8Ev
  virtual void  v9(); // _ZN5S77C72v9Ev
  virtual void  v10(); // _ZN5S77C73v10Ev
  virtual void  v11(); // _ZN5S77C73v11Ev
  virtual void  v12(); // _ZN5S77C73v12Ev
  virtual void  v13(); // _ZN5S77C73v13Ev
  virtual void  v14(); // _ZN5S77C73v14Ev
  virtual void  v15(); // _ZN5S77C73v15Ev
  virtual void  v16(); // _ZN5S77C73v16Ev
  virtual void  v17(); // _ZN5S77C73v17Ev
  virtual void  v18(); // _ZN5S77C73v18Ev
  virtual void  v19(); // _ZN5S77C73v19Ev
  virtual void  v20(); // _ZN5S77C73v20Ev
  virtual void  v21(); // _ZN5S77C73v21Ev
  virtual void  v22(); // _ZN5S77C73v22Ev
  virtual void  v23(); // _ZN5S77C73v23Ev
  virtual void  v24(); // _ZN5S77C73v24Ev
  virtual void  v25(); // _ZN5S77C73v25Ev
  virtual void  v26(); // _ZN5S77C73v26Ev
  virtual void  v27(); // _ZN5S77C73v27Ev
  virtual void  v28(); // _ZN5S77C73v28Ev
  virtual void  v29(); // _ZN5S77C73v29Ev
  virtual void  v30(); // _ZN5S77C73v30Ev
  virtual void  v31(); // _ZN5S77C73v31Ev
  virtual void  v32(); // _ZN5S77C73v32Ev
  virtual void  v33(); // _ZN5S77C73v33Ev
  virtual void  v34(); // _ZN5S77C73v34Ev
  virtual void  v35(); // _ZN5S77C73v35Ev
  virtual void  v36(); // _ZN5S77C73v36Ev
  virtual void  v37(); // _ZN5S77C73v37Ev
  virtual void  v38(); // _ZN5S77C73v38Ev
  virtual void  v39(); // _ZN5S77C73v39Ev
  virtual void  v40(); // _ZN5S77C73v40Ev
  virtual void  v41(); // _ZN5S77C73v41Ev
  virtual void  v42(); // _ZN5S77C73v42Ev
  virtual void  v43(); // _ZN5S77C73v43Ev
  virtual void  v44(); // _ZN5S77C73v44Ev
  virtual void  v45(); // _ZN5S77C73v45Ev
  virtual void  v46(); // _ZN5S77C73v46Ev
  virtual void  v47(); // _ZN5S77C73v47Ev
  virtual void  v48(); // _ZN5S77C73v48Ev
  virtual void  v49(); // _ZN5S77C73v49Ev
  virtual void  v50(); // _ZN5S77C73v50Ev
  virtual void  v51(); // _ZN5S77C73v51Ev
  virtual void  v52(); // _ZN5S77C73v52Ev
  virtual void  v53(); // _ZN5S77C73v53Ev
  virtual void  v54(); // _ZN5S77C73v54Ev
  virtual void  v55(); // _ZN5S77C73v55Ev
  virtual void  v56(); // _ZN5S77C73v56Ev
  virtual void  v57(); // _ZN5S77C73v57Ev
  virtual void  v58(); // _ZN5S77C73v58Ev
  virtual void  v59(); // _ZN5S77C73v59Ev
  virtual void  v60(); // _ZN5S77C73v60Ev
  virtual void  v61(); // _ZN5S77C73v61Ev
  virtual void  v62(); // _ZN5S77C73v62Ev
  virtual void  v63(); // _ZN5S77C73v63Ev
  virtual void  v64(); // _ZN5S77C73v64Ev
  virtual void  v65(); // _ZN5S77C73v65Ev
  virtual void  v66(); // _ZN5S77C73v66Ev
  virtual void  v67(); // _ZN5S77C73v67Ev
  S77C7(); // tgen
};
//SIG(-1 S77C7) 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]}


 S77C7 ::~S77C7(){ note_dtor("S77C7", this);}
void  S77C7 ::v4(){vfunc_called(this, "_ZN5S77C72v4Ev");}
void  S77C7 ::v5(){vfunc_called(this, "_ZN5S77C72v5Ev");}
void  S77C7 ::v6(){vfunc_called(this, "_ZN5S77C72v6Ev");}
void  S77C7 ::v7(){vfunc_called(this, "_ZN5S77C72v7Ev");}
void  S77C7 ::v8(){vfunc_called(this, "_ZN5S77C72v8Ev");}
void  S77C7 ::v9(){vfunc_called(this, "_ZN5S77C72v9Ev");}
void  S77C7 ::v10(){vfunc_called(this, "_ZN5S77C73v10Ev");}
void  S77C7 ::v11(){vfunc_called(this, "_ZN5S77C73v11Ev");}
void  S77C7 ::v12(){vfunc_called(this, "_ZN5S77C73v12Ev");}
void  S77C7 ::v13(){vfunc_called(this, "_ZN5S77C73v13Ev");}
void  S77C7 ::v14(){vfunc_called(this, "_ZN5S77C73v14Ev");}
void  S77C7 ::v15(){vfunc_called(this, "_ZN5S77C73v15Ev");}
void  S77C7 ::v16(){vfunc_called(this, "_ZN5S77C73v16Ev");}
void  S77C7 ::v17(){vfunc_called(this, "_ZN5S77C73v17Ev");}
void  S77C7 ::v18(){vfunc_called(this, "_ZN5S77C73v18Ev");}
void  S77C7 ::v19(){vfunc_called(this, "_ZN5S77C73v19Ev");}
void  S77C7 ::v20(){vfunc_called(this, "_ZN5S77C73v20Ev");}
void  S77C7 ::v21(){vfunc_called(this, "_ZN5S77C73v21Ev");}
void  S77C7 ::v22(){vfunc_called(this, "_ZN5S77C73v22Ev");}
void  S77C7 ::v23(){vfunc_called(this, "_ZN5S77C73v23Ev");}
void  S77C7 ::v24(){vfunc_called(this, "_ZN5S77C73v24Ev");}
void  S77C7 ::v25(){vfunc_called(this, "_ZN5S77C73v25Ev");}
void  S77C7 ::v26(){vfunc_called(this, "_ZN5S77C73v26Ev");}
void  S77C7 ::v27(){vfunc_called(this, "_ZN5S77C73v27Ev");}
void  S77C7 ::v28(){vfunc_called(this, "_ZN5S77C73v28Ev");}
void  S77C7 ::v29(){vfunc_called(this, "_ZN5S77C73v29Ev");}
void  S77C7 ::v30(){vfunc_called(this, "_ZN5S77C73v30Ev");}
void  S77C7 ::v31(){vfunc_called(this, "_ZN5S77C73v31Ev");}
void  S77C7 ::v32(){vfunc_called(this, "_ZN5S77C73v32Ev");}
void  S77C7 ::v33(){vfunc_called(this, "_ZN5S77C73v33Ev");}
void  S77C7 ::v34(){vfunc_called(this, "_ZN5S77C73v34Ev");}
void  S77C7 ::v35(){vfunc_called(this, "_ZN5S77C73v35Ev");}
void  S77C7 ::v36(){vfunc_called(this, "_ZN5S77C73v36Ev");}
void  S77C7 ::v37(){vfunc_called(this, "_ZN5S77C73v37Ev");}
void  S77C7 ::v38(){vfunc_called(this, "_ZN5S77C73v38Ev");}
void  S77C7 ::v39(){vfunc_called(this, "_ZN5S77C73v39Ev");}
void  S77C7 ::v40(){vfunc_called(this, "_ZN5S77C73v40Ev");}
void  S77C7 ::v41(){vfunc_called(this, "_ZN5S77C73v41Ev");}
void  S77C7 ::v42(){vfunc_called(this, "_ZN5S77C73v42Ev");}
void  S77C7 ::v43(){vfunc_called(this, "_ZN5S77C73v43Ev");}
void  S77C7 ::v44(){vfunc_called(this, "_ZN5S77C73v44Ev");}
void  S77C7 ::v45(){vfunc_called(this, "_ZN5S77C73v45Ev");}
void  S77C7 ::v46(){vfunc_called(this, "_ZN5S77C73v46Ev");}
void  S77C7 ::v47(){vfunc_called(this, "_ZN5S77C73v47Ev");}
void  S77C7 ::v48(){vfunc_called(this, "_ZN5S77C73v48Ev");}
void  S77C7 ::v49(){vfunc_called(this, "_ZN5S77C73v49Ev");}
void  S77C7 ::v50(){vfunc_called(this, "_ZN5S77C73v50Ev");}
void  S77C7 ::v51(){vfunc_called(this, "_ZN5S77C73v51Ev");}
void  S77C7 ::v52(){vfunc_called(this, "_ZN5S77C73v52Ev");}
void  S77C7 ::v53(){vfunc_called(this, "_ZN5S77C73v53Ev");}
void  S77C7 ::v54(){vfunc_called(this, "_ZN5S77C73v54Ev");}
void  S77C7 ::v55(){vfunc_called(this, "_ZN5S77C73v55Ev");}
void  S77C7 ::v56(){vfunc_called(this, "_ZN5S77C73v56Ev");}
void  S77C7 ::v57(){vfunc_called(this, "_ZN5S77C73v57Ev");}
void  S77C7 ::v58(){vfunc_called(this, "_ZN5S77C73v58Ev");}
void  S77C7 ::v59(){vfunc_called(this, "_ZN5S77C73v59Ev");}
void  S77C7 ::v60(){vfunc_called(this, "_ZN5S77C73v60Ev");}
void  S77C7 ::v61(){vfunc_called(this, "_ZN5S77C73v61Ev");}
void  S77C7 ::v62(){vfunc_called(this, "_ZN5S77C73v62Ev");}
void  S77C7 ::v63(){vfunc_called(this, "_ZN5S77C73v63Ev");}
void  S77C7 ::v64(){vfunc_called(this, "_ZN5S77C73v64Ev");}
void  S77C7 ::v65(){vfunc_called(this, "_ZN5S77C73v65Ev");}
void  S77C7 ::v66(){vfunc_called(this, "_ZN5S77C73v66Ev");}
void  S77C7 ::v67(){vfunc_called(this, "_ZN5S77C73v67Ev");}
S77C7 ::S77C7(){ note_ctor("S77C7", this);} // tgen

static void Test_S77C7()
{
  extern Class_Descriptor cd_S77C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S77C7, buf);
    S77C7 *dp, &lv = *(dp=new (buf) S77C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S77C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C7)");
    check_field_offset(lv, s77c7f0, ABISELECT(8,4), "S77C7.s77c7f0");
    check_field_offset(lv, s77c7f1, ABISELECT(16,8), "S77C7.s77c7f1");
    check_field_offset(lv, s77c7f2, ABISELECT(24,16), "S77C7.s77c7f2");
    check_field_offset(lv, s77c7f3, ABISELECT(56,32), "S77C7.s77c7f3");
    check_field_offset(lv, s77c7f4, ABISELECT(64,40), "S77C7.s77c7f4");
    check_field_offset(lv, s77c7f5, ABISELECT(72,44), "S77C7.s77c7f5");
    check_field_offset(lv, s77c7f6, ABISELECT(80,52), "S77C7.s77c7f6");
    test_class_info(&lv, &cd_S77C7);
    dp->~S77C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C7(Test_S77C7, "S77C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S77C7C1Ev();
extern void _ZN5S77C7D1Ev();
Name_Map name_map_S77C7[] = {
  NSPAIR(_ZN5S77C7C1Ev),
  NSPAIR(_ZN5S77C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S77C7[];
extern void _ZN5S77C7D1Ev();
extern void _ZN5S77C7D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
static  VTBL_ENTRY vtc_S77C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C7[0]),
  (VTBL_ENTRY)&_ZN5S77C7D1Ev,
  (VTBL_ENTRY)&_ZN5S77C7D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
};
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
Class_Descriptor cd_S77C7 = {  "S77C7", // class name
  0,0,//no base classes
  &(vtc_S77C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S77C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S77C7),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  S77C13_nt  {
  void  mf77c13(); // _ZN9S77C13_nt7mf77c13Ev
};
//SIG(-1 S77C13_nt) C1{ m}


void  S77C13_nt ::mf77c13(){}

//skip512 S77C13_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S77C13_nt[];
VTBL_ENTRY *P__ZTI9S77C13_nt = _ZTI9S77C13_nt; 
Class_Descriptor cd_S77C13_nt = {  "S77C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S77C13_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  S77C6_nt  : S77C7 {
  int s77c6f0[2];
  void *s77c6f1;
  int s77c6f2[2];
  ::S40C26_nt s77c6f3;
  ::S40C26_nt s77c6f4;
  ::S77C13_nt s77c6f5;
  ::S40C26_nt s77c6f6;
  unsigned int s77c6f7:1;
  unsigned int s77c6f8:1;
  unsigned int s77c6f9:1;
  unsigned int s77c6f10:1;
  unsigned int s77c6f11:1;
  int s77c6f12[2];
  virtual  ~S77C6_nt(); // _ZN8S77C6_ntD1Ev
  virtual void  v68(); // _ZN8S77C6_nt3v68Ev
  virtual void  v69(); // _ZN8S77C6_nt3v69Ev
  virtual void  v70(); // _ZN8S77C6_nt3v70Ev
  virtual void  v71(); // _ZN8S77C6_nt3v71Ev
  virtual void  v72(); // _ZN8S77C6_nt3v72Ev
  virtual void  v73(); // _ZN8S77C6_nt3v73Ev
  virtual void  v74(); // _ZN8S77C6_nt3v74Ev
  virtual void  v75(); // _ZN8S77C6_nt3v75Ev
  virtual void  v76(); // _ZN8S77C6_nt3v76Ev
  virtual void  v77(); // _ZN8S77C6_nt3v77Ev
  virtual void  v78(); // _ZN8S77C6_nt3v78Ev
  virtual void  v79(); // _ZN8S77C6_nt3v79Ev
  virtual void  v80(); // _ZN8S77C6_nt3v80Ev
  virtual void  v81(); // _ZN8S77C6_nt3v81Ev
  virtual void  v82(); // _ZN8S77C6_nt3v82Ev
  virtual void  v83(); // _ZN8S77C6_nt3v83Ev
  virtual void  v84(); // _ZN8S77C6_nt3v84Ev
  virtual void  v85(); // _ZN8S77C6_nt3v85Ev
  virtual void  v86(); // _ZN8S77C6_nt3v86Ev
  virtual void  v87(); // _ZN8S77C6_nt3v87Ev
  virtual void  v88(); // _ZN8S77C6_nt3v88Ev
  virtual void  v89(); // _ZN8S77C6_nt3v89Ev
  S77C6_nt(); // tgen
};
//SIG(-1 S77C6_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]}


 S77C6_nt ::~S77C6_nt(){ note_dtor("S77C6_nt", this);}
void  S77C6_nt ::v68(){vfunc_called(this, "_ZN8S77C6_nt3v68Ev");}
void  S77C6_nt ::v69(){vfunc_called(this, "_ZN8S77C6_nt3v69Ev");}
void  S77C6_nt ::v70(){vfunc_called(this, "_ZN8S77C6_nt3v70Ev");}
void  S77C6_nt ::v71(){vfunc_called(this, "_ZN8S77C6_nt3v71Ev");}
void  S77C6_nt ::v72(){vfunc_called(this, "_ZN8S77C6_nt3v72Ev");}
void  S77C6_nt ::v73(){vfunc_called(this, "_ZN8S77C6_nt3v73Ev");}
void  S77C6_nt ::v74(){vfunc_called(this, "_ZN8S77C6_nt3v74Ev");}
void  S77C6_nt ::v75(){vfunc_called(this, "_ZN8S77C6_nt3v75Ev");}
void  S77C6_nt ::v76(){vfunc_called(this, "_ZN8S77C6_nt3v76Ev");}
void  S77C6_nt ::v77(){vfunc_called(this, "_ZN8S77C6_nt3v77Ev");}
void  S77C6_nt ::v78(){vfunc_called(this, "_ZN8S77C6_nt3v78Ev");}
void  S77C6_nt ::v79(){vfunc_called(this, "_ZN8S77C6_nt3v79Ev");}
void  S77C6_nt ::v80(){vfunc_called(this, "_ZN8S77C6_nt3v80Ev");}
void  S77C6_nt ::v81(){vfunc_called(this, "_ZN8S77C6_nt3v81Ev");}
void  S77C6_nt ::v82(){vfunc_called(this, "_ZN8S77C6_nt3v82Ev");}
void  S77C6_nt ::v83(){vfunc_called(this, "_ZN8S77C6_nt3v83Ev");}
void  S77C6_nt ::v84(){vfunc_called(this, "_ZN8S77C6_nt3v84Ev");}
void  S77C6_nt ::v85(){vfunc_called(this, "_ZN8S77C6_nt3v85Ev");}
void  S77C6_nt ::v86(){vfunc_called(this, "_ZN8S77C6_nt3v86Ev");}
void  S77C6_nt ::v87(){vfunc_called(this, "_ZN8S77C6_nt3v87Ev");}
void  S77C6_nt ::v88(){vfunc_called(this, "_ZN8S77C6_nt3v88Ev");}
void  S77C6_nt ::v89(){vfunc_called(this, "_ZN8S77C6_nt3v89Ev");}
S77C6_nt ::S77C6_nt(){ note_ctor("S77C6_nt", this);} // tgen

//skip512 S77C6_nt

#else // __cplusplus

extern void _ZN8S77C6_ntC1Ev();
extern void _ZN8S77C6_ntD1Ev();
Name_Map name_map_S77C6_nt[] = {
  NSPAIR(_ZN8S77C6_ntC1Ev),
  NSPAIR(_ZN8S77C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
static Base_Class bases_S77C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S77C6_nt[];
extern void _ZN8S77C6_ntD1Ev();
extern void _ZN8S77C6_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
static  VTBL_ENTRY vtc_S77C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI8S77C6_nt[];
VTBL_ENTRY *P__ZTI8S77C6_nt = _ZTI8S77C6_nt; 
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
Class_Descriptor cd_S77C6_nt = {  "S77C6_nt", // class name
  bases_S77C6_nt, 1,
  &(vtc_S77C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI8S77C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C6_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  S77C5_nt  : S77C6_nt {
  unsigned int s77c5f0:1;
  unsigned int s77c5f1:1;
  unsigned int s77c5f2:1;
  ::S40C80 s77c5f3;
  ::S40C76 s77c5f4;
  ::S40C71 s77c5f5;
  ::S40C66 s77c5f6;
  int s77c5f7[3];
  virtual  ~S77C5_nt(); // _ZN8S77C5_ntD1Ev
  virtual void  v90(); // _ZN8S77C5_nt3v90Ev
  virtual void  v91(); // _ZN8S77C5_nt3v91Ev
  virtual void  v92(); // _ZN8S77C5_nt3v92Ev
  virtual void  v93(); // _ZN8S77C5_nt3v93Ev
  virtual void  v94(); // _ZN8S77C5_nt3v94Ev
  virtual void  v95(); // _ZN8S77C5_nt3v95Ev
  virtual void  v96(); // _ZN8S77C5_nt3v96Ev
  virtual void  v97(); // _ZN8S77C5_nt3v97Ev
  virtual void  v98(); // _ZN8S77C5_nt3v98Ev
  virtual void  v99(); // _ZN8S77C5_nt3v99Ev
  virtual void  v100(); // _ZN8S77C5_nt4v100Ev
  virtual void  v101(); // _ZN8S77C5_nt4v101Ev
  virtual void  v102(); // _ZN8S77C5_nt4v102Ev
  virtual void  v103(); // _ZN8S77C5_nt4v103Ev
  virtual void  v104(); // _ZN8S77C5_nt4v104Ev
  virtual void  v105(); // _ZN8S77C5_nt4v105Ev
  virtual void  v106(); // _ZN8S77C5_nt4v106Ev
  virtual void  v107(); // _ZN8S77C5_nt4v107Ev
  virtual void  v108(); // _ZN8S77C5_nt4v108Ev
  virtual void  v109(); // _ZN8S77C5_nt4v109Ev
  S77C5_nt(); // tgen
};
//SIG(-1 S77C5_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]}


 S77C5_nt ::~S77C5_nt(){ note_dtor("S77C5_nt", this);}
void  S77C5_nt ::v90(){vfunc_called(this, "_ZN8S77C5_nt3v90Ev");}
void  S77C5_nt ::v91(){vfunc_called(this, "_ZN8S77C5_nt3v91Ev");}
void  S77C5_nt ::v92(){vfunc_called(this, "_ZN8S77C5_nt3v92Ev");}
void  S77C5_nt ::v93(){vfunc_called(this, "_ZN8S77C5_nt3v93Ev");}
void  S77C5_nt ::v94(){vfunc_called(this, "_ZN8S77C5_nt3v94Ev");}
void  S77C5_nt ::v95(){vfunc_called(this, "_ZN8S77C5_nt3v95Ev");}
void  S77C5_nt ::v96(){vfunc_called(this, "_ZN8S77C5_nt3v96Ev");}
void  S77C5_nt ::v97(){vfunc_called(this, "_ZN8S77C5_nt3v97Ev");}
void  S77C5_nt ::v98(){vfunc_called(this, "_ZN8S77C5_nt3v98Ev");}
void  S77C5_nt ::v99(){vfunc_called(this, "_ZN8S77C5_nt3v99Ev");}
void  S77C5_nt ::v100(){vfunc_called(this, "_ZN8S77C5_nt4v100Ev");}
void  S77C5_nt ::v101(){vfunc_called(this, "_ZN8S77C5_nt4v101Ev");}
void  S77C5_nt ::v102(){vfunc_called(this, "_ZN8S77C5_nt4v102Ev");}
void  S77C5_nt ::v103(){vfunc_called(this, "_ZN8S77C5_nt4v103Ev");}
void  S77C5_nt ::v104(){vfunc_called(this, "_ZN8S77C5_nt4v104Ev");}
void  S77C5_nt ::v105(){vfunc_called(this, "_ZN8S77C5_nt4v105Ev");}
void  S77C5_nt ::v106(){vfunc_called(this, "_ZN8S77C5_nt4v106Ev");}
void  S77C5_nt ::v107(){vfunc_called(this, "_ZN8S77C5_nt4v107Ev");}
void  S77C5_nt ::v108(){vfunc_called(this, "_ZN8S77C5_nt4v108Ev");}
void  S77C5_nt ::v109(){vfunc_called(this, "_ZN8S77C5_nt4v109Ev");}
S77C5_nt ::S77C5_nt(){ note_ctor("S77C5_nt", this);} // tgen

//skip512 S77C5_nt

#else // __cplusplus

extern void _ZN8S77C5_ntC1Ev();
extern void _ZN8S77C5_ntD1Ev();
Name_Map name_map_S77C5_nt[] = {
  NSPAIR(_ZN8S77C5_ntC1Ev),
  NSPAIR(_ZN8S77C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
static Base_Class bases_S77C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S77C5_nt[];
extern void _ZN8S77C5_ntD1Ev();
extern void _ZN8S77C5_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
static  VTBL_ENTRY vtc_S77C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI8S77C5_nt[];
VTBL_ENTRY *P__ZTI8S77C5_nt = _ZTI8S77C5_nt; 
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
Class_Descriptor cd_S77C5_nt = {  "S77C5_nt", // class name
  bases_S77C5_nt, 2,
  &(vtc_S77C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI8S77C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C5_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  S77C4_nt  : S77C5_nt {
  ::S40C9_nt s77c4f0;
  unsigned int s77c4f1:1;
  ::S40C62 s77c4f2;
  virtual  ~S77C4_nt(); // _ZN8S77C4_ntD1Ev
  virtual void  v110(); // _ZN8S77C4_nt4v110Ev
  virtual void  v111(); // _ZN8S77C4_nt4v111Ev
  virtual void  v112(); // _ZN8S77C4_nt4v112Ev
  virtual void  v113(); // _ZN8S77C4_nt4v113Ev
  S77C4_nt(); // tgen
};
//SIG(-1 S77C4_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 FC19{ BC20{ BC9}}}


 S77C4_nt ::~S77C4_nt(){ note_dtor("S77C4_nt", this);}
void  S77C4_nt ::v110(){vfunc_called(this, "_ZN8S77C4_nt4v110Ev");}
void  S77C4_nt ::v111(){vfunc_called(this, "_ZN8S77C4_nt4v111Ev");}
void  S77C4_nt ::v112(){vfunc_called(this, "_ZN8S77C4_nt4v112Ev");}
void  S77C4_nt ::v113(){vfunc_called(this, "_ZN8S77C4_nt4v113Ev");}
S77C4_nt ::S77C4_nt(){ note_ctor("S77C4_nt", this);} // tgen

//skip512 S77C4_nt

#else // __cplusplus

extern void _ZN8S77C4_ntC1Ev();
extern void _ZN8S77C4_ntD1Ev();
Name_Map name_map_S77C4_nt[] = {
  NSPAIR(_ZN8S77C4_ntC1Ev),
  NSPAIR(_ZN8S77C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
static Base_Class bases_S77C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S77C4_nt[];
extern void _ZN8S77C4_ntD1Ev();
extern void _ZN8S77C4_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
static  VTBL_ENTRY vtc_S77C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI8S77C4_nt[];
VTBL_ENTRY *P__ZTI8S77C4_nt = _ZTI8S77C4_nt; 
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
Class_Descriptor cd_S77C4_nt = {  "S77C4_nt", // class name
  bases_S77C4_nt, 3,
  &(vtc_S77C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI8S77C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C4_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  S77C3_nt  : S77C4_nt {
  int s77c3f0;
  unsigned int s77c3f1:1;
  virtual  ~S77C3_nt(); // _ZN8S77C3_ntD1Ev
  virtual void  v114(); // _ZN8S77C3_nt4v114Ev
  virtual void  v115(); // _ZN8S77C3_nt4v115Ev
  virtual void  v116(); // _ZN8S77C3_nt4v116Ev
  virtual void  v117(); // _ZN8S77C3_nt4v117Ev
  virtual void  v118(); // _ZN8S77C3_nt4v118Ev
  virtual void  v119(); // _ZN8S77C3_nt4v119Ev
  virtual void  v120(); // _ZN8S77C3_nt4v120Ev
  virtual void  v121(); // _ZN8S77C3_nt4v121Ev
  S77C3_nt(); // tgen
};
//SIG(-1 S77C3_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 FC20{ BC21{ BC10}}} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S77C3_nt ::~S77C3_nt(){ note_dtor("S77C3_nt", this);}
void  S77C3_nt ::v114(){vfunc_called(this, "_ZN8S77C3_nt4v114Ev");}
void  S77C3_nt ::v115(){vfunc_called(this, "_ZN8S77C3_nt4v115Ev");}
void  S77C3_nt ::v116(){vfunc_called(this, "_ZN8S77C3_nt4v116Ev");}
void  S77C3_nt ::v117(){vfunc_called(this, "_ZN8S77C3_nt4v117Ev");}
void  S77C3_nt ::v118(){vfunc_called(this, "_ZN8S77C3_nt4v118Ev");}
void  S77C3_nt ::v119(){vfunc_called(this, "_ZN8S77C3_nt4v119Ev");}
void  S77C3_nt ::v120(){vfunc_called(this, "_ZN8S77C3_nt4v120Ev");}
void  S77C3_nt ::v121(){vfunc_called(this, "_ZN8S77C3_nt4v121Ev");}
S77C3_nt ::S77C3_nt(){ note_ctor("S77C3_nt", this);} // tgen

//skip512 S77C3_nt

#else // __cplusplus

extern void _ZN8S77C3_ntC1Ev();
extern void _ZN8S77C3_ntD1Ev();
Name_Map name_map_S77C3_nt[] = {
  NSPAIR(_ZN8S77C3_ntC1Ev),
  NSPAIR(_ZN8S77C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
static Base_Class bases_S77C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S77C3_nt[];
extern void _ZN8S77C3_ntD1Ev();
extern void _ZN8S77C3_ntD0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
static  VTBL_ENTRY vtc_S77C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S77C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S77C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S77C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI8S77C3_nt[];
VTBL_ENTRY *P__ZTI8S77C3_nt = _ZTI8S77C3_nt; 
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
Class_Descriptor cd_S77C3_nt = {  "S77C3_nt", // class name
  bases_S77C3_nt, 4,
  &(vtc_S77C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI8S77C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S77C3_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  S77C2  : S77C3_nt {
  virtual  ~S77C2(); // _ZN5S77C2D1Ev
  virtual void  v122(); // _ZN5S77C24v122Ev
  virtual void  v123(); // _ZN5S77C24v123Ev
  S77C2(); // tgen
};
//SIG(-1 S77C2) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 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 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 Fi:1 Fi:1 Fi:1 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} FC19{ BC20{ BC11}} Fi[3]} vd v109 v110 v111 v112 FC7 Fi:1 FC21{ BC22{ BC11}}} vd v113 v114 v115 v116 v117 v118 v119 v120 Fi Fi:1} vd v1 v2}


 S77C2 ::~S77C2(){ note_dtor("S77C2", this);}
void  S77C2 ::v122(){vfunc_called(this, "_ZN5S77C24v122Ev");}
void  S77C2 ::v123(){vfunc_called(this, "_ZN5S77C24v123Ev");}
S77C2 ::S77C2(){ note_ctor("S77C2", this);} // tgen

static void Test_S77C2()
{
  extern Class_Descriptor cd_S77C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S77C2, buf);
    S77C2 *dp, &lv = *(dp=new (buf) S77C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S77C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C2)");
    check_base_class_offset(lv, (S77C7*)(S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C5_nt*)(S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C4_nt*)(S77C3_nt*), 0, "S77C2");
    check_base_class_offset(lv, (S77C3_nt*), 0, "S77C2");
    test_class_info(&lv, &cd_S77C2);
    dp->~S77C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C2(Test_S77C2, "S77C2", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN5S77C2C1Ev();
extern void _ZN5S77C2D1Ev();
Name_Map name_map_S77C2[] = {
  NSPAIR(_ZN5S77C2C1Ev),
  NSPAIR(_ZN5S77C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
extern Class_Descriptor cd_S77C3_nt;
extern VTBL_ENTRY _ZTI8S77C3_nt[];
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
static Base_Class bases_S77C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S77C2[];
extern void _ZN5S77C2D1Ev();
extern void _ZN5S77C2D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
extern void _ZN5S77C24v122Ev();
extern void _ZN5S77C24v123Ev();
static  VTBL_ENTRY vtc_S77C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C2[0]),
  (VTBL_ENTRY)&_ZN5S77C2D1Ev,
  (VTBL_ENTRY)&_ZN5S77C2D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S77C24v122Ev,
  (VTBL_ENTRY)&_ZN5S77C24v123Ev,
};
extern VTBL_ENTRY _ZTI5S77C2[];
extern  VTBL_ENTRY _ZTV5S77C2[];
Class_Descriptor cd_S77C2 = {  "S77C2", // class name
  bases_S77C2, 5,
  &(vtc_S77C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI5S77C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S77C2),124, //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  S77C1  : S77C2 {
  virtual  ~S77C1(); // _ZN5S77C1D1Ev
  virtual void  v1(); // _ZN5S77C12v1Ev
  virtual void  v2(); // _ZN5S77C12v2Ev
  virtual void  v3(); // _ZN5S77C12v3Ev
  S77C1(); // tgen
};
//SIG(1 S77C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC9{ BC10{ BC11{ BC12{ m Fp Fi[2]}}}} FC9 FC13{ m} FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC14{ BC15{ BC12}} FC16{ BC17{ BC12}} FC18{ BC19{ BC12}} FC20{ BC21{ BC12}} Fi[3]} vd v110 v111 v112 v113 FC8 Fi:1 FC22{ BC23{ BC12}}} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v122 v123} vd v1 v2 v3}


 S77C1 ::~S77C1(){ note_dtor("S77C1", this);}
void  S77C1 ::v1(){vfunc_called(this, "_ZN5S77C12v1Ev");}
void  S77C1 ::v2(){vfunc_called(this, "_ZN5S77C12v2Ev");}
void  S77C1 ::v3(){vfunc_called(this, "_ZN5S77C12v3Ev");}
S77C1 ::S77C1(){ note_ctor("S77C1", this);} // tgen

static void Test_S77C1()
{
  extern Class_Descriptor cd_S77C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S77C1, buf);
    S77C1 *dp, &lv = *(dp=new (buf) S77C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S77C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S77C1)");
    check_base_class_offset(lv, (S77C7*)(S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C6_nt*)(S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C5_nt*)(S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C4_nt*)(S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C3_nt*)(S77C2*), 0, "S77C1");
    check_base_class_offset(lv, (S77C2*), 0, "S77C1");
    test_class_info(&lv, &cd_S77C1);
    dp->~S77C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS77C1(Test_S77C1, "S77C1", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN5S77C1C1Ev();
extern void _ZN5S77C1D1Ev();
Name_Map name_map_S77C1[] = {
  NSPAIR(_ZN5S77C1C1Ev),
  NSPAIR(_ZN5S77C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C7;
extern VTBL_ENTRY _ZTI5S77C7[];
extern  VTBL_ENTRY _ZTV5S77C7[];
extern Class_Descriptor cd_S77C6_nt;
extern VTBL_ENTRY _ZTI8S77C6_nt[];
extern  VTBL_ENTRY _ZTV8S77C6_nt[];
extern Class_Descriptor cd_S77C5_nt;
extern VTBL_ENTRY _ZTI8S77C5_nt[];
extern  VTBL_ENTRY _ZTV8S77C5_nt[];
extern Class_Descriptor cd_S77C4_nt;
extern VTBL_ENTRY _ZTI8S77C4_nt[];
extern  VTBL_ENTRY _ZTV8S77C4_nt[];
extern Class_Descriptor cd_S77C3_nt;
extern VTBL_ENTRY _ZTI8S77C3_nt[];
extern  VTBL_ENTRY _ZTV8S77C3_nt[];
extern Class_Descriptor cd_S77C2;
extern VTBL_ENTRY _ZTI5S77C2[];
extern  VTBL_ENTRY _ZTV5S77C2[];
static Base_Class bases_S77C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S77C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S77C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S77C1[];
extern void _ZN5S77C1D1Ev();
extern void _ZN5S77C1D0Ev();
extern void _ZN5S77C72v4Ev();
extern void _ZN5S77C72v5Ev();
extern void _ZN5S77C72v6Ev();
extern void _ZN5S77C72v7Ev();
extern void _ZN5S77C72v8Ev();
extern void _ZN5S77C72v9Ev();
extern void _ZN5S77C73v10Ev();
extern void _ZN5S77C73v11Ev();
extern void _ZN5S77C73v12Ev();
extern void _ZN5S77C73v13Ev();
extern void _ZN5S77C73v14Ev();
extern void _ZN5S77C73v15Ev();
extern void _ZN5S77C73v16Ev();
extern void _ZN5S77C73v17Ev();
extern void _ZN5S77C73v18Ev();
extern void _ZN5S77C73v19Ev();
extern void _ZN5S77C73v20Ev();
extern void _ZN5S77C73v21Ev();
extern void _ZN5S77C73v22Ev();
extern void _ZN5S77C73v23Ev();
extern void _ZN5S77C73v24Ev();
extern void _ZN5S77C73v25Ev();
extern void _ZN5S77C73v26Ev();
extern void _ZN5S77C73v27Ev();
extern void _ZN5S77C73v28Ev();
extern void _ZN5S77C73v29Ev();
extern void _ZN5S77C73v30Ev();
extern void _ZN5S77C73v31Ev();
extern void _ZN5S77C73v32Ev();
extern void _ZN5S77C73v33Ev();
extern void _ZN5S77C73v34Ev();
extern void _ZN5S77C73v35Ev();
extern void _ZN5S77C73v36Ev();
extern void _ZN5S77C73v37Ev();
extern void _ZN5S77C73v38Ev();
extern void _ZN5S77C73v39Ev();
extern void _ZN5S77C73v40Ev();
extern void _ZN5S77C73v41Ev();
extern void _ZN5S77C73v42Ev();
extern void _ZN5S77C73v43Ev();
extern void _ZN5S77C73v44Ev();
extern void _ZN5S77C73v45Ev();
extern void _ZN5S77C73v46Ev();
extern void _ZN5S77C73v47Ev();
extern void _ZN5S77C73v48Ev();
extern void _ZN5S77C73v49Ev();
extern void _ZN5S77C73v50Ev();
extern void _ZN5S77C73v51Ev();
extern void _ZN5S77C73v52Ev();
extern void _ZN5S77C73v53Ev();
extern void _ZN5S77C73v54Ev();
extern void _ZN5S77C73v55Ev();
extern void _ZN5S77C73v56Ev();
extern void _ZN5S77C73v57Ev();
extern void _ZN5S77C73v58Ev();
extern void _ZN5S77C73v59Ev();
extern void _ZN5S77C73v60Ev();
extern void _ZN5S77C73v61Ev();
extern void _ZN5S77C73v62Ev();
extern void _ZN5S77C73v63Ev();
extern void _ZN5S77C73v64Ev();
extern void _ZN5S77C73v65Ev();
extern void _ZN5S77C73v66Ev();
extern void _ZN5S77C73v67Ev();
extern void _ZN8S77C6_nt3v68Ev();
extern void _ZN8S77C6_nt3v69Ev();
extern void _ZN8S77C6_nt3v70Ev();
extern void _ZN8S77C6_nt3v71Ev();
extern void _ZN8S77C6_nt3v72Ev();
extern void _ZN8S77C6_nt3v73Ev();
extern void _ZN8S77C6_nt3v74Ev();
extern void _ZN8S77C6_nt3v75Ev();
extern void _ZN8S77C6_nt3v76Ev();
extern void _ZN8S77C6_nt3v77Ev();
extern void _ZN8S77C6_nt3v78Ev();
extern void _ZN8S77C6_nt3v79Ev();
extern void _ZN8S77C6_nt3v80Ev();
extern void _ZN8S77C6_nt3v81Ev();
extern void _ZN8S77C6_nt3v82Ev();
extern void _ZN8S77C6_nt3v83Ev();
extern void _ZN8S77C6_nt3v84Ev();
extern void _ZN8S77C6_nt3v85Ev();
extern void _ZN8S77C6_nt3v86Ev();
extern void _ZN8S77C6_nt3v87Ev();
extern void _ZN8S77C6_nt3v88Ev();
extern void _ZN8S77C6_nt3v89Ev();
extern void _ZN8S77C5_nt3v90Ev();
extern void _ZN8S77C5_nt3v91Ev();
extern void _ZN8S77C5_nt3v92Ev();
extern void _ZN8S77C5_nt3v93Ev();
extern void _ZN8S77C5_nt3v94Ev();
extern void _ZN8S77C5_nt3v95Ev();
extern void _ZN8S77C5_nt3v96Ev();
extern void _ZN8S77C5_nt3v97Ev();
extern void _ZN8S77C5_nt3v98Ev();
extern void _ZN8S77C5_nt3v99Ev();
extern void _ZN8S77C5_nt4v100Ev();
extern void _ZN8S77C5_nt4v101Ev();
extern void _ZN8S77C5_nt4v102Ev();
extern void _ZN8S77C5_nt4v103Ev();
extern void _ZN8S77C5_nt4v104Ev();
extern void _ZN8S77C5_nt4v105Ev();
extern void _ZN8S77C5_nt4v106Ev();
extern void _ZN8S77C5_nt4v107Ev();
extern void _ZN8S77C5_nt4v108Ev();
extern void _ZN8S77C5_nt4v109Ev();
extern void _ZN8S77C4_nt4v110Ev();
extern void _ZN8S77C4_nt4v111Ev();
extern void _ZN8S77C4_nt4v112Ev();
extern void _ZN8S77C4_nt4v113Ev();
extern void _ZN8S77C3_nt4v114Ev();
extern void _ZN8S77C3_nt4v115Ev();
extern void _ZN8S77C3_nt4v116Ev();
extern void _ZN8S77C3_nt4v117Ev();
extern void _ZN8S77C3_nt4v118Ev();
extern void _ZN8S77C3_nt4v119Ev();
extern void _ZN8S77C3_nt4v120Ev();
extern void _ZN8S77C3_nt4v121Ev();
extern void _ZN5S77C24v122Ev();
extern void _ZN5S77C24v123Ev();
extern void _ZN5S77C12v1Ev();
extern void _ZN5S77C12v2Ev();
extern void _ZN5S77C12v3Ev();
static  VTBL_ENTRY vtc_S77C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S77C1[0]),
  (VTBL_ENTRY)&_ZN5S77C1D1Ev,
  (VTBL_ENTRY)&_ZN5S77C1D0Ev,
  (VTBL_ENTRY)&_ZN5S77C72v4Ev,
  (VTBL_ENTRY)&_ZN5S77C72v5Ev,
  (VTBL_ENTRY)&_ZN5S77C72v6Ev,
  (VTBL_ENTRY)&_ZN5S77C72v7Ev,
  (VTBL_ENTRY)&_ZN5S77C72v8Ev,
  (VTBL_ENTRY)&_ZN5S77C72v9Ev,
  (VTBL_ENTRY)&_ZN5S77C73v10Ev,
  (VTBL_ENTRY)&_ZN5S77C73v11Ev,
  (VTBL_ENTRY)&_ZN5S77C73v12Ev,
  (VTBL_ENTRY)&_ZN5S77C73v13Ev,
  (VTBL_ENTRY)&_ZN5S77C73v14Ev,
  (VTBL_ENTRY)&_ZN5S77C73v15Ev,
  (VTBL_ENTRY)&_ZN5S77C73v16Ev,
  (VTBL_ENTRY)&_ZN5S77C73v17Ev,
  (VTBL_ENTRY)&_ZN5S77C73v18Ev,
  (VTBL_ENTRY)&_ZN5S77C73v19Ev,
  (VTBL_ENTRY)&_ZN5S77C73v20Ev,
  (VTBL_ENTRY)&_ZN5S77C73v21Ev,
  (VTBL_ENTRY)&_ZN5S77C73v22Ev,
  (VTBL_ENTRY)&_ZN5S77C73v23Ev,
  (VTBL_ENTRY)&_ZN5S77C73v24Ev,
  (VTBL_ENTRY)&_ZN5S77C73v25Ev,
  (VTBL_ENTRY)&_ZN5S77C73v26Ev,
  (VTBL_ENTRY)&_ZN5S77C73v27Ev,
  (VTBL_ENTRY)&_ZN5S77C73v28Ev,
  (VTBL_ENTRY)&_ZN5S77C73v29Ev,
  (VTBL_ENTRY)&_ZN5S77C73v30Ev,
  (VTBL_ENTRY)&_ZN5S77C73v31Ev,
  (VTBL_ENTRY)&_ZN5S77C73v32Ev,
  (VTBL_ENTRY)&_ZN5S77C73v33Ev,
  (VTBL_ENTRY)&_ZN5S77C73v34Ev,
  (VTBL_ENTRY)&_ZN5S77C73v35Ev,
  (VTBL_ENTRY)&_ZN5S77C73v36Ev,
  (VTBL_ENTRY)&_ZN5S77C73v37Ev,
  (VTBL_ENTRY)&_ZN5S77C73v38Ev,
  (VTBL_ENTRY)&_ZN5S77C73v39Ev,
  (VTBL_ENTRY)&_ZN5S77C73v40Ev,
  (VTBL_ENTRY)&_ZN5S77C73v41Ev,
  (VTBL_ENTRY)&_ZN5S77C73v42Ev,
  (VTBL_ENTRY)&_ZN5S77C73v43Ev,
  (VTBL_ENTRY)&_ZN5S77C73v44Ev,
  (VTBL_ENTRY)&_ZN5S77C73v45Ev,
  (VTBL_ENTRY)&_ZN5S77C73v46Ev,
  (VTBL_ENTRY)&_ZN5S77C73v47Ev,
  (VTBL_ENTRY)&_ZN5S77C73v48Ev,
  (VTBL_ENTRY)&_ZN5S77C73v49Ev,
  (VTBL_ENTRY)&_ZN5S77C73v50Ev,
  (VTBL_ENTRY)&_ZN5S77C73v51Ev,
  (VTBL_ENTRY)&_ZN5S77C73v52Ev,
  (VTBL_ENTRY)&_ZN5S77C73v53Ev,
  (VTBL_ENTRY)&_ZN5S77C73v54Ev,
  (VTBL_ENTRY)&_ZN5S77C73v55Ev,
  (VTBL_ENTRY)&_ZN5S77C73v56Ev,
  (VTBL_ENTRY)&_ZN5S77C73v57Ev,
  (VTBL_ENTRY)&_ZN5S77C73v58Ev,
  (VTBL_ENTRY)&_ZN5S77C73v59Ev,
  (VTBL_ENTRY)&_ZN5S77C73v60Ev,
  (VTBL_ENTRY)&_ZN5S77C73v61Ev,
  (VTBL_ENTRY)&_ZN5S77C73v62Ev,
  (VTBL_ENTRY)&_ZN5S77C73v63Ev,
  (VTBL_ENTRY)&_ZN5S77C73v64Ev,
  (VTBL_ENTRY)&_ZN5S77C73v65Ev,
  (VTBL_ENTRY)&_ZN5S77C73v66Ev,
  (VTBL_ENTRY)&_ZN5S77C73v67Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S77C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S77C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S77C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S77C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S77C24v122Ev,
  (VTBL_ENTRY)&_ZN5S77C24v123Ev,
  (VTBL_ENTRY)&_ZN5S77C12v1Ev,
  (VTBL_ENTRY)&_ZN5S77C12v2Ev,
  (VTBL_ENTRY)&_ZN5S77C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S77C1[];
extern  VTBL_ENTRY _ZTV5S77C1[];
Class_Descriptor cd_S77C1 = {  "S77C1", // class name
  bases_S77C1, 6,
  &(vtc_S77C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI5S77C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S77C1),127, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S580C5  {
  int s580c5f0;
  __tsi64 s580c5f1;
  void *s580c5f2[4];
  int s580c5f3[2];
  void *s580c5f4;
  ::S40C9_nt s580c5f5;
  void *s580c5f6[2];
  virtual  ~S580C5(); // _ZN6S580C5D1Ev
  virtual void  v4(); // _ZN6S580C52v4Ev
  virtual void  v5(); // _ZN6S580C52v5Ev
  virtual void  v6(); // _ZN6S580C52v6Ev
  virtual void  v7(); // _ZN6S580C52v7Ev
  virtual void  v8(); // _ZN6S580C52v8Ev
  virtual void  v9(); // _ZN6S580C52v9Ev
  virtual void  v10(); // _ZN6S580C53v10Ev
  virtual void  v11(); // _ZN6S580C53v11Ev
  virtual void  v12(); // _ZN6S580C53v12Ev
  virtual void  v13(); // _ZN6S580C53v13Ev
  virtual void  v14(); // _ZN6S580C53v14Ev
  virtual void  v15(); // _ZN6S580C53v15Ev
  virtual void  v16(); // _ZN6S580C53v16Ev
  virtual void  v17(); // _ZN6S580C53v17Ev
  virtual void  v18(); // _ZN6S580C53v18Ev
  virtual void  v19(); // _ZN6S580C53v19Ev
  virtual void  v20(); // _ZN6S580C53v20Ev
  virtual void  v21(); // _ZN6S580C53v21Ev
  virtual void  v22(); // _ZN6S580C53v22Ev
  virtual void  v23(); // _ZN6S580C53v23Ev
  virtual void  v24(); // _ZN6S580C53v24Ev
  virtual void  v25(); // _ZN6S580C53v25Ev
  virtual void  v26(); // _ZN6S580C53v26Ev
  virtual void  v27(); // _ZN6S580C53v27Ev
  virtual void  v28(); // _ZN6S580C53v28Ev
  virtual void  v29(); // _ZN6S580C53v29Ev
  virtual void  v30(); // _ZN6S580C53v30Ev
  virtual void  v31(); // _ZN6S580C53v31Ev
  virtual void  v32(); // _ZN6S580C53v32Ev
  virtual void  v33(); // _ZN6S580C53v33Ev
  virtual void  v34(); // _ZN6S580C53v34Ev
  virtual void  v35(); // _ZN6S580C53v35Ev
  virtual void  v36(); // _ZN6S580C53v36Ev
  virtual void  v37(); // _ZN6S580C53v37Ev
  virtual void  v38(); // _ZN6S580C53v38Ev
  virtual void  v39(); // _ZN6S580C53v39Ev
  virtual void  v40(); // _ZN6S580C53v40Ev
  virtual void  v41(); // _ZN6S580C53v41Ev
  virtual void  v42(); // _ZN6S580C53v42Ev
  virtual void  v43(); // _ZN6S580C53v43Ev
  virtual void  v44(); // _ZN6S580C53v44Ev
  virtual void  v45(); // _ZN6S580C53v45Ev
  virtual void  v46(); // _ZN6S580C53v46Ev
  virtual void  v47(); // _ZN6S580C53v47Ev
  virtual void  v48(); // _ZN6S580C53v48Ev
  virtual void  v49(); // _ZN6S580C53v49Ev
  virtual void  v50(); // _ZN6S580C53v50Ev
  virtual void  v51(); // _ZN6S580C53v51Ev
  virtual void  v52(); // _ZN6S580C53v52Ev
  virtual void  v53(); // _ZN6S580C53v53Ev
  virtual void  v54(); // _ZN6S580C53v54Ev
  virtual void  v55(); // _ZN6S580C53v55Ev
  virtual void  v56(); // _ZN6S580C53v56Ev
  virtual void  v57(); // _ZN6S580C53v57Ev
  virtual void  v58(); // _ZN6S580C53v58Ev
  virtual void  v59(); // _ZN6S580C53v59Ev
  virtual void  v60(); // _ZN6S580C53v60Ev
  virtual void  v61(); // _ZN6S580C53v61Ev
  virtual void  v62(); // _ZN6S580C53v62Ev
  virtual void  v63(); // _ZN6S580C53v63Ev
  virtual void  v64(); // _ZN6S580C53v64Ev
  virtual void  v65(); // _ZN6S580C53v65Ev
  virtual void  v66(); // _ZN6S580C53v66Ev
  virtual void  v67(); // _ZN6S580C53v67Ev
  S580C5(); // tgen
};
//SIG(-1 S580C5) 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]}


 S580C5 ::~S580C5(){ note_dtor("S580C5", this);}
void  S580C5 ::v4(){vfunc_called(this, "_ZN6S580C52v4Ev");}
void  S580C5 ::v5(){vfunc_called(this, "_ZN6S580C52v5Ev");}
void  S580C5 ::v6(){vfunc_called(this, "_ZN6S580C52v6Ev");}
void  S580C5 ::v7(){vfunc_called(this, "_ZN6S580C52v7Ev");}
void  S580C5 ::v8(){vfunc_called(this, "_ZN6S580C52v8Ev");}
void  S580C5 ::v9(){vfunc_called(this, "_ZN6S580C52v9Ev");}
void  S580C5 ::v10(){vfunc_called(this, "_ZN6S580C53v10Ev");}
void  S580C5 ::v11(){vfunc_called(this, "_ZN6S580C53v11Ev");}
void  S580C5 ::v12(){vfunc_called(this, "_ZN6S580C53v12Ev");}
void  S580C5 ::v13(){vfunc_called(this, "_ZN6S580C53v13Ev");}
void  S580C5 ::v14(){vfunc_called(this, "_ZN6S580C53v14Ev");}
void  S580C5 ::v15(){vfunc_called(this, "_ZN6S580C53v15Ev");}
void  S580C5 ::v16(){vfunc_called(this, "_ZN6S580C53v16Ev");}
void  S580C5 ::v17(){vfunc_called(this, "_ZN6S580C53v17Ev");}
void  S580C5 ::v18(){vfunc_called(this, "_ZN6S580C53v18Ev");}
void  S580C5 ::v19(){vfunc_called(this, "_ZN6S580C53v19Ev");}
void  S580C5 ::v20(){vfunc_called(this, "_ZN6S580C53v20Ev");}
void  S580C5 ::v21(){vfunc_called(this, "_ZN6S580C53v21Ev");}
void  S580C5 ::v22(){vfunc_called(this, "_ZN6S580C53v22Ev");}
void  S580C5 ::v23(){vfunc_called(this, "_ZN6S580C53v23Ev");}
void  S580C5 ::v24(){vfunc_called(this, "_ZN6S580C53v24Ev");}
void  S580C5 ::v25(){vfunc_called(this, "_ZN6S580C53v25Ev");}
void  S580C5 ::v26(){vfunc_called(this, "_ZN6S580C53v26Ev");}
void  S580C5 ::v27(){vfunc_called(this, "_ZN6S580C53v27Ev");}
void  S580C5 ::v28(){vfunc_called(this, "_ZN6S580C53v28Ev");}
void  S580C5 ::v29(){vfunc_called(this, "_ZN6S580C53v29Ev");}
void  S580C5 ::v30(){vfunc_called(this, "_ZN6S580C53v30Ev");}
void  S580C5 ::v31(){vfunc_called(this, "_ZN6S580C53v31Ev");}
void  S580C5 ::v32(){vfunc_called(this, "_ZN6S580C53v32Ev");}
void  S580C5 ::v33(){vfunc_called(this, "_ZN6S580C53v33Ev");}
void  S580C5 ::v34(){vfunc_called(this, "_ZN6S580C53v34Ev");}
void  S580C5 ::v35(){vfunc_called(this, "_ZN6S580C53v35Ev");}
void  S580C5 ::v36(){vfunc_called(this, "_ZN6S580C53v36Ev");}
void  S580C5 ::v37(){vfunc_called(this, "_ZN6S580C53v37Ev");}
void  S580C5 ::v38(){vfunc_called(this, "_ZN6S580C53v38Ev");}
void  S580C5 ::v39(){vfunc_called(this, "_ZN6S580C53v39Ev");}
void  S580C5 ::v40(){vfunc_called(this, "_ZN6S580C53v40Ev");}
void  S580C5 ::v41(){vfunc_called(this, "_ZN6S580C53v41Ev");}
void  S580C5 ::v42(){vfunc_called(this, "_ZN6S580C53v42Ev");}
void  S580C5 ::v43(){vfunc_called(this, "_ZN6S580C53v43Ev");}
void  S580C5 ::v44(){vfunc_called(this, "_ZN6S580C53v44Ev");}
void  S580C5 ::v45(){vfunc_called(this, "_ZN6S580C53v45Ev");}
void  S580C5 ::v46(){vfunc_called(this, "_ZN6S580C53v46Ev");}
void  S580C5 ::v47(){vfunc_called(this, "_ZN6S580C53v47Ev");}
void  S580C5 ::v48(){vfunc_called(this, "_ZN6S580C53v48Ev");}
void  S580C5 ::v49(){vfunc_called(this, "_ZN6S580C53v49Ev");}
void  S580C5 ::v50(){vfunc_called(this, "_ZN6S580C53v50Ev");}
void  S580C5 ::v51(){vfunc_called(this, "_ZN6S580C53v51Ev");}
void  S580C5 ::v52(){vfunc_called(this, "_ZN6S580C53v52Ev");}
void  S580C5 ::v53(){vfunc_called(this, "_ZN6S580C53v53Ev");}
void  S580C5 ::v54(){vfunc_called(this, "_ZN6S580C53v54Ev");}
void  S580C5 ::v55(){vfunc_called(this, "_ZN6S580C53v55Ev");}
void  S580C5 ::v56(){vfunc_called(this, "_ZN6S580C53v56Ev");}
void  S580C5 ::v57(){vfunc_called(this, "_ZN6S580C53v57Ev");}
void  S580C5 ::v58(){vfunc_called(this, "_ZN6S580C53v58Ev");}
void  S580C5 ::v59(){vfunc_called(this, "_ZN6S580C53v59Ev");}
void  S580C5 ::v60(){vfunc_called(this, "_ZN6S580C53v60Ev");}
void  S580C5 ::v61(){vfunc_called(this, "_ZN6S580C53v61Ev");}
void  S580C5 ::v62(){vfunc_called(this, "_ZN6S580C53v62Ev");}
void  S580C5 ::v63(){vfunc_called(this, "_ZN6S580C53v63Ev");}
void  S580C5 ::v64(){vfunc_called(this, "_ZN6S580C53v64Ev");}
void  S580C5 ::v65(){vfunc_called(this, "_ZN6S580C53v65Ev");}
void  S580C5 ::v66(){vfunc_called(this, "_ZN6S580C53v66Ev");}
void  S580C5 ::v67(){vfunc_called(this, "_ZN6S580C53v67Ev");}
S580C5 ::S580C5(){ note_ctor("S580C5", this);} // tgen

static void Test_S580C5()
{
  extern Class_Descriptor cd_S580C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S580C5, buf);
    S580C5 *dp, &lv = *(dp=new (buf) S580C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S580C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C5)");
    check_field_offset(lv, s580c5f0, ABISELECT(8,4), "S580C5.s580c5f0");
    check_field_offset(lv, s580c5f1, ABISELECT(16,8), "S580C5.s580c5f1");
    check_field_offset(lv, s580c5f2, ABISELECT(24,16), "S580C5.s580c5f2");
    check_field_offset(lv, s580c5f3, ABISELECT(56,32), "S580C5.s580c5f3");
    check_field_offset(lv, s580c5f4, ABISELECT(64,40), "S580C5.s580c5f4");
    check_field_offset(lv, s580c5f5, ABISELECT(72,44), "S580C5.s580c5f5");
    check_field_offset(lv, s580c5f6, ABISELECT(80,52), "S580C5.s580c5f6");
    test_class_info(&lv, &cd_S580C5);
    dp->~S580C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C5(Test_S580C5, "S580C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S580C5C1Ev();
extern void _ZN6S580C5D1Ev();
Name_Map name_map_S580C5[] = {
  NSPAIR(_ZN6S580C5C1Ev),
  NSPAIR(_ZN6S580C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S580C5[];
extern void _ZN6S580C5D1Ev();
extern void _ZN6S580C5D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
static  VTBL_ENTRY vtc_S580C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C5[0]),
  (VTBL_ENTRY)&_ZN6S580C5D1Ev,
  (VTBL_ENTRY)&_ZN6S580C5D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
Class_Descriptor cd_S580C5 = {  "S580C5", // class name
  0,0,//no base classes
  &(vtc_S580C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S580C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S580C5),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  S580C4  : S580C5 {
  int s580c4f0[2];
  void *s580c4f1;
  int s580c4f2[2];
  ::S40C26_nt s580c4f3;
  ::S40C26_nt s580c4f4;
  ::S77C13_nt s580c4f5;
  ::S40C26_nt s580c4f6;
  unsigned int s580c4f7:1;
  unsigned int s580c4f8:1;
  unsigned int s580c4f9:1;
  unsigned int s580c4f10:1;
  unsigned int s580c4f11:1;
  int s580c4f12[2];
  virtual  ~S580C4(); // _ZN6S580C4D1Ev
  virtual void  v68(); // _ZN6S580C43v68Ev
  virtual void  v69(); // _ZN6S580C43v69Ev
  virtual void  v70(); // _ZN6S580C43v70Ev
  virtual void  v71(); // _ZN6S580C43v71Ev
  virtual void  v72(); // _ZN6S580C43v72Ev
  virtual void  v73(); // _ZN6S580C43v73Ev
  virtual void  v74(); // _ZN6S580C43v74Ev
  virtual void  v75(); // _ZN6S580C43v75Ev
  virtual void  v76(); // _ZN6S580C43v76Ev
  virtual void  v77(); // _ZN6S580C43v77Ev
  virtual void  v78(); // _ZN6S580C43v78Ev
  virtual void  v79(); // _ZN6S580C43v79Ev
  virtual void  v80(); // _ZN6S580C43v80Ev
  virtual void  v81(); // _ZN6S580C43v81Ev
  virtual void  v82(); // _ZN6S580C43v82Ev
  virtual void  v83(); // _ZN6S580C43v83Ev
  virtual void  v84(); // _ZN6S580C43v84Ev
  virtual void  v85(); // _ZN6S580C43v85Ev
  virtual void  v86(); // _ZN6S580C43v86Ev
  virtual void  v87(); // _ZN6S580C43v87Ev
  virtual void  v88(); // _ZN6S580C43v88Ev
  virtual void  v89(); // _ZN6S580C43v89Ev
  S580C4(); // tgen
};
//SIG(-1 S580C4) 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]}


 S580C4 ::~S580C4(){ note_dtor("S580C4", this);}
void  S580C4 ::v68(){vfunc_called(this, "_ZN6S580C43v68Ev");}
void  S580C4 ::v69(){vfunc_called(this, "_ZN6S580C43v69Ev");}
void  S580C4 ::v70(){vfunc_called(this, "_ZN6S580C43v70Ev");}
void  S580C4 ::v71(){vfunc_called(this, "_ZN6S580C43v71Ev");}
void  S580C4 ::v72(){vfunc_called(this, "_ZN6S580C43v72Ev");}
void  S580C4 ::v73(){vfunc_called(this, "_ZN6S580C43v73Ev");}
void  S580C4 ::v74(){vfunc_called(this, "_ZN6S580C43v74Ev");}
void  S580C4 ::v75(){vfunc_called(this, "_ZN6S580C43v75Ev");}
void  S580C4 ::v76(){vfunc_called(this, "_ZN6S580C43v76Ev");}
void  S580C4 ::v77(){vfunc_called(this, "_ZN6S580C43v77Ev");}
void  S580C4 ::v78(){vfunc_called(this, "_ZN6S580C43v78Ev");}
void  S580C4 ::v79(){vfunc_called(this, "_ZN6S580C43v79Ev");}
void  S580C4 ::v80(){vfunc_called(this, "_ZN6S580C43v80Ev");}
void  S580C4 ::v81(){vfunc_called(this, "_ZN6S580C43v81Ev");}
void  S580C4 ::v82(){vfunc_called(this, "_ZN6S580C43v82Ev");}
void  S580C4 ::v83(){vfunc_called(this, "_ZN6S580C43v83Ev");}
void  S580C4 ::v84(){vfunc_called(this, "_ZN6S580C43v84Ev");}
void  S580C4 ::v85(){vfunc_called(this, "_ZN6S580C43v85Ev");}
void  S580C4 ::v86(){vfunc_called(this, "_ZN6S580C43v86Ev");}
void  S580C4 ::v87(){vfunc_called(this, "_ZN6S580C43v87Ev");}
void  S580C4 ::v88(){vfunc_called(this, "_ZN6S580C43v88Ev");}
void  S580C4 ::v89(){vfunc_called(this, "_ZN6S580C43v89Ev");}
S580C4 ::S580C4(){ note_ctor("S580C4", this);} // tgen

static void Test_S580C4()
{
  extern Class_Descriptor cd_S580C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S580C4, buf);
    S580C4 *dp, &lv = *(dp=new (buf) S580C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S580C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C4)");
    check_base_class_offset(lv, (S580C5*), 0, "S580C4");
    check_field_offset(lv, s580c4f0, ABISELECT(96,60), "S580C4.s580c4f0");
    check_field_offset(lv, s580c4f1, ABISELECT(104,68), "S580C4.s580c4f1");
    check_field_offset(lv, s580c4f2, ABISELECT(112,72), "S580C4.s580c4f2");
    check_field_offset(lv, s580c4f3, ABISELECT(120,80), "S580C4.s580c4f3");
    check_field_offset(lv, s580c4f4, ABISELECT(136,92), "S580C4.s580c4f4");
    check_field_offset(lv, s580c4f5, ABISELECT(152,104), "S580C4.s580c4f5");
    check_field_offset(lv, s580c4f6, ABISELECT(160,108), "S580C4.s580c4f6");
    set_bf_and_test(lv, s580c4f7, ABISELECT(176,120), 0, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f8, ABISELECT(176,120), 1, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f9, ABISELECT(176,120), 2, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f10, ABISELECT(176,120), 3, 1, 1, "S580C4");
    set_bf_and_test(lv, s580c4f11, ABISELECT(176,120), 4, 1, 1, "S580C4");
    check_field_offset(lv, s580c4f12, ABISELECT(180,124), "S580C4.s580c4f12");
    test_class_info(&lv, &cd_S580C4);
    dp->~S580C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C4(Test_S580C4, "S580C4", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S580C4C1Ev();
extern void _ZN6S580C4D1Ev();
Name_Map name_map_S580C4[] = {
  NSPAIR(_ZN6S580C4C1Ev),
  NSPAIR(_ZN6S580C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
static Base_Class bases_S580C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI6S580C4[];
extern void _ZN6S580C4D1Ev();
extern void _ZN6S580C4D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
static  VTBL_ENTRY vtc_S580C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C4[0]),
  (VTBL_ENTRY)&_ZN6S580C4D1Ev,
  (VTBL_ENTRY)&_ZN6S580C4D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
};
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
Class_Descriptor cd_S580C4 = {  "S580C4", // class name
  bases_S580C4, 1,
  &(vtc_S580C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S580C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C4),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  S580C3  : S580C4 {
  unsigned int s580c3f0:1;
  unsigned int s580c3f1:1;
  unsigned int s580c3f2:1;
  ::S40C80 s580c3f3;
  ::S40C76 s580c3f4;
  ::S40C71 s580c3f5;
  ::S40C66 s580c3f6;
  int s580c3f7[3];
  virtual  ~S580C3(); // _ZN6S580C3D1Ev
  virtual void  v90(); // _ZN6S580C33v90Ev
  virtual void  v91(); // _ZN6S580C33v91Ev
  virtual void  v92(); // _ZN6S580C33v92Ev
  virtual void  v93(); // _ZN6S580C33v93Ev
  virtual void  v94(); // _ZN6S580C33v94Ev
  virtual void  v95(); // _ZN6S580C33v95Ev
  virtual void  v96(); // _ZN6S580C33v96Ev
  virtual void  v97(); // _ZN6S580C33v97Ev
  virtual void  v98(); // _ZN6S580C33v98Ev
  virtual void  v99(); // _ZN6S580C33v99Ev
  virtual void  v100(); // _ZN6S580C34v100Ev
  virtual void  v101(); // _ZN6S580C34v101Ev
  virtual void  v102(); // _ZN6S580C34v102Ev
  virtual void  v103(); // _ZN6S580C34v103Ev
  virtual void  v104(); // _ZN6S580C34v104Ev
  virtual void  v105(); // _ZN6S580C34v105Ev
  virtual void  v106(); // _ZN6S580C34v106Ev
  virtual void  v107(); // _ZN6S580C34v107Ev
  virtual void  v108(); // _ZN6S580C34v108Ev
  virtual void  v109(); // _ZN6S580C34v109Ev
  S580C3(); // tgen
};
//SIG(-1 S580C3) 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]}


 S580C3 ::~S580C3(){ note_dtor("S580C3", this);}
void  S580C3 ::v90(){vfunc_called(this, "_ZN6S580C33v90Ev");}
void  S580C3 ::v91(){vfunc_called(this, "_ZN6S580C33v91Ev");}
void  S580C3 ::v92(){vfunc_called(this, "_ZN6S580C33v92Ev");}
void  S580C3 ::v93(){vfunc_called(this, "_ZN6S580C33v93Ev");}
void  S580C3 ::v94(){vfunc_called(this, "_ZN6S580C33v94Ev");}
void  S580C3 ::v95(){vfunc_called(this, "_ZN6S580C33v95Ev");}
void  S580C3 ::v96(){vfunc_called(this, "_ZN6S580C33v96Ev");}
void  S580C3 ::v97(){vfunc_called(this, "_ZN6S580C33v97Ev");}
void  S580C3 ::v98(){vfunc_called(this, "_ZN6S580C33v98Ev");}
void  S580C3 ::v99(){vfunc_called(this, "_ZN6S580C33v99Ev");}
void  S580C3 ::v100(){vfunc_called(this, "_ZN6S580C34v100Ev");}
void  S580C3 ::v101(){vfunc_called(this, "_ZN6S580C34v101Ev");}
void  S580C3 ::v102(){vfunc_called(this, "_ZN6S580C34v102Ev");}
void  S580C3 ::v103(){vfunc_called(this, "_ZN6S580C34v103Ev");}
void  S580C3 ::v104(){vfunc_called(this, "_ZN6S580C34v104Ev");}
void  S580C3 ::v105(){vfunc_called(this, "_ZN6S580C34v105Ev");}
void  S580C3 ::v106(){vfunc_called(this, "_ZN6S580C34v106Ev");}
void  S580C3 ::v107(){vfunc_called(this, "_ZN6S580C34v107Ev");}
void  S580C3 ::v108(){vfunc_called(this, "_ZN6S580C34v108Ev");}
void  S580C3 ::v109(){vfunc_called(this, "_ZN6S580C34v109Ev");}
S580C3 ::S580C3(){ note_ctor("S580C3", this);} // tgen

static void Test_S580C3()
{
  extern Class_Descriptor cd_S580C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S580C3, buf);
    S580C3 *dp, &lv = *(dp=new (buf) S580C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S580C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C3)");
    check_base_class_offset(lv, (S580C5*)(S580C4*), 0, "S580C3");
    check_base_class_offset(lv, (S580C4*), 0, "S580C3");
    set_bf_and_test(lv, s580c3f0, ABISELECT(188,132), 0, 1, 1, "S580C3");
    set_bf_and_test(lv, s580c3f1, ABISELECT(188,132), 1, 1, 1, "S580C3");
    set_bf_and_test(lv, s580c3f2, ABISELECT(188,132), 2, 1, 1, "S580C3");
    check_field_offset(lv, s580c3f3, ABISELECT(192,136), "S580C3.s580c3f3");
    check_field_offset(lv, s580c3f4, ABISELECT(208,148), "S580C3.s580c3f4");
    check_field_offset(lv, s580c3f5, ABISELECT(224,160), "S580C3.s580c3f5");
    check_field_offset(lv, s580c3f6, ABISELECT(240,172), "S580C3.s580c3f6");
    check_field_offset(lv, s580c3f7, ABISELECT(256,184), "S580C3.s580c3f7");
    test_class_info(&lv, &cd_S580C3);
    dp->~S580C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C3(Test_S580C3, "S580C3", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S580C3C1Ev();
extern void _ZN6S580C3D1Ev();
Name_Map name_map_S580C3[] = {
  NSPAIR(_ZN6S580C3C1Ev),
  NSPAIR(_ZN6S580C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
static Base_Class bases_S580C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S580C3[];
extern void _ZN6S580C3D1Ev();
extern void _ZN6S580C3D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
static  VTBL_ENTRY vtc_S580C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C3[0]),
  (VTBL_ENTRY)&_ZN6S580C3D1Ev,
  (VTBL_ENTRY)&_ZN6S580C3D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
};
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
Class_Descriptor cd_S580C3 = {  "S580C3", // class name
  bases_S580C3, 2,
  &(vtc_S580C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S580C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C3),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  S580C2  : S580C3 {
  ::S40C9_nt s580c2f0;
  unsigned int s580c2f1:1;
  ::S40C62 s580c2f2;
  virtual  ~S580C2(); // _ZN6S580C2D1Ev
  virtual void  v110(); // _ZN6S580C24v110Ev
  virtual void  v111(); // _ZN6S580C24v111Ev
  virtual void  v112(); // _ZN6S580C24v112Ev
  virtual void  v113(); // _ZN6S580C24v113Ev
  S580C2(); // tgen
};
//SIG(-1 S580C2) 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 FC19{ BC20{ BC9}}}


 S580C2 ::~S580C2(){ note_dtor("S580C2", this);}
void  S580C2 ::v110(){vfunc_called(this, "_ZN6S580C24v110Ev");}
void  S580C2 ::v111(){vfunc_called(this, "_ZN6S580C24v111Ev");}
void  S580C2 ::v112(){vfunc_called(this, "_ZN6S580C24v112Ev");}
void  S580C2 ::v113(){vfunc_called(this, "_ZN6S580C24v113Ev");}
S580C2 ::S580C2(){ note_ctor("S580C2", this);} // tgen

static void Test_S580C2()
{
  extern Class_Descriptor cd_S580C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S580C2, buf);
    S580C2 *dp, &lv = *(dp=new (buf) S580C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S580C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C2)");
    check_base_class_offset(lv, (S580C5*)(S580C4*)(S580C3*), 0, "S580C2");
    check_base_class_offset(lv, (S580C4*)(S580C3*), 0, "S580C2");
    check_base_class_offset(lv, (S580C3*), 0, "S580C2");
    check_field_offset(lv, s580c2f0, ABISELECT(268,196), "S580C2.s580c2f0");
    set_bf_and_test(lv, s580c2f1, ABISELECT(276,204), 0, 1, 1, "S580C2");
    check_field_offset(lv, s580c2f2, ABISELECT(280,208), "S580C2.s580c2f2");
    test_class_info(&lv, &cd_S580C2);
    dp->~S580C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C2(Test_S580C2, "S580C2", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN6S580C2C1Ev();
extern void _ZN6S580C2D1Ev();
Name_Map name_map_S580C2[] = {
  NSPAIR(_ZN6S580C2C1Ev),
  NSPAIR(_ZN6S580C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
extern Class_Descriptor cd_S580C3;
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
static Base_Class bases_S580C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S580C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S580C2[];
extern void _ZN6S580C2D1Ev();
extern void _ZN6S580C2D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
extern void _ZN6S580C24v110Ev();
extern void _ZN6S580C24v111Ev();
extern void _ZN6S580C24v112Ev();
extern void _ZN6S580C24v113Ev();
static  VTBL_ENTRY vtc_S580C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C2[0]),
  (VTBL_ENTRY)&_ZN6S580C2D1Ev,
  (VTBL_ENTRY)&_ZN6S580C2D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
  (VTBL_ENTRY)&_ZN6S580C24v110Ev,
  (VTBL_ENTRY)&_ZN6S580C24v111Ev,
  (VTBL_ENTRY)&_ZN6S580C24v112Ev,
  (VTBL_ENTRY)&_ZN6S580C24v113Ev,
};
extern VTBL_ENTRY _ZTI6S580C2[];
extern  VTBL_ENTRY _ZTV6S580C2[];
Class_Descriptor cd_S580C2 = {  "S580C2", // class name
  bases_S580C2, 3,
  &(vtc_S580C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI6S580C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C2),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  S580C22_nt  {
  int s580c22f0;
  char s580c22f1;
  int s580c22f2;
  void  mf580c22(); // _ZN10S580C22_nt8mf580c22Ev
};
//SIG(-1 S580C22_nt) C1{ m Fi Fc Fi}


void  S580C22_nt ::mf580c22(){}

//skip512 S580C22_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S580C1  : S580C2 {
  void *s580c1f0;
  ::S580C22_nt s580c1f1;
  virtual  ~S580C1(); // _ZN6S580C1D1Ev
  virtual void  v1(); // _ZN6S580C12v1Ev
  virtual void  v2(); // _ZN6S580C12v2Ev
  virtual void  v3(); // _ZN6S580C12v3Ev
  S580C1(); // tgen
};
//SIG(1 S580C1) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ 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 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 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v110 v111 v112 v113 FC6 Fi:1 FC20{ BC21{ BC10}}} vd v1 v2 v3 Fp FC22{ m Fi Fc Fi}}


 S580C1 ::~S580C1(){ note_dtor("S580C1", this);}
void  S580C1 ::v1(){vfunc_called(this, "_ZN6S580C12v1Ev");}
void  S580C1 ::v2(){vfunc_called(this, "_ZN6S580C12v2Ev");}
void  S580C1 ::v3(){vfunc_called(this, "_ZN6S580C12v3Ev");}
S580C1 ::S580C1(){ note_ctor("S580C1", this);} // tgen

static void Test_S580C1()
{
  extern Class_Descriptor cd_S580C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,60)];
    init_test(&cd_S580C1, buf);
    S580C1 *dp, &lv = *(dp=new (buf) S580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,236), "sizeof(S580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S580C1)");
    check_base_class_offset(lv, (S580C5*)(S580C4*)(S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C4*)(S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C3*)(S580C2*), 0, "S580C1");
    check_base_class_offset(lv, (S580C2*), 0, "S580C1");
    check_field_offset(lv, s580c1f0, ABISELECT(296,220), "S580C1.s580c1f0");
    check_field_offset(lv, s580c1f1, ABISELECT(304,224), "S580C1.s580c1f1");
    test_class_info(&lv, &cd_S580C1);
    dp->~S580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS580C1(Test_S580C1, "S580C1", ABISELECT(320,236));

#else // __cplusplus

extern void _ZN6S580C1C1Ev();
extern void _ZN6S580C1D1Ev();
Name_Map name_map_S580C1[] = {
  NSPAIR(_ZN6S580C1C1Ev),
  NSPAIR(_ZN6S580C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S580C5;
extern VTBL_ENTRY _ZTI6S580C5[];
extern  VTBL_ENTRY _ZTV6S580C5[];
extern Class_Descriptor cd_S580C4;
extern VTBL_ENTRY _ZTI6S580C4[];
extern  VTBL_ENTRY _ZTV6S580C4[];
extern Class_Descriptor cd_S580C3;
extern VTBL_ENTRY _ZTI6S580C3[];
extern  VTBL_ENTRY _ZTV6S580C3[];
extern Class_Descriptor cd_S580C2;
extern VTBL_ENTRY _ZTI6S580C2[];
extern  VTBL_ENTRY _ZTV6S580C2[];
static Base_Class bases_S580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S580C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S580C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S580C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S580C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S580C1[];
extern void _ZN6S580C1D1Ev();
extern void _ZN6S580C1D0Ev();
extern void _ZN6S580C52v4Ev();
extern void _ZN6S580C52v5Ev();
extern void _ZN6S580C52v6Ev();
extern void _ZN6S580C52v7Ev();
extern void _ZN6S580C52v8Ev();
extern void _ZN6S580C52v9Ev();
extern void _ZN6S580C53v10Ev();
extern void _ZN6S580C53v11Ev();
extern void _ZN6S580C53v12Ev();
extern void _ZN6S580C53v13Ev();
extern void _ZN6S580C53v14Ev();
extern void _ZN6S580C53v15Ev();
extern void _ZN6S580C53v16Ev();
extern void _ZN6S580C53v17Ev();
extern void _ZN6S580C53v18Ev();
extern void _ZN6S580C53v19Ev();
extern void _ZN6S580C53v20Ev();
extern void _ZN6S580C53v21Ev();
extern void _ZN6S580C53v22Ev();
extern void _ZN6S580C53v23Ev();
extern void _ZN6S580C53v24Ev();
extern void _ZN6S580C53v25Ev();
extern void _ZN6S580C53v26Ev();
extern void _ZN6S580C53v27Ev();
extern void _ZN6S580C53v28Ev();
extern void _ZN6S580C53v29Ev();
extern void _ZN6S580C53v30Ev();
extern void _ZN6S580C53v31Ev();
extern void _ZN6S580C53v32Ev();
extern void _ZN6S580C53v33Ev();
extern void _ZN6S580C53v34Ev();
extern void _ZN6S580C53v35Ev();
extern void _ZN6S580C53v36Ev();
extern void _ZN6S580C53v37Ev();
extern void _ZN6S580C53v38Ev();
extern void _ZN6S580C53v39Ev();
extern void _ZN6S580C53v40Ev();
extern void _ZN6S580C53v41Ev();
extern void _ZN6S580C53v42Ev();
extern void _ZN6S580C53v43Ev();
extern void _ZN6S580C53v44Ev();
extern void _ZN6S580C53v45Ev();
extern void _ZN6S580C53v46Ev();
extern void _ZN6S580C53v47Ev();
extern void _ZN6S580C53v48Ev();
extern void _ZN6S580C53v49Ev();
extern void _ZN6S580C53v50Ev();
extern void _ZN6S580C53v51Ev();
extern void _ZN6S580C53v52Ev();
extern void _ZN6S580C53v53Ev();
extern void _ZN6S580C53v54Ev();
extern void _ZN6S580C53v55Ev();
extern void _ZN6S580C53v56Ev();
extern void _ZN6S580C53v57Ev();
extern void _ZN6S580C53v58Ev();
extern void _ZN6S580C53v59Ev();
extern void _ZN6S580C53v60Ev();
extern void _ZN6S580C53v61Ev();
extern void _ZN6S580C53v62Ev();
extern void _ZN6S580C53v63Ev();
extern void _ZN6S580C53v64Ev();
extern void _ZN6S580C53v65Ev();
extern void _ZN6S580C53v66Ev();
extern void _ZN6S580C53v67Ev();
extern void _ZN6S580C43v68Ev();
extern void _ZN6S580C43v69Ev();
extern void _ZN6S580C43v70Ev();
extern void _ZN6S580C43v71Ev();
extern void _ZN6S580C43v72Ev();
extern void _ZN6S580C43v73Ev();
extern void _ZN6S580C43v74Ev();
extern void _ZN6S580C43v75Ev();
extern void _ZN6S580C43v76Ev();
extern void _ZN6S580C43v77Ev();
extern void _ZN6S580C43v78Ev();
extern void _ZN6S580C43v79Ev();
extern void _ZN6S580C43v80Ev();
extern void _ZN6S580C43v81Ev();
extern void _ZN6S580C43v82Ev();
extern void _ZN6S580C43v83Ev();
extern void _ZN6S580C43v84Ev();
extern void _ZN6S580C43v85Ev();
extern void _ZN6S580C43v86Ev();
extern void _ZN6S580C43v87Ev();
extern void _ZN6S580C43v88Ev();
extern void _ZN6S580C43v89Ev();
extern void _ZN6S580C33v90Ev();
extern void _ZN6S580C33v91Ev();
extern void _ZN6S580C33v92Ev();
extern void _ZN6S580C33v93Ev();
extern void _ZN6S580C33v94Ev();
extern void _ZN6S580C33v95Ev();
extern void _ZN6S580C33v96Ev();
extern void _ZN6S580C33v97Ev();
extern void _ZN6S580C33v98Ev();
extern void _ZN6S580C33v99Ev();
extern void _ZN6S580C34v100Ev();
extern void _ZN6S580C34v101Ev();
extern void _ZN6S580C34v102Ev();
extern void _ZN6S580C34v103Ev();
extern void _ZN6S580C34v104Ev();
extern void _ZN6S580C34v105Ev();
extern void _ZN6S580C34v106Ev();
extern void _ZN6S580C34v107Ev();
extern void _ZN6S580C34v108Ev();
extern void _ZN6S580C34v109Ev();
extern void _ZN6S580C24v110Ev();
extern void _ZN6S580C24v111Ev();
extern void _ZN6S580C24v112Ev();
extern void _ZN6S580C24v113Ev();
extern void _ZN6S580C12v1Ev();
extern void _ZN6S580C12v2Ev();
extern void _ZN6S580C12v3Ev();
static  VTBL_ENTRY vtc_S580C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S580C1[0]),
  (VTBL_ENTRY)&_ZN6S580C1D1Ev,
  (VTBL_ENTRY)&_ZN6S580C1D0Ev,
  (VTBL_ENTRY)&_ZN6S580C52v4Ev,
  (VTBL_ENTRY)&_ZN6S580C52v5Ev,
  (VTBL_ENTRY)&_ZN6S580C52v6Ev,
  (VTBL_ENTRY)&_ZN6S580C52v7Ev,
  (VTBL_ENTRY)&_ZN6S580C52v8Ev,
  (VTBL_ENTRY)&_ZN6S580C52v9Ev,
  (VTBL_ENTRY)&_ZN6S580C53v10Ev,
  (VTBL_ENTRY)&_ZN6S580C53v11Ev,
  (VTBL_ENTRY)&_ZN6S580C53v12Ev,
  (VTBL_ENTRY)&_ZN6S580C53v13Ev,
  (VTBL_ENTRY)&_ZN6S580C53v14Ev,
  (VTBL_ENTRY)&_ZN6S580C53v15Ev,
  (VTBL_ENTRY)&_ZN6S580C53v16Ev,
  (VTBL_ENTRY)&_ZN6S580C53v17Ev,
  (VTBL_ENTRY)&_ZN6S580C53v18Ev,
  (VTBL_ENTRY)&_ZN6S580C53v19Ev,
  (VTBL_ENTRY)&_ZN6S580C53v20Ev,
  (VTBL_ENTRY)&_ZN6S580C53v21Ev,
  (VTBL_ENTRY)&_ZN6S580C53v22Ev,
  (VTBL_ENTRY)&_ZN6S580C53v23Ev,
  (VTBL_ENTRY)&_ZN6S580C53v24Ev,
  (VTBL_ENTRY)&_ZN6S580C53v25Ev,
  (VTBL_ENTRY)&_ZN6S580C53v26Ev,
  (VTBL_ENTRY)&_ZN6S580C53v27Ev,
  (VTBL_ENTRY)&_ZN6S580C53v28Ev,
  (VTBL_ENTRY)&_ZN6S580C53v29Ev,
  (VTBL_ENTRY)&_ZN6S580C53v30Ev,
  (VTBL_ENTRY)&_ZN6S580C53v31Ev,
  (VTBL_ENTRY)&_ZN6S580C53v32Ev,
  (VTBL_ENTRY)&_ZN6S580C53v33Ev,
  (VTBL_ENTRY)&_ZN6S580C53v34Ev,
  (VTBL_ENTRY)&_ZN6S580C53v35Ev,
  (VTBL_ENTRY)&_ZN6S580C53v36Ev,
  (VTBL_ENTRY)&_ZN6S580C53v37Ev,
  (VTBL_ENTRY)&_ZN6S580C53v38Ev,
  (VTBL_ENTRY)&_ZN6S580C53v39Ev,
  (VTBL_ENTRY)&_ZN6S580C53v40Ev,
  (VTBL_ENTRY)&_ZN6S580C53v41Ev,
  (VTBL_ENTRY)&_ZN6S580C53v42Ev,
  (VTBL_ENTRY)&_ZN6S580C53v43Ev,
  (VTBL_ENTRY)&_ZN6S580C53v44Ev,
  (VTBL_ENTRY)&_ZN6S580C53v45Ev,
  (VTBL_ENTRY)&_ZN6S580C53v46Ev,
  (VTBL_ENTRY)&_ZN6S580C53v47Ev,
  (VTBL_ENTRY)&_ZN6S580C53v48Ev,
  (VTBL_ENTRY)&_ZN6S580C53v49Ev,
  (VTBL_ENTRY)&_ZN6S580C53v50Ev,
  (VTBL_ENTRY)&_ZN6S580C53v51Ev,
  (VTBL_ENTRY)&_ZN6S580C53v52Ev,
  (VTBL_ENTRY)&_ZN6S580C53v53Ev,
  (VTBL_ENTRY)&_ZN6S580C53v54Ev,
  (VTBL_ENTRY)&_ZN6S580C53v55Ev,
  (VTBL_ENTRY)&_ZN6S580C53v56Ev,
  (VTBL_ENTRY)&_ZN6S580C53v57Ev,
  (VTBL_ENTRY)&_ZN6S580C53v58Ev,
  (VTBL_ENTRY)&_ZN6S580C53v59Ev,
  (VTBL_ENTRY)&_ZN6S580C53v60Ev,
  (VTBL_ENTRY)&_ZN6S580C53v61Ev,
  (VTBL_ENTRY)&_ZN6S580C53v62Ev,
  (VTBL_ENTRY)&_ZN6S580C53v63Ev,
  (VTBL_ENTRY)&_ZN6S580C53v64Ev,
  (VTBL_ENTRY)&_ZN6S580C53v65Ev,
  (VTBL_ENTRY)&_ZN6S580C53v66Ev,
  (VTBL_ENTRY)&_ZN6S580C53v67Ev,
  (VTBL_ENTRY)&_ZN6S580C43v68Ev,
  (VTBL_ENTRY)&_ZN6S580C43v69Ev,
  (VTBL_ENTRY)&_ZN6S580C43v70Ev,
  (VTBL_ENTRY)&_ZN6S580C43v71Ev,
  (VTBL_ENTRY)&_ZN6S580C43v72Ev,
  (VTBL_ENTRY)&_ZN6S580C43v73Ev,
  (VTBL_ENTRY)&_ZN6S580C43v74Ev,
  (VTBL_ENTRY)&_ZN6S580C43v75Ev,
  (VTBL_ENTRY)&_ZN6S580C43v76Ev,
  (VTBL_ENTRY)&_ZN6S580C43v77Ev,
  (VTBL_ENTRY)&_ZN6S580C43v78Ev,
  (VTBL_ENTRY)&_ZN6S580C43v79Ev,
  (VTBL_ENTRY)&_ZN6S580C43v80Ev,
  (VTBL_ENTRY)&_ZN6S580C43v81Ev,
  (VTBL_ENTRY)&_ZN6S580C43v82Ev,
  (VTBL_ENTRY)&_ZN6S580C43v83Ev,
  (VTBL_ENTRY)&_ZN6S580C43v84Ev,
  (VTBL_ENTRY)&_ZN6S580C43v85Ev,
  (VTBL_ENTRY)&_ZN6S580C43v86Ev,
  (VTBL_ENTRY)&_ZN6S580C43v87Ev,
  (VTBL_ENTRY)&_ZN6S580C43v88Ev,
  (VTBL_ENTRY)&_ZN6S580C43v89Ev,
  (VTBL_ENTRY)&_ZN6S580C33v90Ev,
  (VTBL_ENTRY)&_ZN6S580C33v91Ev,
  (VTBL_ENTRY)&_ZN6S580C33v92Ev,
  (VTBL_ENTRY)&_ZN6S580C33v93Ev,
  (VTBL_ENTRY)&_ZN6S580C33v94Ev,
  (VTBL_ENTRY)&_ZN6S580C33v95Ev,
  (VTBL_ENTRY)&_ZN6S580C33v96Ev,
  (VTBL_ENTRY)&_ZN6S580C33v97Ev,
  (VTBL_ENTRY)&_ZN6S580C33v98Ev,
  (VTBL_ENTRY)&_ZN6S580C33v99Ev,
  (VTBL_ENTRY)&_ZN6S580C34v100Ev,
  (VTBL_ENTRY)&_ZN6S580C34v101Ev,
  (VTBL_ENTRY)&_ZN6S580C34v102Ev,
  (VTBL_ENTRY)&_ZN6S580C34v103Ev,
  (VTBL_ENTRY)&_ZN6S580C34v104Ev,
  (VTBL_ENTRY)&_ZN6S580C34v105Ev,
  (VTBL_ENTRY)&_ZN6S580C34v106Ev,
  (VTBL_ENTRY)&_ZN6S580C34v107Ev,
  (VTBL_ENTRY)&_ZN6S580C34v108Ev,
  (VTBL_ENTRY)&_ZN6S580C34v109Ev,
  (VTBL_ENTRY)&_ZN6S580C24v110Ev,
  (VTBL_ENTRY)&_ZN6S580C24v111Ev,
  (VTBL_ENTRY)&_ZN6S580C24v112Ev,
  (VTBL_ENTRY)&_ZN6S580C24v113Ev,
  (VTBL_ENTRY)&_ZN6S580C12v1Ev,
  (VTBL_ENTRY)&_ZN6S580C12v2Ev,
  (VTBL_ENTRY)&_ZN6S580C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S580C1[];
extern  VTBL_ENTRY _ZTV6S580C1[];
Class_Descriptor cd_S580C1 = {  "S580C1", // class name
  bases_S580C1, 4,
  &(vtc_S580C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,236), // object size
  NSPAIRA(_ZTI6S580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S580C1),117, //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  S567C5  {
  int s567c5f0;
  __tsi64 s567c5f1;
  void *s567c5f2[4];
  int s567c5f3[2];
  void *s567c5f4;
  ::S40C9_nt s567c5f5;
  void *s567c5f6[2];
  virtual  ~S567C5(); // _ZN6S567C5D1Ev
  virtual void  v4(); // _ZN6S567C52v4Ev
  virtual void  v5(); // _ZN6S567C52v5Ev
  virtual void  v6(); // _ZN6S567C52v6Ev
  virtual void  v7(); // _ZN6S567C52v7Ev
  virtual void  v8(); // _ZN6S567C52v8Ev
  virtual void  v9(); // _ZN6S567C52v9Ev
  virtual void  v10(); // _ZN6S567C53v10Ev
  virtual void  v11(); // _ZN6S567C53v11Ev
  virtual void  v12(); // _ZN6S567C53v12Ev
  virtual void  v13(); // _ZN6S567C53v13Ev
  virtual void  v14(); // _ZN6S567C53v14Ev
  virtual void  v15(); // _ZN6S567C53v15Ev
  virtual void  v16(); // _ZN6S567C53v16Ev
  virtual void  v17(); // _ZN6S567C53v17Ev
  virtual void  v18(); // _ZN6S567C53v18Ev
  virtual void  v19(); // _ZN6S567C53v19Ev
  virtual void  v20(); // _ZN6S567C53v20Ev
  virtual void  v21(); // _ZN6S567C53v21Ev
  virtual void  v22(); // _ZN6S567C53v22Ev
  virtual void  v23(); // _ZN6S567C53v23Ev
  virtual void  v24(); // _ZN6S567C53v24Ev
  virtual void  v25(); // _ZN6S567C53v25Ev
  virtual void  v26(); // _ZN6S567C53v26Ev
  virtual void  v27(); // _ZN6S567C53v27Ev
  virtual void  v28(); // _ZN6S567C53v28Ev
  virtual void  v29(); // _ZN6S567C53v29Ev
  virtual void  v30(); // _ZN6S567C53v30Ev
  virtual void  v31(); // _ZN6S567C53v31Ev
  virtual void  v32(); // _ZN6S567C53v32Ev
  virtual void  v33(); // _ZN6S567C53v33Ev
  virtual void  v34(); // _ZN6S567C53v34Ev
  virtual void  v35(); // _ZN6S567C53v35Ev
  virtual void  v36(); // _ZN6S567C53v36Ev
  virtual void  v37(); // _ZN6S567C53v37Ev
  virtual void  v38(); // _ZN6S567C53v38Ev
  virtual void  v39(); // _ZN6S567C53v39Ev
  virtual void  v40(); // _ZN6S567C53v40Ev
  virtual void  v41(); // _ZN6S567C53v41Ev
  virtual void  v42(); // _ZN6S567C53v42Ev
  virtual void  v43(); // _ZN6S567C53v43Ev
  virtual void  v44(); // _ZN6S567C53v44Ev
  virtual void  v45(); // _ZN6S567C53v45Ev
  virtual void  v46(); // _ZN6S567C53v46Ev
  virtual void  v47(); // _ZN6S567C53v47Ev
  virtual void  v48(); // _ZN6S567C53v48Ev
  virtual void  v49(); // _ZN6S567C53v49Ev
  virtual void  v50(); // _ZN6S567C53v50Ev
  virtual void  v51(); // _ZN6S567C53v51Ev
  virtual void  v52(); // _ZN6S567C53v52Ev
  virtual void  v53(); // _ZN6S567C53v53Ev
  virtual void  v54(); // _ZN6S567C53v54Ev
  virtual void  v55(); // _ZN6S567C53v55Ev
  virtual void  v56(); // _ZN6S567C53v56Ev
  virtual void  v57(); // _ZN6S567C53v57Ev
  virtual void  v58(); // _ZN6S567C53v58Ev
  virtual void  v59(); // _ZN6S567C53v59Ev
  virtual void  v60(); // _ZN6S567C53v60Ev
  virtual void  v61(); // _ZN6S567C53v61Ev
  virtual void  v62(); // _ZN6S567C53v62Ev
  virtual void  v63(); // _ZN6S567C53v63Ev
  virtual void  v64(); // _ZN6S567C53v64Ev
  virtual void  v65(); // _ZN6S567C53v65Ev
  virtual void  v66(); // _ZN6S567C53v66Ev
  virtual void  v67(); // _ZN6S567C53v67Ev
  S567C5(); // tgen
};
//SIG(-1 S567C5) 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]}


 S567C5 ::~S567C5(){ note_dtor("S567C5", this);}
void  S567C5 ::v4(){vfunc_called(this, "_ZN6S567C52v4Ev");}
void  S567C5 ::v5(){vfunc_called(this, "_ZN6S567C52v5Ev");}
void  S567C5 ::v6(){vfunc_called(this, "_ZN6S567C52v6Ev");}
void  S567C5 ::v7(){vfunc_called(this, "_ZN6S567C52v7Ev");}
void  S567C5 ::v8(){vfunc_called(this, "_ZN6S567C52v8Ev");}
void  S567C5 ::v9(){vfunc_called(this, "_ZN6S567C52v9Ev");}
void  S567C5 ::v10(){vfunc_called(this, "_ZN6S567C53v10Ev");}
void  S567C5 ::v11(){vfunc_called(this, "_ZN6S567C53v11Ev");}
void  S567C5 ::v12(){vfunc_called(this, "_ZN6S567C53v12Ev");}
void  S567C5 ::v13(){vfunc_called(this, "_ZN6S567C53v13Ev");}
void  S567C5 ::v14(){vfunc_called(this, "_ZN6S567C53v14Ev");}
void  S567C5 ::v15(){vfunc_called(this, "_ZN6S567C53v15Ev");}
void  S567C5 ::v16(){vfunc_called(this, "_ZN6S567C53v16Ev");}
void  S567C5 ::v17(){vfunc_called(this, "_ZN6S567C53v17Ev");}
void  S567C5 ::v18(){vfunc_called(this, "_ZN6S567C53v18Ev");}
void  S567C5 ::v19(){vfunc_called(this, "_ZN6S567C53v19Ev");}
void  S567C5 ::v20(){vfunc_called(this, "_ZN6S567C53v20Ev");}
void  S567C5 ::v21(){vfunc_called(this, "_ZN6S567C53v21Ev");}
void  S567C5 ::v22(){vfunc_called(this, "_ZN6S567C53v22Ev");}
void  S567C5 ::v23(){vfunc_called(this, "_ZN6S567C53v23Ev");}
void  S567C5 ::v24(){vfunc_called(this, "_ZN6S567C53v24Ev");}
void  S567C5 ::v25(){vfunc_called(this, "_ZN6S567C53v25Ev");}
void  S567C5 ::v26(){vfunc_called(this, "_ZN6S567C53v26Ev");}
void  S567C5 ::v27(){vfunc_called(this, "_ZN6S567C53v27Ev");}
void  S567C5 ::v28(){vfunc_called(this, "_ZN6S567C53v28Ev");}
void  S567C5 ::v29(){vfunc_called(this, "_ZN6S567C53v29Ev");}
void  S567C5 ::v30(){vfunc_called(this, "_ZN6S567C53v30Ev");}
void  S567C5 ::v31(){vfunc_called(this, "_ZN6S567C53v31Ev");}
void  S567C5 ::v32(){vfunc_called(this, "_ZN6S567C53v32Ev");}
void  S567C5 ::v33(){vfunc_called(this, "_ZN6S567C53v33Ev");}
void  S567C5 ::v34(){vfunc_called(this, "_ZN6S567C53v34Ev");}
void  S567C5 ::v35(){vfunc_called(this, "_ZN6S567C53v35Ev");}
void  S567C5 ::v36(){vfunc_called(this, "_ZN6S567C53v36Ev");}
void  S567C5 ::v37(){vfunc_called(this, "_ZN6S567C53v37Ev");}
void  S567C5 ::v38(){vfunc_called(this, "_ZN6S567C53v38Ev");}
void  S567C5 ::v39(){vfunc_called(this, "_ZN6S567C53v39Ev");}
void  S567C5 ::v40(){vfunc_called(this, "_ZN6S567C53v40Ev");}
void  S567C5 ::v41(){vfunc_called(this, "_ZN6S567C53v41Ev");}
void  S567C5 ::v42(){vfunc_called(this, "_ZN6S567C53v42Ev");}
void  S567C5 ::v43(){vfunc_called(this, "_ZN6S567C53v43Ev");}
void  S567C5 ::v44(){vfunc_called(this, "_ZN6S567C53v44Ev");}
void  S567C5 ::v45(){vfunc_called(this, "_ZN6S567C53v45Ev");}
void  S567C5 ::v46(){vfunc_called(this, "_ZN6S567C53v46Ev");}
void  S567C5 ::v47(){vfunc_called(this, "_ZN6S567C53v47Ev");}
void  S567C5 ::v48(){vfunc_called(this, "_ZN6S567C53v48Ev");}
void  S567C5 ::v49(){vfunc_called(this, "_ZN6S567C53v49Ev");}
void  S567C5 ::v50(){vfunc_called(this, "_ZN6S567C53v50Ev");}
void  S567C5 ::v51(){vfunc_called(this, "_ZN6S567C53v51Ev");}
void  S567C5 ::v52(){vfunc_called(this, "_ZN6S567C53v52Ev");}
void  S567C5 ::v53(){vfunc_called(this, "_ZN6S567C53v53Ev");}
void  S567C5 ::v54(){vfunc_called(this, "_ZN6S567C53v54Ev");}
void  S567C5 ::v55(){vfunc_called(this, "_ZN6S567C53v55Ev");}
void  S567C5 ::v56(){vfunc_called(this, "_ZN6S567C53v56Ev");}
void  S567C5 ::v57(){vfunc_called(this, "_ZN6S567C53v57Ev");}
void  S567C5 ::v58(){vfunc_called(this, "_ZN6S567C53v58Ev");}
void  S567C5 ::v59(){vfunc_called(this, "_ZN6S567C53v59Ev");}
void  S567C5 ::v60(){vfunc_called(this, "_ZN6S567C53v60Ev");}
void  S567C5 ::v61(){vfunc_called(this, "_ZN6S567C53v61Ev");}
void  S567C5 ::v62(){vfunc_called(this, "_ZN6S567C53v62Ev");}
void  S567C5 ::v63(){vfunc_called(this, "_ZN6S567C53v63Ev");}
void  S567C5 ::v64(){vfunc_called(this, "_ZN6S567C53v64Ev");}
void  S567C5 ::v65(){vfunc_called(this, "_ZN6S567C53v65Ev");}
void  S567C5 ::v66(){vfunc_called(this, "_ZN6S567C53v66Ev");}
void  S567C5 ::v67(){vfunc_called(this, "_ZN6S567C53v67Ev");}
S567C5 ::S567C5(){ note_ctor("S567C5", this);} // tgen

static void Test_S567C5()
{
  extern Class_Descriptor cd_S567C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S567C5, buf);
    S567C5 *dp, &lv = *(dp=new (buf) S567C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S567C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S567C5)");
    check_field_offset(lv, s567c5f0, ABISELECT(8,4), "S567C5.s567c5f0");
    check_field_offset(lv, s567c5f1, ABISELECT(16,8), "S567C5.s567c5f1");
    check_field_offset(lv, s567c5f2, ABISELECT(24,16), "S567C5.s567c5f2");
    check_field_offset(lv, s567c5f3, ABISELECT(56,32), "S567C5.s567c5f3");
    check_field_offset(lv, s567c5f4, ABISELECT(64,40), "S567C5.s567c5f4");
    check_field_offset(lv, s567c5f5, ABISELECT(72,44), "S567C5.s567c5f5");
    check_field_offset(lv, s567c5f6, ABISELECT(80,52), "S567C5.s567c5f6");
    test_class_info(&lv, &cd_S567C5);
    dp->~S567C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS567C5(Test_S567C5, "S567C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S567C5C1Ev();
extern void _ZN6S567C5D1Ev();
Name_Map name_map_S567C5[] = {
  NSPAIR(_ZN6S567C5C1Ev),
  NSPAIR(_ZN6S567C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S567C5[];
extern void _ZN6S567C5D1Ev();
extern void _ZN6S567C5D0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
static  VTBL_ENTRY vtc_S567C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S567C5[0]),
  (VTBL_ENTRY)&_ZN6S567C5D1Ev,
  (VTBL_ENTRY)&_ZN6S567C5D0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
Class_Descriptor cd_S567C5 = {  "S567C5", // class name
  0,0,//no base classes
  &(vtc_S567C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S567C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S567C5),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  S567C12_nt  {
  ::S40C35_nt s567c12f0;
  ::S40C18_nt s567c12f1;
  int s567c12f2;
  void  mf567c12(); // _ZN10S567C12_nt8mf567c12Ev
};
//SIG(-1 S567C12_nt) C1{ m FC2{ m Fi[4]} FC3{ m Fi[3]} Fi}


void  S567C12_nt ::mf567c12(){}

//skip512 S567C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S567C4_nt  : S567C5 {
  void *s567c4f0;
  ::S40C80 s567c4f1;
  ::S40C9_nt s567c4f2;
  ::S40C76 s567c4f3;
  ::S567C12_nt s567c4f4;
  int s567c4f5;
  unsigned int s567c4f6:1;
  unsigned int s567c4f7:1;
  unsigned int s567c4f8:1;
  unsigned int s567c4f9:1;
  int s567c4f10[11];
  virtual  ~S567C4_nt(); // _ZN9S567C4_ntD1Ev
  virtual void  v68(); // _ZN9S567C4_nt3v68Ev
  virtual void  v69(); // _ZN9S567C4_nt3v69Ev
  virtual void  v70(); // _ZN9S567C4_nt3v70Ev
  virtual void  v71(); // _ZN9S567C4_nt3v71Ev
  virtual void  v72(); // _ZN9S567C4_nt3v72Ev
  virtual void  v73(); // _ZN9S567C4_nt3v73Ev
  virtual void  v74(); // _ZN9S567C4_nt3v74Ev
  virtual void  v75(); // _ZN9S567C4_nt3v75Ev
  virtual void  v76(); // _ZN9S567C4_nt3v76Ev
  virtual void  v77(); // _ZN9S567C4_nt3v77Ev
  virtual void  v78(); // _ZN9S567C4_nt3v78Ev
  virtual void  v79(); // _ZN9S567C4_nt3v79Ev
  virtual void  v80(); // _ZN9S567C4_nt3v80Ev
  virtual void  v81(); // _ZN9S567C4_nt3v81Ev
  virtual void  v82(); // _ZN9S567C4_nt3v82Ev
  virtual void  v83(); // _ZN9S567C4_nt3v83Ev
  virtual void  v84(); // _ZN9S567C4_nt3v84Ev
  virtual void  v85(); // _ZN9S567C4_nt3v85Ev
  virtual void  v86(); // _ZN9S567C4_nt3v86Ev
  virtual void  v87(); // _ZN9S567C4_nt3v87Ev
  virtual void  v88(); // _ZN9S567C4_nt3v88Ev
  virtual void  v89(); // _ZN9S567C4_nt3v89Ev
  virtual void  v90(); // _ZN9S567C4_nt3v90Ev
  virtual void  v91(); // _ZN9S567C4_nt3v91Ev
  virtual void  v92(); // _ZN9S567C4_nt3v92Ev
  virtual void  v93(); // _ZN9S567C4_nt3v93Ev
  virtual void  v94(); // _ZN9S567C4_nt3v94Ev
  S567C4_nt(); // tgen
};
//SIG(-1 S567C4_nt) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp 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 Fp FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC3 FC7{ BC8{ BC6}} FC9{ m FC10{ m Fi[4]} FC11{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]}


 S567C4_nt ::~S567C4_nt(){ note_dtor("S567C4_nt", this);}
void  S567C4_nt ::v68(){vfunc_called(this, "_ZN9S567C4_nt3v68Ev");}
void  S567C4_nt ::v69(){vfunc_called(this, "_ZN9S567C4_nt3v69Ev");}
void  S567C4_nt ::v70(){vfunc_called(this, "_ZN9S567C4_nt3v70Ev");}
void  S567C4_nt ::v71(){vfunc_called(this, "_ZN9S567C4_nt3v71Ev");}
void  S567C4_nt ::v72(){vfunc_called(this, "_ZN9S567C4_nt3v72Ev");}
void  S567C4_nt ::v73(){vfunc_called(this, "_ZN9S567C4_nt3v73Ev");}
void  S567C4_nt ::v74(){vfunc_called(this, "_ZN9S567C4_nt3v74Ev");}
void  S567C4_nt ::v75(){vfunc_called(this, "_ZN9S567C4_nt3v75Ev");}
void  S567C4_nt ::v76(){vfunc_called(this, "_ZN9S567C4_nt3v76Ev");}
void  S567C4_nt ::v77(){vfunc_called(this, "_ZN9S567C4_nt3v77Ev");}
void  S567C4_nt ::v78(){vfunc_called(this, "_ZN9S567C4_nt3v78Ev");}
void  S567C4_nt ::v79(){vfunc_called(this, "_ZN9S567C4_nt3v79Ev");}
void  S567C4_nt ::v80(){vfunc_called(this, "_ZN9S567C4_nt3v80Ev");}
void  S567C4_nt ::v81(){vfunc_called(this, "_ZN9S567C4_nt3v81Ev");}
void  S567C4_nt ::v82(){vfunc_called(this, "_ZN9S567C4_nt3v82Ev");}
void  S567C4_nt ::v83(){vfunc_called(this, "_ZN9S567C4_nt3v83Ev");}
void  S567C4_nt ::v84(){vfunc_called(this, "_ZN9S567C4_nt3v84Ev");}
void  S567C4_nt ::v85(){vfunc_called(this, "_ZN9S567C4_nt3v85Ev");}
void  S567C4_nt ::v86(){vfunc_called(this, "_ZN9S567C4_nt3v86Ev");}
void  S567C4_nt ::v87(){vfunc_called(this, "_ZN9S567C4_nt3v87Ev");}
void  S567C4_nt ::v88(){vfunc_called(this, "_ZN9S567C4_nt3v88Ev");}
void  S567C4_nt ::v89(){vfunc_called(this, "_ZN9S567C4_nt3v89Ev");}
void  S567C4_nt ::v90(){vfunc_called(this, "_ZN9S567C4_nt3v90Ev");}
void  S567C4_nt ::v91(){vfunc_called(this, "_ZN9S567C4_nt3v91Ev");}
void  S567C4_nt ::v92(){vfunc_called(this, "_ZN9S567C4_nt3v92Ev");}
void  S567C4_nt ::v93(){vfunc_called(this, "_ZN9S567C4_nt3v93Ev");}
void  S567C4_nt ::v94(){vfunc_called(this, "_ZN9S567C4_nt3v94Ev");}
S567C4_nt ::S567C4_nt(){ note_ctor("S567C4_nt", this);} // tgen

//skip512 S567C4_nt

#else // __cplusplus

extern void _ZN9S567C4_ntC1Ev();
extern void _ZN9S567C4_ntD1Ev();
Name_Map name_map_S567C4_nt[] = {
  NSPAIR(_ZN9S567C4_ntC1Ev),
  NSPAIR(_ZN9S567C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
static Base_Class bases_S567C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S567C4_nt[];
extern void _ZN9S567C4_ntD1Ev();
extern void _ZN9S567C4_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
static  VTBL_ENTRY vtc_S567C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI9S567C4_nt[];
VTBL_ENTRY *P__ZTI9S567C4_nt = _ZTI9S567C4_nt; 
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
Class_Descriptor cd_S567C4_nt = {  "S567C4_nt", // class name
  bases_S567C4_nt, 1,
  &(vtc_S567C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,180), // object size
  NSPAIRA(_ZTI9S567C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C4_nt),95, //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  S567C3_nt  : S567C4_nt {
  ::S40C71 s567c3f0;
  unsigned int s567c3f1:1;
  virtual  ~S567C3_nt(); // _ZN9S567C3_ntD1Ev
  virtual void  v95(); // _ZN9S567C3_nt3v95Ev
  virtual void  v96(); // _ZN9S567C3_nt3v96Ev
  virtual void  v97(); // _ZN9S567C3_nt3v97Ev
  virtual void  v98(); // _ZN9S567C3_nt3v98Ev
  virtual void  v99(); // _ZN9S567C3_nt3v99Ev
  virtual void  v100(); // _ZN9S567C3_nt4v100Ev
  virtual void  v101(); // _ZN9S567C3_nt4v101Ev
  virtual void  v102(); // _ZN9S567C3_nt4v102Ev
  virtual void  v103(); // _ZN9S567C3_nt4v103Ev
  virtual void  v104(); // _ZN9S567C3_nt4v104Ev
  virtual void  v105(); // _ZN9S567C3_nt4v105Ev
  virtual void  v106(); // _ZN9S567C3_nt4v106Ev
  virtual void  v107(); // _ZN9S567C3_nt4v107Ev
  virtual void  v108(); // _ZN9S567C3_nt4v108Ev
  virtual void  v109(); // _ZN9S567C3_nt4v109Ev
  virtual void  v110(); // _ZN9S567C3_nt4v110Ev
  virtual void  v111(); // _ZN9S567C3_nt4v111Ev
  virtual void  v112(); // _ZN9S567C3_nt4v112Ev
  S567C3_nt(); // tgen
};
//SIG(-1 S567C3_nt) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 Fp FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC4 FC8{ BC9{ BC7}} FC10{ m FC11{ m Fi[4]} FC12{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 FC13{ BC14{ BC7}} Fi:1}


 S567C3_nt ::~S567C3_nt(){ note_dtor("S567C3_nt", this);}
void  S567C3_nt ::v95(){vfunc_called(this, "_ZN9S567C3_nt3v95Ev");}
void  S567C3_nt ::v96(){vfunc_called(this, "_ZN9S567C3_nt3v96Ev");}
void  S567C3_nt ::v97(){vfunc_called(this, "_ZN9S567C3_nt3v97Ev");}
void  S567C3_nt ::v98(){vfunc_called(this, "_ZN9S567C3_nt3v98Ev");}
void  S567C3_nt ::v99(){vfunc_called(this, "_ZN9S567C3_nt3v99Ev");}
void  S567C3_nt ::v100(){vfunc_called(this, "_ZN9S567C3_nt4v100Ev");}
void  S567C3_nt ::v101(){vfunc_called(this, "_ZN9S567C3_nt4v101Ev");}
void  S567C3_nt ::v102(){vfunc_called(this, "_ZN9S567C3_nt4v102Ev");}
void  S567C3_nt ::v103(){vfunc_called(this, "_ZN9S567C3_nt4v103Ev");}
void  S567C3_nt ::v104(){vfunc_called(this, "_ZN9S567C3_nt4v104Ev");}
void  S567C3_nt ::v105(){vfunc_called(this, "_ZN9S567C3_nt4v105Ev");}
void  S567C3_nt ::v106(){vfunc_called(this, "_ZN9S567C3_nt4v106Ev");}
void  S567C3_nt ::v107(){vfunc_called(this, "_ZN9S567C3_nt4v107Ev");}
void  S567C3_nt ::v108(){vfunc_called(this, "_ZN9S567C3_nt4v108Ev");}
void  S567C3_nt ::v109(){vfunc_called(this, "_ZN9S567C3_nt4v109Ev");}
void  S567C3_nt ::v110(){vfunc_called(this, "_ZN9S567C3_nt4v110Ev");}
void  S567C3_nt ::v111(){vfunc_called(this, "_ZN9S567C3_nt4v111Ev");}
void  S567C3_nt ::v112(){vfunc_called(this, "_ZN9S567C3_nt4v112Ev");}
S567C3_nt ::S567C3_nt(){ note_ctor("S567C3_nt", this);} // tgen

//skip512 S567C3_nt

#else // __cplusplus

extern void _ZN9S567C3_ntC1Ev();
extern void _ZN9S567C3_ntD1Ev();
Name_Map name_map_S567C3_nt[] = {
  NSPAIR(_ZN9S567C3_ntC1Ev),
  NSPAIR(_ZN9S567C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
static Base_Class bases_S567C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S567C3_nt[];
extern void _ZN9S567C3_ntD1Ev();
extern void _ZN9S567C3_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
static  VTBL_ENTRY vtc_S567C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
};
extern VTBL_ENTRY _ZTI9S567C3_nt[];
VTBL_ENTRY *P__ZTI9S567C3_nt = _ZTI9S567C3_nt; 
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
Class_Descriptor cd_S567C3_nt = {  "S567C3_nt", // class name
  bases_S567C3_nt, 2,
  &(vtc_S567C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,196), // object size
  NSPAIRA(_ZTI9S567C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C3_nt),113, //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  S567C2_nt  : S567C3_nt {
  int s567c2f0[3];
  virtual  ~S567C2_nt(); // _ZN9S567C2_ntD1Ev
  virtual void  v113(); // _ZN9S567C2_nt4v113Ev
  virtual void  v114(); // _ZN9S567C2_nt4v114Ev
  virtual void  v115(); // _ZN9S567C2_nt4v115Ev
  virtual void  v116(); // _ZN9S567C2_nt4v116Ev
  virtual void  v117(); // _ZN9S567C2_nt4v117Ev
  virtual void  v118(); // _ZN9S567C2_nt4v118Ev
  virtual void  v119(); // _ZN9S567C2_nt4v119Ev
  S567C2_nt(); // tgen
};
//SIG(-1 S567C2_nt) C1{ BC2{ BC3{ BC4{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd 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 Fp FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC5 FC9{ BC10{ BC8}} FC11{ m FC12{ m Fi[4]} FC13{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 FC14{ BC15{ BC8}} Fi:1} vd v1 v2 v3 v4 v5 v6 v7 Fi[3]}


 S567C2_nt ::~S567C2_nt(){ note_dtor("S567C2_nt", this);}
void  S567C2_nt ::v113(){vfunc_called(this, "_ZN9S567C2_nt4v113Ev");}
void  S567C2_nt ::v114(){vfunc_called(this, "_ZN9S567C2_nt4v114Ev");}
void  S567C2_nt ::v115(){vfunc_called(this, "_ZN9S567C2_nt4v115Ev");}
void  S567C2_nt ::v116(){vfunc_called(this, "_ZN9S567C2_nt4v116Ev");}
void  S567C2_nt ::v117(){vfunc_called(this, "_ZN9S567C2_nt4v117Ev");}
void  S567C2_nt ::v118(){vfunc_called(this, "_ZN9S567C2_nt4v118Ev");}
void  S567C2_nt ::v119(){vfunc_called(this, "_ZN9S567C2_nt4v119Ev");}
S567C2_nt ::S567C2_nt(){ note_ctor("S567C2_nt", this);} // tgen

//skip512 S567C2_nt

#else // __cplusplus

extern void _ZN9S567C2_ntC1Ev();
extern void _ZN9S567C2_ntD1Ev();
Name_Map name_map_S567C2_nt[] = {
  NSPAIR(_ZN9S567C2_ntC1Ev),
  NSPAIR(_ZN9S567C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
extern Class_Descriptor cd_S567C3_nt;
extern VTBL_ENTRY _ZTI9S567C3_nt[];
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
static Base_Class bases_S567C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S567C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S567C2_nt[];
extern void _ZN9S567C2_ntD1Ev();
extern void _ZN9S567C2_ntD0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
extern void _ZN9S567C2_nt4v113Ev();
extern void _ZN9S567C2_nt4v114Ev();
extern void _ZN9S567C2_nt4v115Ev();
extern void _ZN9S567C2_nt4v116Ev();
extern void _ZN9S567C2_nt4v117Ev();
extern void _ZN9S567C2_nt4v118Ev();
extern void _ZN9S567C2_nt4v119Ev();
static  VTBL_ENTRY vtc_S567C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S567C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S567C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S567C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v119Ev,
};
extern VTBL_ENTRY _ZTI9S567C2_nt[];
VTBL_ENTRY *P__ZTI9S567C2_nt = _ZTI9S567C2_nt; 
extern  VTBL_ENTRY _ZTV9S567C2_nt[];
Class_Descriptor cd_S567C2_nt = {  "S567C2_nt", // class name
  bases_S567C2_nt, 3,
  &(vtc_S567C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,208), // object size
  NSPAIRA(_ZTI9S567C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S567C2_nt),120, //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  S567C1  : S567C2_nt {
  int s567c1f0[2];
  virtual  ~S567C1(); // _ZN6S567C1D1Ev
  virtual void  v1(); // _ZN6S567C12v1Ev
  virtual void  v2(); // _ZN6S567C12v2Ev
  virtual void  v3(); // _ZN6S567C12v3Ev
  S567C1(); // tgen
};
//SIG(1 S567C1) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ 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 Fp FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC6 FC10{ BC11{ BC9}} FC12{ m FC13{ m Fi[4]} FC14{ m Fi[3]} Fi} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi[11]} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 FC15{ BC16{ BC9}} Fi:1} vd v113 v114 v115 v116 v117 v118 v119 Fi[3]} vd v1 v2 v3 Fi[2]}


 S567C1 ::~S567C1(){ note_dtor("S567C1", this);}
void  S567C1 ::v1(){vfunc_called(this, "_ZN6S567C12v1Ev");}
void  S567C1 ::v2(){vfunc_called(this, "_ZN6S567C12v2Ev");}
void  S567C1 ::v3(){vfunc_called(this, "_ZN6S567C12v3Ev");}
S567C1 ::S567C1(){ note_ctor("S567C1", this);} // tgen

static void Test_S567C1()
{
  extern Class_Descriptor cd_S567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,55)];
    init_test(&cd_S567C1, buf);
    S567C1 *dp, &lv = *(dp=new (buf) S567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,216), "sizeof(S567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S567C1)");
    check_base_class_offset(lv, (S567C5*)(S567C4_nt*)(S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C4_nt*)(S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C3_nt*)(S567C2_nt*), 0, "S567C1");
    check_base_class_offset(lv, (S567C2_nt*), 0, "S567C1");
    check_field_offset(lv, s567c1f0, ABISELECT(264,208), "S567C1.s567c1f0");
    test_class_info(&lv, &cd_S567C1);
    dp->~S567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS567C1(Test_S567C1, "S567C1", ABISELECT(272,216));

#else // __cplusplus

extern void _ZN6S567C1C1Ev();
extern void _ZN6S567C1D1Ev();
Name_Map name_map_S567C1[] = {
  NSPAIR(_ZN6S567C1C1Ev),
  NSPAIR(_ZN6S567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S567C5;
extern VTBL_ENTRY _ZTI6S567C5[];
extern  VTBL_ENTRY _ZTV6S567C5[];
extern Class_Descriptor cd_S567C4_nt;
extern VTBL_ENTRY _ZTI9S567C4_nt[];
extern  VTBL_ENTRY _ZTV9S567C4_nt[];
extern Class_Descriptor cd_S567C3_nt;
extern VTBL_ENTRY _ZTI9S567C3_nt[];
extern  VTBL_ENTRY _ZTV9S567C3_nt[];
extern Class_Descriptor cd_S567C2_nt;
extern VTBL_ENTRY _ZTI9S567C2_nt[];
extern  VTBL_ENTRY _ZTV9S567C2_nt[];
static Base_Class bases_S567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S567C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S567C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S567C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S567C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S567C1[];
extern void _ZN6S567C1D1Ev();
extern void _ZN6S567C1D0Ev();
extern void _ZN6S567C52v4Ev();
extern void _ZN6S567C52v5Ev();
extern void _ZN6S567C52v6Ev();
extern void _ZN6S567C52v7Ev();
extern void _ZN6S567C52v8Ev();
extern void _ZN6S567C52v9Ev();
extern void _ZN6S567C53v10Ev();
extern void _ZN6S567C53v11Ev();
extern void _ZN6S567C53v12Ev();
extern void _ZN6S567C53v13Ev();
extern void _ZN6S567C53v14Ev();
extern void _ZN6S567C53v15Ev();
extern void _ZN6S567C53v16Ev();
extern void _ZN6S567C53v17Ev();
extern void _ZN6S567C53v18Ev();
extern void _ZN6S567C53v19Ev();
extern void _ZN6S567C53v20Ev();
extern void _ZN6S567C53v21Ev();
extern void _ZN6S567C53v22Ev();
extern void _ZN6S567C53v23Ev();
extern void _ZN6S567C53v24Ev();
extern void _ZN6S567C53v25Ev();
extern void _ZN6S567C53v26Ev();
extern void _ZN6S567C53v27Ev();
extern void _ZN6S567C53v28Ev();
extern void _ZN6S567C53v29Ev();
extern void _ZN6S567C53v30Ev();
extern void _ZN6S567C53v31Ev();
extern void _ZN6S567C53v32Ev();
extern void _ZN6S567C53v33Ev();
extern void _ZN6S567C53v34Ev();
extern void _ZN6S567C53v35Ev();
extern void _ZN6S567C53v36Ev();
extern void _ZN6S567C53v37Ev();
extern void _ZN6S567C53v38Ev();
extern void _ZN6S567C53v39Ev();
extern void _ZN6S567C53v40Ev();
extern void _ZN6S567C53v41Ev();
extern void _ZN6S567C53v42Ev();
extern void _ZN6S567C53v43Ev();
extern void _ZN6S567C53v44Ev();
extern void _ZN6S567C53v45Ev();
extern void _ZN6S567C53v46Ev();
extern void _ZN6S567C53v47Ev();
extern void _ZN6S567C53v48Ev();
extern void _ZN6S567C53v49Ev();
extern void _ZN6S567C53v50Ev();
extern void _ZN6S567C53v51Ev();
extern void _ZN6S567C53v52Ev();
extern void _ZN6S567C53v53Ev();
extern void _ZN6S567C53v54Ev();
extern void _ZN6S567C53v55Ev();
extern void _ZN6S567C53v56Ev();
extern void _ZN6S567C53v57Ev();
extern void _ZN6S567C53v58Ev();
extern void _ZN6S567C53v59Ev();
extern void _ZN6S567C53v60Ev();
extern void _ZN6S567C53v61Ev();
extern void _ZN6S567C53v62Ev();
extern void _ZN6S567C53v63Ev();
extern void _ZN6S567C53v64Ev();
extern void _ZN6S567C53v65Ev();
extern void _ZN6S567C53v66Ev();
extern void _ZN6S567C53v67Ev();
extern void _ZN9S567C4_nt3v68Ev();
extern void _ZN9S567C4_nt3v69Ev();
extern void _ZN9S567C4_nt3v70Ev();
extern void _ZN9S567C4_nt3v71Ev();
extern void _ZN9S567C4_nt3v72Ev();
extern void _ZN9S567C4_nt3v73Ev();
extern void _ZN9S567C4_nt3v74Ev();
extern void _ZN9S567C4_nt3v75Ev();
extern void _ZN9S567C4_nt3v76Ev();
extern void _ZN9S567C4_nt3v77Ev();
extern void _ZN9S567C4_nt3v78Ev();
extern void _ZN9S567C4_nt3v79Ev();
extern void _ZN9S567C4_nt3v80Ev();
extern void _ZN9S567C4_nt3v81Ev();
extern void _ZN9S567C4_nt3v82Ev();
extern void _ZN9S567C4_nt3v83Ev();
extern void _ZN9S567C4_nt3v84Ev();
extern void _ZN9S567C4_nt3v85Ev();
extern void _ZN9S567C4_nt3v86Ev();
extern void _ZN9S567C4_nt3v87Ev();
extern void _ZN9S567C4_nt3v88Ev();
extern void _ZN9S567C4_nt3v89Ev();
extern void _ZN9S567C4_nt3v90Ev();
extern void _ZN9S567C4_nt3v91Ev();
extern void _ZN9S567C4_nt3v92Ev();
extern void _ZN9S567C4_nt3v93Ev();
extern void _ZN9S567C4_nt3v94Ev();
extern void _ZN9S567C3_nt3v95Ev();
extern void _ZN9S567C3_nt3v96Ev();
extern void _ZN9S567C3_nt3v97Ev();
extern void _ZN9S567C3_nt3v98Ev();
extern void _ZN9S567C3_nt3v99Ev();
extern void _ZN9S567C3_nt4v100Ev();
extern void _ZN9S567C3_nt4v101Ev();
extern void _ZN9S567C3_nt4v102Ev();
extern void _ZN9S567C3_nt4v103Ev();
extern void _ZN9S567C3_nt4v104Ev();
extern void _ZN9S567C3_nt4v105Ev();
extern void _ZN9S567C3_nt4v106Ev();
extern void _ZN9S567C3_nt4v107Ev();
extern void _ZN9S567C3_nt4v108Ev();
extern void _ZN9S567C3_nt4v109Ev();
extern void _ZN9S567C3_nt4v110Ev();
extern void _ZN9S567C3_nt4v111Ev();
extern void _ZN9S567C3_nt4v112Ev();
extern void _ZN9S567C2_nt4v113Ev();
extern void _ZN9S567C2_nt4v114Ev();
extern void _ZN9S567C2_nt4v115Ev();
extern void _ZN9S567C2_nt4v116Ev();
extern void _ZN9S567C2_nt4v117Ev();
extern void _ZN9S567C2_nt4v118Ev();
extern void _ZN9S567C2_nt4v119Ev();
extern void _ZN6S567C12v1Ev();
extern void _ZN6S567C12v2Ev();
extern void _ZN6S567C12v3Ev();
static  VTBL_ENTRY vtc_S567C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S567C1[0]),
  (VTBL_ENTRY)&_ZN6S567C1D1Ev,
  (VTBL_ENTRY)&_ZN6S567C1D0Ev,
  (VTBL_ENTRY)&_ZN6S567C52v4Ev,
  (VTBL_ENTRY)&_ZN6S567C52v5Ev,
  (VTBL_ENTRY)&_ZN6S567C52v6Ev,
  (VTBL_ENTRY)&_ZN6S567C52v7Ev,
  (VTBL_ENTRY)&_ZN6S567C52v8Ev,
  (VTBL_ENTRY)&_ZN6S567C52v9Ev,
  (VTBL_ENTRY)&_ZN6S567C53v10Ev,
  (VTBL_ENTRY)&_ZN6S567C53v11Ev,
  (VTBL_ENTRY)&_ZN6S567C53v12Ev,
  (VTBL_ENTRY)&_ZN6S567C53v13Ev,
  (VTBL_ENTRY)&_ZN6S567C53v14Ev,
  (VTBL_ENTRY)&_ZN6S567C53v15Ev,
  (VTBL_ENTRY)&_ZN6S567C53v16Ev,
  (VTBL_ENTRY)&_ZN6S567C53v17Ev,
  (VTBL_ENTRY)&_ZN6S567C53v18Ev,
  (VTBL_ENTRY)&_ZN6S567C53v19Ev,
  (VTBL_ENTRY)&_ZN6S567C53v20Ev,
  (VTBL_ENTRY)&_ZN6S567C53v21Ev,
  (VTBL_ENTRY)&_ZN6S567C53v22Ev,
  (VTBL_ENTRY)&_ZN6S567C53v23Ev,
  (VTBL_ENTRY)&_ZN6S567C53v24Ev,
  (VTBL_ENTRY)&_ZN6S567C53v25Ev,
  (VTBL_ENTRY)&_ZN6S567C53v26Ev,
  (VTBL_ENTRY)&_ZN6S567C53v27Ev,
  (VTBL_ENTRY)&_ZN6S567C53v28Ev,
  (VTBL_ENTRY)&_ZN6S567C53v29Ev,
  (VTBL_ENTRY)&_ZN6S567C53v30Ev,
  (VTBL_ENTRY)&_ZN6S567C53v31Ev,
  (VTBL_ENTRY)&_ZN6S567C53v32Ev,
  (VTBL_ENTRY)&_ZN6S567C53v33Ev,
  (VTBL_ENTRY)&_ZN6S567C53v34Ev,
  (VTBL_ENTRY)&_ZN6S567C53v35Ev,
  (VTBL_ENTRY)&_ZN6S567C53v36Ev,
  (VTBL_ENTRY)&_ZN6S567C53v37Ev,
  (VTBL_ENTRY)&_ZN6S567C53v38Ev,
  (VTBL_ENTRY)&_ZN6S567C53v39Ev,
  (VTBL_ENTRY)&_ZN6S567C53v40Ev,
  (VTBL_ENTRY)&_ZN6S567C53v41Ev,
  (VTBL_ENTRY)&_ZN6S567C53v42Ev,
  (VTBL_ENTRY)&_ZN6S567C53v43Ev,
  (VTBL_ENTRY)&_ZN6S567C53v44Ev,
  (VTBL_ENTRY)&_ZN6S567C53v45Ev,
  (VTBL_ENTRY)&_ZN6S567C53v46Ev,
  (VTBL_ENTRY)&_ZN6S567C53v47Ev,
  (VTBL_ENTRY)&_ZN6S567C53v48Ev,
  (VTBL_ENTRY)&_ZN6S567C53v49Ev,
  (VTBL_ENTRY)&_ZN6S567C53v50Ev,
  (VTBL_ENTRY)&_ZN6S567C53v51Ev,
  (VTBL_ENTRY)&_ZN6S567C53v52Ev,
  (VTBL_ENTRY)&_ZN6S567C53v53Ev,
  (VTBL_ENTRY)&_ZN6S567C53v54Ev,
  (VTBL_ENTRY)&_ZN6S567C53v55Ev,
  (VTBL_ENTRY)&_ZN6S567C53v56Ev,
  (VTBL_ENTRY)&_ZN6S567C53v57Ev,
  (VTBL_ENTRY)&_ZN6S567C53v58Ev,
  (VTBL_ENTRY)&_ZN6S567C53v59Ev,
  (VTBL_ENTRY)&_ZN6S567C53v60Ev,
  (VTBL_ENTRY)&_ZN6S567C53v61Ev,
  (VTBL_ENTRY)&_ZN6S567C53v62Ev,
  (VTBL_ENTRY)&_ZN6S567C53v63Ev,
  (VTBL_ENTRY)&_ZN6S567C53v64Ev,
  (VTBL_ENTRY)&_ZN6S567C53v65Ev,
  (VTBL_ENTRY)&_ZN6S567C53v66Ev,
  (VTBL_ENTRY)&_ZN6S567C53v67Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S567C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S567C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S567C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN6S567C12v1Ev,
  (VTBL_ENTRY)&_ZN6S567C12v2Ev,
  (VTBL_ENTRY)&_ZN6S567C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S567C1[];
extern  VTBL_ENTRY _ZTV6S567C1[];
Class_Descriptor cd_S567C1 = {  "S567C1", // class name
  bases_S567C1, 4,
  &(vtc_S567C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,216), // object size
  NSPAIRA(_ZTI6S567C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S567C1),123, //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  S19993C2  {
  void *s19993c2f0;
  long double s19993c2f1[7];
  virtual void  v10(); // _ZN8S19993C23v10Ev
  ~S19993C2(); // tgen
  S19993C2(); // tgen
};
//SIG(-1 S19993C2) C1{ v1 Fp FD[7]}


void  S19993C2 ::v10(){vfunc_called(this, "_ZN8S19993C23v10Ev");}
S19993C2 ::~S19993C2(){ note_dtor("S19993C2", this);} // tgen
S19993C2 ::S19993C2(){ note_ctor("S19993C2", this);} // tgen

static void Test_S19993C2()
{
  extern Class_Descriptor cd_S19993C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19993C2, buf);
    S19993C2 *dp, &lv = *(dp=new (buf) S19993C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19993C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C2)");
    check_field_offset(lv, s19993c2f0, ABISELECT(8,4), "S19993C2.s19993c2f0");
    check_field_offset(lv, s19993c2f1, ABISELECT(16,8), "S19993C2.s19993c2f1");
    test_class_info(&lv, &cd_S19993C2);
    dp->~S19993C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C2(Test_S19993C2, "S19993C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19993C2C1Ev();
extern void _ZN8S19993C2D1Ev();
Name_Map name_map_S19993C2[] = {
  NSPAIR(_ZN8S19993C2C1Ev),
  NSPAIR(_ZN8S19993C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19993C2[];
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C2[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
Class_Descriptor cd_S19993C2 = {  "S19993C2", // class name
  0,0,//no base classes
  &(vtc_S19993C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19993C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19993C2),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  S19993C6_nt  {
  virtual void  v11(); // _ZN11S19993C6_nt3v11Ev
  virtual void  v12(); // _ZN11S19993C6_nt3v12Ev
  ~S19993C6_nt(); // tgen
  S19993C6_nt(); // tgen
};
//SIG(-1 S19993C6_nt) C1{ v1 v2}


void  S19993C6_nt ::v11(){vfunc_called(this, "_ZN11S19993C6_nt3v11Ev");}
void  S19993C6_nt ::v12(){vfunc_called(this, "_ZN11S19993C6_nt3v12Ev");}
S19993C6_nt ::~S19993C6_nt(){ note_dtor("S19993C6_nt", this);} // tgen
S19993C6_nt ::S19993C6_nt(){ note_ctor("S19993C6_nt", this);} // tgen

//skip512 S19993C6_nt

#else // __cplusplus

extern void _ZN11S19993C6_ntC1Ev();
extern void _ZN11S19993C6_ntD1Ev();
Name_Map name_map_S19993C6_nt[] = {
  NSPAIR(_ZN11S19993C6_ntC1Ev),
  NSPAIR(_ZN11S19993C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY vtc_S19993C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19993C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
VTBL_ENTRY *P__ZTI11S19993C6_nt = _ZTI11S19993C6_nt; 
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
Class_Descriptor cd_S19993C6_nt = {  "S19993C6_nt", // class name
  0,0,//no base classes
  &(vtc_S19993C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19993C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19993C6_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  S19993C9  {
  virtual void  v13(); // _ZN8S19993C93v13Ev
  virtual void  v14(); // _ZN8S19993C93v14Ev
  ~S19993C9(); // tgen
  S19993C9(); // tgen
};
//SIG(-1 S19993C9) C1{ v1 v2}


void  S19993C9 ::v13(){vfunc_called(this, "_ZN8S19993C93v13Ev");}
void  S19993C9 ::v14(){vfunc_called(this, "_ZN8S19993C93v14Ev");}
S19993C9 ::~S19993C9(){ note_dtor("S19993C9", this);} // tgen
S19993C9 ::S19993C9(){ note_ctor("S19993C9", this);} // tgen

static void Test_S19993C9()
{
  extern Class_Descriptor cd_S19993C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19993C9, buf);
    S19993C9 *dp, &lv = *(dp=new (buf) S19993C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19993C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C9)");
    test_class_info(&lv, &cd_S19993C9);
    dp->~S19993C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C9(Test_S19993C9, "S19993C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19993C9C1Ev();
extern void _ZN8S19993C9D1Ev();
Name_Map name_map_S19993C9[] = {
  NSPAIR(_ZN8S19993C9C1Ev),
  NSPAIR(_ZN8S19993C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19993C9[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY vtc_S19993C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C9[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
Class_Descriptor cd_S19993C9 = {  "S19993C9", // class name
  0,0,//no base classes
  &(vtc_S19993C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19993C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19993C9),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  S19993C10  : S19993C6_nt {
  int s19993c10f0[5];
  void *s19993c10f1;
  __tsi64 s19993c10f2[4];
  virtual void  v15(); // _ZN9S19993C103v15Ev
  virtual void  v16(); // _ZN9S19993C103v16Ev
  virtual void  v17(); // _ZN9S19993C103v17Ev
  virtual void  v18(); // _ZN9S19993C103v18Ev
  ~S19993C10(); // tgen
  S19993C10(); // tgen
};
//SIG(-1 S19993C10) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S19993C10 ::v15(){vfunc_called(this, "_ZN9S19993C103v15Ev");}
void  S19993C10 ::v16(){vfunc_called(this, "_ZN9S19993C103v16Ev");}
void  S19993C10 ::v17(){vfunc_called(this, "_ZN9S19993C103v17Ev");}
void  S19993C10 ::v18(){vfunc_called(this, "_ZN9S19993C103v18Ev");}
S19993C10 ::~S19993C10(){ note_dtor("S19993C10", this);} // tgen
S19993C10 ::S19993C10(){ note_ctor("S19993C10", this);} // tgen

static void Test_S19993C10()
{
  extern Class_Descriptor cd_S19993C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19993C10, buf);
    S19993C10 *dp, &lv = *(dp=new (buf) S19993C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S19993C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C10)");
    check_base_class_offset(lv, (S19993C6_nt*), 0, "S19993C10");
    check_field_offset(lv, s19993c10f0, ABISELECT(8,4), "S19993C10.s19993c10f0");
    check_field_offset(lv, s19993c10f1, ABISELECT(32,24), "S19993C10.s19993c10f1");
    check_field_offset(lv, s19993c10f2, ABISELECT(40,28), "S19993C10.s19993c10f2");
    test_class_info(&lv, &cd_S19993C10);
    dp->~S19993C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C10(Test_S19993C10, "S19993C10", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN9S19993C10C1Ev();
extern void _ZN9S19993C10D1Ev();
Name_Map name_map_S19993C10[] = {
  NSPAIR(_ZN9S19993C10C1Ev),
  NSPAIR(_ZN9S19993C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
static Base_Class bases_S19993C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S19993C10[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C10[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
Class_Descriptor cd_S19993C10 = {  "S19993C10", // class name
  bases_S19993C10, 1,
  &(vtc_S19993C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI9S19993C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19993C10),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  S19993C8  : virtual S77C13_nt , virtual S19993C6_nt , S19993C9 , virtual S19993C10 {
  virtual void  v19(); // _ZN8S19993C83v19Ev
  ~S19993C8(); // tgen
  S19993C8(); // tgen
};
//SIG(-1 S19993C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S19993C8 ::v19(){vfunc_called(this, "_ZN8S19993C83v19Ev");}
S19993C8 ::~S19993C8(){ note_dtor("S19993C8", this);} // tgen
S19993C8 ::S19993C8(){ note_ctor("S19993C8", this);} // tgen

static void Test_S19993C8()
{
  extern Class_Descriptor cd_S19993C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S19993C8, buf);
    S19993C8 *dp, &lv = *(dp=new (buf) S19993C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S19993C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C8)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C8");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(8,4), "S19993C8");
    check_base_class_offset(lv, (S19993C9*), 0, "S19993C8");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(16,8), "S19993C8");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(16,8), "S19993C8");
    test_class_info(&lv, &cd_S19993C8);
    dp->~S19993C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C8(Test_S19993C8, "S19993C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S19993C8C1Ev();
extern void _ZN8S19993C8D1Ev();
Name_Map name_map_S19993C8[] = {
  NSPAIR(_ZN8S19993C8C1Ev),
  NSPAIR(_ZN8S19993C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19993C6_nt,    ABISELECT(8,4), //bcp->offset
    8, //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_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(16,8), //bcp->offset
    14, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C8[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C8[];
static  VTT_ENTRY vtt_S19993C8[] = {
  {&(_ZTV8S19993C8[5]),  5,28},
  {&(_ZTV8S19993C8[12]),  12,28},
  {&(_ZTV8S19993C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
Class_Descriptor cd_S19993C8 = {  "S19993C8", // class name
  bases_S19993C8, 5,
  &(vtc_S19993C8[0]), // expected_vtbl_contents
  &(vtt_S19993C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S19993C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19993C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C8),3, //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  S19993C7  : S19993C8 , virtual S19993C2 {
  void *s19993c7f0;
  virtual  ~S19993C7(); // _ZN8S19993C7D2Ev
  virtual void  v20(); // _ZN8S19993C73v20Ev
  S19993C7(); // tgen
};
//SIG(-1 S19993C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S19993C7 ::~S19993C7(){ note_dtor("S19993C7", this);}
void  S19993C7 ::v20(){vfunc_called(this, "_ZN8S19993C73v20Ev");}
S19993C7 ::S19993C7(){ note_ctor("S19993C7", this);} // tgen

static void Test_S19993C7()
{
  extern Class_Descriptor cd_S19993C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19993C7, buf);
    S19993C7 *dp, &lv = *(dp=new (buf) S19993C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19993C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C7)");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C7");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(16,8), "S19993C7");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), 0, "S19993C7");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(24,12), "S19993C7");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(24,12), "S19993C7");
    check_base_class_offset(lv, (S19993C8*), 0, "S19993C7");
    check_base_class_offset(lv, (S19993C2*), ABISELECT(96,72), "S19993C7");
    check_field_offset(lv, s19993c7f0, ABISELECT(8,4), "S19993C7.s19993c7f0");
    test_class_info(&lv, &cd_S19993C7);
    dp->~S19993C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C7(Test_S19993C7, "S19993C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S19993C7C1Ev();
extern void _ZN8S19993C7D2Ev();
Name_Map name_map_S19993C7[] = {
  NSPAIR(_ZN8S19993C7C1Ev),
  NSPAIR(_ZN8S19993C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
static Base_Class bases_S19993C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C6_nt,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(24,12), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19993C8,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(96,72), //bcp->offset
    32, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C7[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19993C7[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__8S19993C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__8S19993C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__8S19993C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C7[] = {
  {&(_ZTV8S19993C7[6]),  6,36},
  {&(_tg__ZTV8S19993C8__8S19993C7[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__8S19993C7[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__8S19993C7[8]),  8,14},
  {&(_ZTV8S19993C7[16]),  16,36},
  {&(_ZTV8S19993C7[26]),  26,36},
  {&(_ZTV8S19993C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
Class_Descriptor cd_S19993C7 = {  "S19993C7", // class name
  bases_S19993C7, 7,
  &(vtc_S19993C7[0]), // expected_vtbl_contents
  &(vtt_S19993C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S19993C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19993C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C7),7, //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  S19993C12  {
  ::S77C13_nt s19993c12f0;
  int s19993c12f1[4];
  virtual void  v21(); // _ZN9S19993C123v21Ev
  ~S19993C12(); // tgen
  S19993C12(); // tgen
};
//SIG(-1 S19993C12) C1{ v1 FC2{ m} Fi[4]}


void  S19993C12 ::v21(){vfunc_called(this, "_ZN9S19993C123v21Ev");}
S19993C12 ::~S19993C12(){ note_dtor("S19993C12", this);} // tgen
S19993C12 ::S19993C12(){ note_ctor("S19993C12", this);} // tgen

static void Test_S19993C12()
{
  extern Class_Descriptor cd_S19993C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19993C12, buf);
    S19993C12 *dp, &lv = *(dp=new (buf) S19993C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19993C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C12)");
    check_field_offset(lv, s19993c12f0, ABISELECT(8,4), "S19993C12.s19993c12f0");
    check_field_offset(lv, s19993c12f1, ABISELECT(12,8), "S19993C12.s19993c12f1");
    test_class_info(&lv, &cd_S19993C12);
    dp->~S19993C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C12(Test_S19993C12, "S19993C12", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19993C12C1Ev();
extern void _ZN9S19993C12D1Ev();
Name_Map name_map_S19993C12[] = {
  NSPAIR(_ZN9S19993C12C1Ev),
  NSPAIR(_ZN9S19993C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19993C12[];
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY vtc_S19993C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C12[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
Class_Descriptor cd_S19993C12 = {  "S19993C12", // class name
  0,0,//no base classes
  &(vtc_S19993C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19993C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19993C12),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  S19993C11  : virtual S19993C9 , virtual S77C13_nt , S19993C12 , S19993C10 {
  virtual void  v22(); // _ZN9S19993C113v22Ev
  virtual void  v23(); // _ZN9S19993C113v23Ev
  virtual void  v24(); // _ZN9S19993C113v24Ev
  ~S19993C11(); // tgen
  S19993C11(); // tgen
};
//SIG(-1 S19993C11) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S19993C11 ::v22(){vfunc_called(this, "_ZN9S19993C113v22Ev");}
void  S19993C11 ::v23(){vfunc_called(this, "_ZN9S19993C113v23Ev");}
void  S19993C11 ::v24(){vfunc_called(this, "_ZN9S19993C113v24Ev");}
S19993C11 ::~S19993C11(){ note_dtor("S19993C11", this);} // tgen
S19993C11 ::S19993C11(){ note_ctor("S19993C11", this);} // tgen

static void Test_S19993C11()
{
  extern Class_Descriptor cd_S19993C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S19993C11, buf);
    S19993C11 *dp, &lv = *(dp=new (buf) S19993C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S19993C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C11)");
    check_base_class_offset(lv, (S19993C9*), ABISELECT(104,84), "S19993C11");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C11");
    check_base_class_offset(lv, (S19993C12*), 0, "S19993C11");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(32,24), "S19993C11");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(32,24), "S19993C11");
    test_class_info(&lv, &cd_S19993C11);
    dp->~S19993C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C11(Test_S19993C11, "S19993C11", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN9S19993C11C1Ev();
extern void _ZN9S19993C11D1Ev();
Name_Map name_map_S19993C11[] = {
  NSPAIR(_ZN9S19993C11C1Ev),
  NSPAIR(_ZN9S19993C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    ABISELECT(104,84), //bcp->offset
    16, //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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19993C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C6_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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(32,24), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C11[];
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY vtc_S19993C11[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern VTBL_ENTRY _ZTV9S19993C11[];
static  VTT_ENTRY vtt_S19993C11[] = {
  {&(_ZTV9S19993C11[4]),  4,22},
  {&(_ZTV9S19993C11[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
Class_Descriptor cd_S19993C11 = {  "S19993C11", // class name
  bases_S19993C11, 5,
  &(vtc_S19993C11[0]), // expected_vtbl_contents
  &(vtt_S19993C11[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI9S19993C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C11),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C11),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  S19993C15  : S19993C9 , virtual S19993C8 , S77C13_nt , S19993C10 , S19993C6_nt {
  virtual void  v53(); // _ZN9S19993C153v53Ev
  ~S19993C15(); // tgen
  S19993C15(); // tgen
};
//SIG(-1 S19993C15) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S19993C15 ::v53(){vfunc_called(this, "_ZN9S19993C153v53Ev");}
S19993C15 ::~S19993C15(){ note_dtor("S19993C15", this);} // tgen
S19993C15 ::S19993C15(){ note_ctor("S19993C15", this);} // tgen

static void Test_S19993C15()
{
  extern Class_Descriptor cd_S19993C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S19993C15, buf);
    S19993C15 *dp, &lv = *(dp=new (buf) S19993C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S19993C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C15)");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*), 0, "S19993C15");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), ABISELECT(96,72), "S19993C15");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(96,72), "S19993C15");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(88,68), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(104,76), "S19993C15");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(104,76), "S19993C15");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(88,68), "S19993C15");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(8,4), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*), ABISELECT(8,4), "S19993C15");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(80,64), "S19993C15");
    test_class_info(&lv, &cd_S19993C15);
    dp->~S19993C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C15(Test_S19993C15, "S19993C15", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S19993C15C1Ev();
extern void _ZN9S19993C15D1Ev();
Name_Map name_map_S19993C15[] = {
  NSPAIR(_ZN9S19993C15C1Ev),
  NSPAIR(_ZN9S19993C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
static Base_Class bases_S19993C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(96,72), //bcp->offset
    32, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(104,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(104,76), //bcp->offset
    38, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19993C6_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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19993C10,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(80,64), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C15[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C15[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C15[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C15[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C15[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C15[] = {
  {&(_ZTV9S19993C15[6]),  6,52},
  {&(_ZTV9S19993C15[29]),  29,52},
  {&(_ZTV9S19993C15[36]),  36,52},
  {&(_ZTV9S19993C15[46]),  46,52},
  {&(_tg__ZTV8S19993C8__9S19993C15[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C15[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C15[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
Class_Descriptor cd_S19993C15 = {  "S19993C15", // class name
  bases_S19993C15, 11,
  &(vtc_S19993C15[0]), // expected_vtbl_contents
  &(vtt_S19993C15[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S19993C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C15),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C15),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C14  : virtual S77C13_nt , S19993C2 , S19993C10 {
  int s19993c14f0[10];
  ::S19993C15 s19993c14f1;
  virtual void  v25(); // _ZN9S19993C143v25Ev
  virtual void  v26(); // _ZN9S19993C143v26Ev
  virtual void  v27(); // _ZN9S19993C143v27Ev
  virtual void  v28(); // _ZN9S19993C143v28Ev
  virtual void  v29(); // _ZN9S19993C143v29Ev
  ~S19993C14(); // tgen
  S19993C14(); // tgen
};
//SIG(-1 S19993C14) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S19993C14 ::v25(){vfunc_called(this, "_ZN9S19993C143v25Ev");}
void  S19993C14 ::v26(){vfunc_called(this, "_ZN9S19993C143v26Ev");}
void  S19993C14 ::v27(){vfunc_called(this, "_ZN9S19993C143v27Ev");}
void  S19993C14 ::v28(){vfunc_called(this, "_ZN9S19993C143v28Ev");}
void  S19993C14 ::v29(){vfunc_called(this, "_ZN9S19993C143v29Ev");}
S19993C14 ::~S19993C14(){ note_dtor("S19993C14", this);} // tgen
S19993C14 ::S19993C14(){ note_ctor("S19993C14", this);} // tgen

static void Test_S19993C14()
{
  extern Class_Descriptor cd_S19993C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S19993C14, buf);
    S19993C14 *dp, &lv = *(dp=new (buf) S19993C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S19993C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C14)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C14");
    check_base_class_offset(lv, (S19993C2*), 0, "S19993C14");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(128,92), "S19993C14");
    check_base_class_offset(lv, (S19993C10*), ABISELECT(128,92), "S19993C14");
    check_field_offset(lv, s19993c14f0, ABISELECT(200,152), "S19993C14.s19993c14f0");
    check_field_offset(lv, s19993c14f1, ABISELECT(240,192), "S19993C14.s19993c14f1");
    test_class_info(&lv, &cd_S19993C14);
    dp->~S19993C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C14(Test_S19993C14, "S19993C14", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S19993C14C1Ev();
extern void _ZN9S19993C14D1Ev();
Name_Map name_map_S19993C14[] = {
  NSPAIR(_ZN9S19993C14C1Ev),
  NSPAIR(_ZN9S19993C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
static Base_Class bases_S19993C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19993C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19993C6_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(128,92), //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 _ZTI9S19993C14[];
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C14[];
static  VTT_ENTRY vtt_S19993C14[] = {
  {&(_ZTV9S19993C14[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
Class_Descriptor cd_S19993C14 = {  "S19993C14", // class name
  bases_S19993C14, 4,
  &(vtc_S19993C14[0]), // expected_vtbl_contents
  &(vtt_S19993C14[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S19993C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19993C14),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C14),1, //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  S19993C13  : virtual S19993C14 {
  int s19993c13f0[2];
  virtual void  v30(); // _ZN9S19993C133v30Ev
  virtual void  v31(); // _ZN9S19993C133v31Ev
  virtual void  v32(); // _ZN9S19993C133v32Ev
  ~S19993C13(); // tgen
  S19993C13(); // tgen
};
//SIG(-1 S19993C13) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S19993C13 ::v30(){vfunc_called(this, "_ZN9S19993C133v30Ev");}
void  S19993C13 ::v31(){vfunc_called(this, "_ZN9S19993C133v31Ev");}
void  S19993C13 ::v32(){vfunc_called(this, "_ZN9S19993C133v32Ev");}
S19993C13 ::~S19993C13(){ note_dtor("S19993C13", this);} // tgen
S19993C13 ::S19993C13(){ note_ctor("S19993C13", this);} // tgen

static void Test_S19993C13()
{
  extern Class_Descriptor cd_S19993C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S19993C13, buf);
    S19993C13 *dp, &lv = *(dp=new (buf) S19993C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S19993C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C13)");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C13");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(16,12), "S19993C13");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(144,104), "S19993C13");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(144,104), "S19993C13");
    check_base_class_offset(lv, (S19993C14*), ABISELECT(16,12), "S19993C13");
    check_field_offset(lv, s19993c13f0, ABISELECT(8,4), "S19993C13.s19993c13f0");
    test_class_info(&lv, &cd_S19993C13);
    dp->~S19993C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C13(Test_S19993C13, "S19993C13", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S19993C13C1Ev();
extern void _ZN9S19993C13D1Ev();
Name_Map name_map_S19993C13[] = {
  NSPAIR(_ZN9S19993C13C1Ev),
  NSPAIR(_ZN9S19993C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
static Base_Class bases_S19993C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C2,    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_S19993C6_nt,    ABISELECT(144,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(144,104), //bcp->offset
    28, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C13[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C13[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C13[];
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C13[] = {
  {&(_ZTV9S19993C13[4]),  4,36},
  {&(_ZTV9S19993C13[22]),  22,36},
  {&(_ZTV9S19993C13[30]),  30,36},
  {&(_tg__ZTV9S19993C14__9S19993C13[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
Class_Descriptor cd_S19993C13 = {  "S19993C13", // class name
  bases_S19993C13, 5,
  &(vtc_S19993C13[0]), // expected_vtbl_contents
  &(vtt_S19993C13[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S19993C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19993C13),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C13),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  S19993C5  : virtual S19993C6_nt , S19993C7 , S19993C11 , virtual S19993C12 , virtual S19993C13 {
  void *s19993c5f0;
  virtual void  v33(); // _ZN8S19993C53v33Ev
  virtual void  v34(); // _ZN8S19993C53v34Ev
  virtual void  v35(); // _ZN8S19993C53v35Ev
  virtual void  v36(); // _ZN8S19993C53v36Ev
  virtual void  v37(); // _ZN8S19993C53v37Ev
  virtual void  v38(); // _ZN8S19993C53v38Ev
  virtual void  v39(); // _ZN8S19993C53v39Ev
  virtual void  v40(); // _ZN8S19993C53v40Ev
  ~S19993C5(); // tgen
  S19993C5(); // tgen
};
//SIG(-1 S19993C5) C1{ VBC2{ v9 v10} BC3{ BC4{ VBC5{ m} VBC2 BC6{ v11 v12} VBC7{ BC2 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} VBC8{ v18 Fp FD[7]} vd v19 Fp} BC9{ VBC6 VBC5 BC10{ v20 FC5 Fi[4]} BC7 v21 v22 v23} VBC10 VBC11{ VBC12{ VBC5 BC8 BC7 v24 v25 v26 v27 v28 Fi[10] FC13{ BC6 VBC4 BC5 BC7 BC2 v32}} v29 v30 v31 Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S19993C5 ::v33(){vfunc_called(this, "_ZN8S19993C53v33Ev");}
void  S19993C5 ::v34(){vfunc_called(this, "_ZN8S19993C53v34Ev");}
void  S19993C5 ::v35(){vfunc_called(this, "_ZN8S19993C53v35Ev");}
void  S19993C5 ::v36(){vfunc_called(this, "_ZN8S19993C53v36Ev");}
void  S19993C5 ::v37(){vfunc_called(this, "_ZN8S19993C53v37Ev");}
void  S19993C5 ::v38(){vfunc_called(this, "_ZN8S19993C53v38Ev");}
void  S19993C5 ::v39(){vfunc_called(this, "_ZN8S19993C53v39Ev");}
void  S19993C5 ::v40(){vfunc_called(this, "_ZN8S19993C53v40Ev");}
S19993C5 ::~S19993C5(){ note_dtor("S19993C5", this);} // tgen
S19993C5 ::S19993C5(){ note_ctor("S19993C5", this);} // tgen

static void Test_S19993C5()
{
  extern Class_Descriptor cd_S19993C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,156)];
    init_test(&cd_S19993C5, buf);
    S19993C5 *dp, &lv = *(dp=new (buf) S19993C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,620), "sizeof(S19993C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C5)");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(128,96), "S19993C5");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*), ABISELECT(128,96), "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*), 0, "S19993C5");
    /*is_ambiguous_... S19993C5::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(136,100), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*), ABISELECT(136,100), "S19993C5");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*), ABISELECT(208,160), "S19993C5");
    check_base_class_offset(lv, (S19993C7*), 0, "S19993C5");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(336,252), "S19993C5");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(16,8), "S19993C5");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(48,32), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(48,32), "S19993C5");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(16,8), "S19993C5");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*), ABISELECT(344,256), "S19993C5");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(400,292), "S19993C5");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(528,384), "S19993C5");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(528,384), "S19993C5");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(400,292), "S19993C5");
    check_base_class_offset(lv, (S19993C13*), ABISELECT(376,280), "S19993C5");
    check_field_offset(lv, s19993c5f0, ABISELECT(120,92), "S19993C5.s19993c5f0");
    test_class_info(&lv, &cd_S19993C5);
    dp->~S19993C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C5(Test_S19993C5, "S19993C5", ABISELECT(816,620));

#else // __cplusplus

extern void _ZN8S19993C5C1Ev();
extern void _ZN8S19993C5D1Ev();
Name_Map name_map_S19993C5[] = {
  NSPAIR(_ZN8S19993C5C1Ev),
  NSPAIR(_ZN8S19993C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
static Base_Class bases_S19993C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    ABISELECT(128,96), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(136,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(136,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //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_S19993C8,    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
    13, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(208,160), //bcp->offset
    60, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19993C7,    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_S19993C9,    ABISELECT(336,252), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19993C12,    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
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    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
    16, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(48,32), //bcp->offset
    32, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(344,256), //bcp->offset
    70, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(400,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(528,384), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(528,384), //bcp->offset
    105, //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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(400,292), //bcp->offset
    84, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(376,280), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C5[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C5[] = {
  ABISELECT(400,292),
  ABISELECT(376,280),
  ABISELECT(344,256),
  ABISELECT(336,252),
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  0,
  ABISELECT(-344,-256),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-528,-384),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C5[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__8S19993C5[] = {
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C7__8S19993C5[] = {
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C7__8S19993C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C7__8S19993C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C7__8S19993C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C7__8S19993C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C7__8S19993C5[] = {
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__8S19993C5[] = {
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5[] = {
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C5[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C5[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5[] = {
  ABISELECT(-400,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C5[] = {
  {&(_ZTV8S19993C5[10]),  10,113},
  {&(_tg__ZTV8S19993C7__8S19993C5[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C7__8S19993C5[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C7__8S19993C5[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C7__8S19993C5[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C7__8S19993C5[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C7__8S19993C5[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C7__8S19993C5[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__8S19993C5[4]),  4,6},
  {&(_ZTV8S19993C5[44]),  44,113},
  {&(_ZTV8S19993C5[54]),  54,113},
  {&(_ZTV8S19993C5[63]),  63,113},
  {&(_ZTV8S19993C5[28]),  28,113},
  {&(_ZTV8S19993C5[68]),  68,113},
  {&(_ZTV8S19993C5[73]),  73,113},
  {&(_ZTV8S19993C5[81]),  81,113},
  {&(_ZTV8S19993C5[99]),  99,113},
  {&(_ZTV8S19993C5[107]),  107,113},
  {&(_tg__ZTV9S19993C13__8S19993C5[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C5[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C5[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C5[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
Class_Descriptor cd_S19993C5 = {  "S19993C5", // class name
  bases_S19993C5, 19,
  &(vtc_S19993C5[0]), // expected_vtbl_contents
  &(vtt_S19993C5[0]), // expected_vtt_contents
  ABISELECT(816,620), // object size
  NSPAIRA(_ZTI8S19993C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19993C5),113, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C5),23, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C3  : S77C13_nt , virtual S19993C5 {
  int s19993c3f0;
  virtual  ~S19993C3(); // _ZN8S19993C3D2Ev
  virtual void  v41(); // _ZN8S19993C33v41Ev
  virtual void  v42(); // _ZN8S19993C33v42Ev
  virtual void  v43(); // _ZN8S19993C33v43Ev
  S19993C3(); // tgen
};
//SIG(-1 S19993C3) C1{ BC2{ m} VBC3{ VBC4{ v4 v5} BC5{ BC6{ VBC2 VBC4 BC7{ v6 v7} VBC8{ BC4 v8 v9 v10 v11 Fi[5] Fp FL[4]} v12} VBC9{ v13 Fp FD[7]} vd v14 Fp} BC10{ VBC7 VBC2 BC11{ v15 FC2 Fi[4]} BC8 v16 v17 v18} VBC11 VBC12{ VBC13{ VBC2 BC9 BC8 v19 v20 v21 v22 v23 Fi[10] FC14{ BC7 VBC6 BC2 BC8 BC4 v35}} v24 v25 v26 Fi[2]} v27 v28 v29 v30 v31 v32 v33 v34 Fp} vd v1 v2 v3 Fi}


 S19993C3 ::~S19993C3(){ note_dtor("S19993C3", this);}
void  S19993C3 ::v41(){vfunc_called(this, "_ZN8S19993C33v41Ev");}
void  S19993C3 ::v42(){vfunc_called(this, "_ZN8S19993C33v42Ev");}
void  S19993C3 ::v43(){vfunc_called(this, "_ZN8S19993C33v43Ev");}
S19993C3 ::S19993C3(){ note_ctor("S19993C3", this);} // tgen

static void Test_S19993C3()
{
  extern Class_Descriptor cd_S19993C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(53,157)];
    init_test(&cd_S19993C3, buf);
    S19993C3 *dp, &lv = *(dp=new (buf) S19993C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,624), "sizeof(S19993C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C3)");
    /*is_ambiguous_... S19993C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19993C3");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C5*), 0, "S19993C3");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C5*), 0, "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    /*is_ambiguous_... S19993C3::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(144,104), "S19993C3");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C5*), ABISELECT(224,164), "S19993C3");
    check_base_class_offset(lv, (S19993C7*)(S19993C5*), ABISELECT(16,8), "S19993C3");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*)(S19993C5*), ABISELECT(352,256), "S19993C3");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*)(S19993C5*), ABISELECT(32,16), "S19993C3");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(64,40), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(64,40), "S19993C3");
    check_base_class_offset(lv, (S19993C11*)(S19993C5*), ABISELECT(32,16), "S19993C3");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C5*), ABISELECT(360,260), "S19993C3");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(416,296), "S19993C3");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(544,388), "S19993C3");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(544,388), "S19993C3");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(416,296), "S19993C3");
    check_base_class_offset(lv, (S19993C13*)(S19993C5*), ABISELECT(392,284), "S19993C3");
    check_base_class_offset(lv, (S19993C5*), ABISELECT(16,8), "S19993C3");
    check_field_offset(lv, s19993c3f0, ABISELECT(8,4), "S19993C3.s19993c3f0");
    test_class_info(&lv, &cd_S19993C3);
    dp->~S19993C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C3(Test_S19993C3, "S19993C3", ABISELECT(832,624));

#else // __cplusplus

extern void _ZN8S19993C3C1Ev();
extern void _ZN8S19993C3D2Ev();
Name_Map name_map_S19993C3[] = {
  NSPAIR(_ZN8S19993C3C1Ev),
  NSPAIR(_ZN8S19993C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C5;
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
static Base_Class bases_S19993C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19993C6_nt,    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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,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
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    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
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(144,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(144,104), //bcp->offset
    83, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(16,8), //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
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(224,164), //bcp->offset
    97, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19993C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(352,256), //bcp->offset
    101, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19993C12,    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
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    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
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(64,40), //bcp->offset
    75, //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
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(32,16), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C12,    ABISELECT(360,260), //bcp->offset
    107, //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
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C2,    ABISELECT(416,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(544,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(544,388), //bcp->offset
    142, //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(416,296), //bcp->offset
    121, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(392,284), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C3[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C3D1Ev();
extern void _ZN8S19993C3D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19993C3D1Ev,_ZThn8_N8S19993C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19993C3D0Ev,_ZThn8_N8S19993C3D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C3[] = {
  ABISELECT(416,296),
  ABISELECT(392,284),
  ABISELECT(360,260),
  ABISELECT(352,256),
  ABISELECT(224,164),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-392,-284),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-544,-388),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19993C3[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C3[] = {
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C78S19993C5__8S19993C3[] = {
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C78S19993C5__8S19993C3[] = {
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5__8S19993C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C5__8S19993C3[] = {
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C5__8S19993C3[] = {
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5__8S19993C3[] = {
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5__8S19993C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C3[] = {
  ABISELECT(-528,-380),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C3[] = {
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C3[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C3[] = {
  ABISELECT(-272,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C3[] = {
  {&(_ZTV8S19993C3[13]),  13,150},
  {&(_ZTV8S19993C3[53]),  53,150},
  {&(_ZTV8S19993C3[13]),  13,150},
  {&(_ZTV8S19993C3[91]),  91,150},
  {&(_ZTV8S19993C3[100]),  100,150},
  {&(_ZTV8S19993C3[71]),  71,150},
  {&(_ZTV8S19993C3[105]),  105,150},
  {&(_ZTV8S19993C3[77]),  77,150},
  {&(_ZTV8S19993C3[110]),  110,150},
  {&(_ZTV8S19993C3[118]),  118,150},
  {&(_ZTV8S19993C3[136]),  136,150},
  {&(_ZTV8S19993C3[144]),  144,150},
  {&(_tg__ZTV8S19993C5__8S19993C3[10]),  10,24},
  {&(_tg__ZTV8S19993C78S19993C5__8S19993C3[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C78S19993C5__8S19993C3[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C3[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV11S19993C6_nt__8S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C5__8S19993C3[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5__8S19993C3[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C5__8S19993C3[4]),  4,6},
  {&(_tg__ZTV9S19993C12__A1__8S19993C5__8S19993C3[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C5__8S19993C3[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C5__8S19993C3[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C3[2]),  2,8},
  {&(_tg__ZTV9S19993C13__8S19993C3[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C3[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C3[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C3[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19993C3[];
extern  VTBL_ENTRY _ZTV8S19993C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C3[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19993C3D0Ev,_ZThn8_N8S19993C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19993C3D1Ev,_ZThn8_N8S19993C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19993C3 = {  "S19993C3", // class name
  bases_S19993C3, 21,
  &(vtc_S19993C3[0]), // expected_vtbl_contents
  &(vtt_S19993C3[0]), // expected_vtt_contents
  ABISELECT(832,624), // object size
  NSPAIRA(_ZTI8S19993C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19993C3),150, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C3),35, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C18  : virtual S19993C12 , S19993C9 , virtual S19993C6_nt , S19993C15 , S19993C2 {
  int s19993c18f0;
  virtual void  v54(); // _ZN9S19993C183v54Ev
  virtual void  v55(); // _ZN9S19993C183v55Ev
  virtual void  v56(); // _ZN9S19993C183v56Ev
  ~S19993C18(); // tgen
  S19993C18(); // tgen
};
//SIG(-1 S19993C18) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S19993C18 ::v54(){vfunc_called(this, "_ZN9S19993C183v54Ev");}
void  S19993C18 ::v55(){vfunc_called(this, "_ZN9S19993C183v55Ev");}
void  S19993C18 ::v56(){vfunc_called(this, "_ZN9S19993C183v56Ev");}
S19993C18 ::~S19993C18(){ note_dtor("S19993C18", this);} // tgen
S19993C18 ::S19993C18(){ note_ctor("S19993C18", this);} // tgen

static void Test_S19993C18()
{
  extern Class_Descriptor cd_S19993C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S19993C18, buf);
    S19993C18 *dp, &lv = *(dp=new (buf) S19993C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S19993C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C18)");
    check_base_class_offset(lv, (S19993C12*), ABISELECT(232,168), "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*), 0, "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(264,192), "S19993C18");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(264,192), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*), ABISELECT(8,4), "S19993C18");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C18");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(272,196), "S19993C18");
    /*is_ambiguous_... S19993C18::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(280,200), "S19993C18");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(280,200), "S19993C18");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*), ABISELECT(272,196), "S19993C18");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*), ABISELECT(8,4), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*), ABISELECT(16,8), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*), ABISELECT(16,8), "S19993C18");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*), ABISELECT(88,68), "S19993C18");
    check_base_class_offset(lv, (S19993C15*), ABISELECT(8,4), "S19993C18");
    check_base_class_offset(lv, (S19993C2*), ABISELECT(96,72), "S19993C18");
    check_field_offset(lv, s19993c18f0, ABISELECT(224,164), "S19993C18.s19993c18f0");
    test_class_info(&lv, &cd_S19993C18);
    dp->~S19993C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C18(Test_S19993C18, "S19993C18", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN9S19993C18C1Ev();
extern void _ZN9S19993C18D1Ev();
Name_Map name_map_S19993C18[] = {
  NSPAIR(_ZN9S19993C18C1Ev),
  NSPAIR(_ZN9S19993C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
static Base_Class bases_S19993C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C12,    ABISELECT(232,168), //bcp->offset
    36, //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_S19993C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(264,192), //bcp->offset
    40, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C9,    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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S77C13_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_S19993C6_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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(16,8), //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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(88,68), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_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},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C18[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C18[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C18[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C18[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C15__9S19993C18[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C15__9S19993C18[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C15__9S19993C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C18[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C18[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C18[] = {
  {&(_ZTV9S19993C18[7]),  7,71},
  {&(_tg__ZTV9S19993C15__9S19993C18[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C15__9S19993C18[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C15__9S19993C18[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C15__9S19993C18[8]),  8,14},
  {&(_ZTV9S19993C18[39]),  39,71},
  {&(_ZTV9S19993C18[44]),  44,71},
  {&(_ZTV9S19993C18[18]),  18,71},
  {&(_ZTV9S19993C18[54]),  54,71},
  {&(_ZTV9S19993C18[65]),  65,71},
  {&(_tg__ZTV8S19993C8__9S19993C18[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C18[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C18[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
Class_Descriptor cd_S19993C18 = {  "S19993C18", // class name
  bases_S19993C18, 15,
  &(vtc_S19993C18[0]), // expected_vtbl_contents
  &(vtt_S19993C18[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI9S19993C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C18),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C18),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C17  : virtual S19993C11 {
  ::S19993C18 s19993c17f0;
  ::S19993C10 s19993c17f1;
  int s19993c17f2;
  ::S19993C7 s19993c17f3;
  virtual void  v44(); // _ZN9S19993C173v44Ev
  virtual void  v45(); // _ZN9S19993C173v45Ev
  virtual void  v46(); // _ZN9S19993C173v46Ev
  virtual void  v47(); // _ZN9S19993C173v47Ev
  ~S19993C17(); // tgen
  S19993C17(); // tgen
};
//SIG(-1 S19993C17) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC5 BC3 VBC7 BC9{ BC3 VBC10{ VBC4 VBC7 BC3 VBC6 v20} BC4 BC6 BC7 v21} BC11{ v22 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC12{ BC10 VBC11 vd v23 Fp}}


void  S19993C17 ::v44(){vfunc_called(this, "_ZN9S19993C173v44Ev");}
void  S19993C17 ::v45(){vfunc_called(this, "_ZN9S19993C173v45Ev");}
void  S19993C17 ::v46(){vfunc_called(this, "_ZN9S19993C173v46Ev");}
void  S19993C17 ::v47(){vfunc_called(this, "_ZN9S19993C173v47Ev");}
S19993C17 ::~S19993C17(){ note_dtor("S19993C17", this);} // tgen
S19993C17 ::S19993C17(){ note_ctor("S19993C17", this);} // tgen

static void Test_S19993C17()
{
  extern Class_Descriptor cd_S19993C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S19993C17, buf);
    S19993C17 *dp, &lv = *(dp=new (buf) S19993C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S19993C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C17)");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), 0, "S19993C17");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C17");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(672,492), "S19993C17");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(704,516), "S19993C17");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(704,516), "S19993C17");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(672,492), "S19993C17");
    check_field_offset(lv, s19993c17f0, ABISELECT(16,4), "S19993C17.s19993c17f0");
    check_field_offset(lv, s19993c17f1, ABISELECT(368,264), "S19993C17.s19993c17f1");
    check_field_offset(lv, s19993c17f2, ABISELECT(440,324), "S19993C17.s19993c17f2");
    check_field_offset(lv, s19993c17f3, ABISELECT(448,328), "S19993C17.s19993c17f3");
    test_class_info(&lv, &cd_S19993C17);
    dp->~S19993C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C17(Test_S19993C17, "S19993C17", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN9S19993C17C1Ev();
extern void _ZN9S19993C17D1Ev();
Name_Map name_map_S19993C17[] = {
  NSPAIR(_ZN9S19993C17C1Ev),
  NSPAIR(_ZN9S19993C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
static Base_Class bases_S19993C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C12,    ABISELECT(672,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(704,516), //bcp->offset
    31, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C17[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY vtc_S19993C17[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19993C17[];
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__9S19993C17[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
static  VTT_ENTRY vtt_S19993C17[] = {
  {&(_ZTV9S19993C17[7]),  7,39},
  {&(_ZTV9S19993C17[27]),  27,39},
  {&(_ZTV9S19993C17[7]),  7,39},
  {&(_ZTV9S19993C17[33]),  33,39},
  {&(_tg__ZTV9S19993C11__9S19993C17[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__9S19993C17[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
Class_Descriptor cd_S19993C17 = {  "S19993C17", // class name
  bases_S19993C17, 6,
  &(vtc_S19993C17[0]), // expected_vtbl_contents
  &(vtt_S19993C17[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI9S19993C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19993C17),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C17),6, //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  S19993C16  : virtual S19993C11 , virtual S19993C17 , S19993C13 , S19993C7 {
  int s19993c16f0:13;
  virtual  ~S19993C16(); // _ZN9S19993C16D2Ev
  virtual void  v48(); // _ZN9S19993C163v48Ev
  virtual void  v49(); // _ZN9S19993C163v49Ev
  virtual void  v50(); // _ZN9S19993C163v50Ev
  virtual void  v51(); // _ZN9S19993C163v51Ev
  virtual void  v52(); // _ZN9S19993C163v52Ev
  S19993C16(); // tgen
};
//SIG(-1 S19993C16) C1{ VBC2{ VBC3{ v6 v7} VBC4{ m} BC5{ v8 FC4 Fi[4]} BC6{ BC7{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} VBC8{ VBC2 v18 v19 v20 v21 FC9{ VBC5 BC3 VBC7 BC10{ BC3 VBC11{ VBC4 VBC7 BC3 VBC6 v31} BC4 BC6 BC7 v36} BC12{ v22 Fp FD[7]} v33 v34 v35 Fi} FC6 Fi FC13{ BC11 VBC12 vd v32 Fp}} BC14{ VBC15{ VBC4 BC12 BC6 v23 v24 v25 v26 v27 Fi[10] FC10} v28 v29 v30 Fi[2]} BC13 vd v1 v2 v3 v4 v5 Fi:13}


 S19993C16 ::~S19993C16(){ note_dtor("S19993C16", this);}
void  S19993C16 ::v48(){vfunc_called(this, "_ZN9S19993C163v48Ev");}
void  S19993C16 ::v49(){vfunc_called(this, "_ZN9S19993C163v49Ev");}
void  S19993C16 ::v50(){vfunc_called(this, "_ZN9S19993C163v50Ev");}
void  S19993C16 ::v51(){vfunc_called(this, "_ZN9S19993C163v51Ev");}
void  S19993C16 ::v52(){vfunc_called(this, "_ZN9S19993C163v52Ev");}
S19993C16 ::S19993C16(){ note_ctor("S19993C16", this);} // tgen

static void Test_S19993C16()
{
  extern Class_Descriptor cd_S19993C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,272)];
    init_test(&cd_S19993C16, buf);
    S19993C16 *dp, &lv = *(dp=new (buf) S19993C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,1084), "sizeof(S19993C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C16)");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(144,108), "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), 0, "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), 0, "S19993C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*), 0, "S19993C16");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(72,48), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(72,48), "S19993C16");
    check_base_class_offset(lv, (S19993C11*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C11*)(S19993C17*), ABISELECT(40,24), "S19993C16");
    check_base_class_offset(lv, (S19993C17*), ABISELECT(144,108), "S19993C16");
    check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(816,600), "S19993C16");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(944,692), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(944,692), "S19993C16");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(816,600), "S19993C16");
    check_base_class_offset(lv, (S19993C13*), 0, "S19993C16");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*), ABISELECT(1232,928), "S19993C16");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*), ABISELECT(16,12), "S19993C16");
    /*is_ambiguous_... S19993C16::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(1240,932), "S19993C16");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*), ABISELECT(1240,932), "S19993C16");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*), ABISELECT(16,12), "S19993C16");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*), ABISELECT(1312,992), "S19993C16");
    check_base_class_offset(lv, (S19993C7*), ABISELECT(16,12), "S19993C16");
    set_bf_and_test(lv, s19993c16f0, ABISELECT(32,20), 0, 13, 1, "S19993C16");
    set_bf_and_test(lv, s19993c16f0, ABISELECT(32,20), 0, 13, hide_sll(1LL<<12), "S19993C16");
    test_class_info(&lv, &cd_S19993C16);
    dp->~S19993C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C16(Test_S19993C16, "S19993C16", ABISELECT(1440,1084));

#else // __cplusplus

extern void _ZN9S19993C16C1Ev();
extern void _ZN9S19993C16D2Ev();
Name_Map name_map_S19993C16[] = {
  NSPAIR(_ZN9S19993C16C1Ev),
  NSPAIR(_ZN9S19993C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C17;
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
static Base_Class bases_S19993C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C9,    ABISELECT(144,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C12,    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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(72,48), //bcp->offset
    50, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C17,    ABISELECT(144,108), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(816,600), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(944,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(944,692), //bcp->offset
    96, //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(816,600), //bcp->offset
    75, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19993C13,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C6_nt,    ABISELECT(1232,928), //bcp->offset
    104, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19993C9,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1240,932), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1240,932), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(16,12), //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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(1312,992), //bcp->offset
    124, //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
    14, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19993C7,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C16[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN9S19993C16D1Ev();
extern void _ZN9S19993C16D0Ev();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev)();
extern void _ZN8S19993C73v20Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY vtc_S19993C16[] = {
  ABISELECT(1312,992),
  ABISELECT(1240,932),
  ABISELECT(1232,928),
  ABISELECT(144,108),
  ABISELECT(144,108),
  ABISELECT(40,24),
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  ABISELECT(-1232,-928),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1240,-932),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-1312,-992),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern VTBL_ENTRY _ZTV9S19993C16[];
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__9S19993C16[] = {
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__9S19993C16[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__9S19993C16[] = {
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__9S19993C16[] = {
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C7__9S19993C16[] = {
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C7__9S19993C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C7__9S19993C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C7__9S19993C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C7__9S19993C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C7__9S19993C16[] = {
  0,
  ABISELECT(-1296,-980),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C16[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__9S19993C16[] = {
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__9S19993C16[] = {
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17__9S19993C16[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C17__9S19993C16[] = {
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C16[] = {
  ABISELECT(-816,-600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
static  VTT_ENTRY vtt_S19993C16[] = {
  {&(_ZTV9S19993C16[10]),  10,128},
  {&(_tg__ZTV9S19993C13__9S19993C16[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__9S19993C16[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__9S19993C16[2]),  2,8},
  {&(_tg__ZTV8S19993C7__9S19993C16[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C7__9S19993C16[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C7__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C7__9S19993C16[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C7__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C7__9S19993C16[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C7__9S19993C16[3]),  3,4},
  {&(_ZTV9S19993C16[46]),  46,128},
  {&(_ZTV9S19993C16[69]),  69,128},
  {&(_ZTV9S19993C16[52]),  52,128},
  {&(_ZTV9S19993C16[69]),  69,128},
  {&(_ZTV9S19993C16[90]),  90,128},
  {&(_ZTV9S19993C16[98]),  98,128},
  {&(_ZTV9S19993C16[26]),  26,128},
  {&(_ZTV9S19993C16[108]),  108,128},
  {&(_ZTV9S19993C16[118]),  118,128},
  {&(_ZTV9S19993C16[127]),  127,128},
  {&(_tg__ZTV9S19993C11__9S19993C16[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__9S19993C16[4]),  4,6},
  {&(_tg__ZTV9S19993C17__9S19993C16[7]),  7,13},
  {&(_tg__ZTV9S19993C11__9S19993C17__9S19993C16[14]),  14,18},
  {&(_tg__ZTV9S19993C17__9S19993C16[7]),  7,13},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C17__9S19993C16[2]),  2,8},
  {&(_tg__ZTV9S19993C14__9S19993C16[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19993C16[];
extern  VTBL_ENTRY _ZTV9S19993C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C16[];
Class_Descriptor cd_S19993C16 = {  "S19993C16", // class name
  bases_S19993C16, 19,
  &(vtc_S19993C16[0]), // expected_vtbl_contents
  &(vtt_S19993C16[0]), // expected_vtt_contents
  ABISELECT(1440,1084), // object size
  NSPAIRA(_ZTI9S19993C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C16),128, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C16),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19993C22_nt  {
  int s19993c22f0;
  void  mf19993c22(); // _ZN12S19993C22_nt10mf19993c22Ev
};
//SIG(1 S19993C22_nt) U1{ m Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19993C21  {
  ::S19993C22_nt s19993c21f0;
  virtual void  v57(); // _ZN9S19993C213v57Ev
  virtual void  v58(); // _ZN9S19993C213v58Ev
  virtual void  v59(); // _ZN9S19993C213v59Ev
  virtual void  v60(); // _ZN9S19993C213v60Ev
  virtual void  v61(); // _ZN9S19993C213v61Ev
  virtual void  v62(); // _ZN9S19993C213v62Ev
  ~S19993C21(); // tgen
  S19993C21(); // tgen
};
//SIG(-1 S19993C21) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S19993C21 ::v57(){vfunc_called(this, "_ZN9S19993C213v57Ev");}
void  S19993C21 ::v58(){vfunc_called(this, "_ZN9S19993C213v58Ev");}
void  S19993C21 ::v59(){vfunc_called(this, "_ZN9S19993C213v59Ev");}
void  S19993C21 ::v60(){vfunc_called(this, "_ZN9S19993C213v60Ev");}
void  S19993C21 ::v61(){vfunc_called(this, "_ZN9S19993C213v61Ev");}
void  S19993C21 ::v62(){vfunc_called(this, "_ZN9S19993C213v62Ev");}
S19993C21 ::~S19993C21(){ note_dtor("S19993C21", this);} // tgen
S19993C21 ::S19993C21(){ note_ctor("S19993C21", this);} // tgen

static void Test_S19993C21()
{
  extern Class_Descriptor cd_S19993C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19993C21, buf);
    S19993C21 *dp, &lv = *(dp=new (buf) S19993C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19993C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19993C21)");
    check_field_offset(lv, s19993c21f0, ABISELECT(8,4), "S19993C21.s19993c21f0");
    test_class_info(&lv, &cd_S19993C21);
    dp->~S19993C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C21(Test_S19993C21, "S19993C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19993C21C1Ev();
extern void _ZN9S19993C21D1Ev();
Name_Map name_map_S19993C21[] = {
  NSPAIR(_ZN9S19993C21C1Ev),
  NSPAIR(_ZN9S19993C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19993C21[];
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C21[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
Class_Descriptor cd_S19993C21 = {  "S19993C21", // class name
  0,0,//no base classes
  &(vtc_S19993C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19993C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19993C21),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  S19993C20  : S19993C6_nt , virtual S19993C8 , S19993C2 , S19993C18 , virtual S19993C21 {
  virtual void  v63(); // _ZN9S19993C203v63Ev
  virtual void  v64(); // _ZN9S19993C203v64Ev
  ~S19993C20(); // tgen
  S19993C20(); // tgen
};
//SIG(-1 S19993C20) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S19993C20 ::v63(){vfunc_called(this, "_ZN9S19993C203v63Ev");}
void  S19993C20 ::v64(){vfunc_called(this, "_ZN9S19993C203v64Ev");}
S19993C20 ::~S19993C20(){ note_dtor("S19993C20", this);} // tgen
S19993C20 ::S19993C20(){ note_ctor("S19993C20", this);} // tgen

static void Test_S19993C20()
{
  extern Class_Descriptor cd_S19993C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S19993C20, buf);
    S19993C20 *dp, &lv = *(dp=new (buf) S19993C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S19993C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C20)");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), 0, "S19993C20");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C20");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(384,268), "S19993C20");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*), ABISELECT(384,268), "S19993C20");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(376,264), "S19993C20");
    /*is_ambiguous_... S19993C20::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(392,272), "S19993C20");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(392,272), "S19993C20");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(376,264), "S19993C20");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*), ABISELECT(376,264), "S19993C20");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*), ABISELECT(16,4), "S19993C20");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*), ABISELECT(464,332), "S19993C20");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*), ABISELECT(144,96), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*), ABISELECT(160,104), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*), ABISELECT(160,104), "S19993C20");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*), ABISELECT(232,164), "S19993C20");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*), ABISELECT(152,100), "S19993C20");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*), ABISELECT(240,168), "S19993C20");
    check_base_class_offset(lv, (S19993C18*), ABISELECT(144,96), "S19993C20");
    check_base_class_offset(lv, (S19993C21*), ABISELECT(496,356), "S19993C20");
    test_class_info(&lv, &cd_S19993C20);
    dp->~S19993C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C20(Test_S19993C20, "S19993C20", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN9S19993C20C1Ev();
extern void _ZN9S19993C20D1Ev();
Name_Map name_map_S19993C20[] = {
  NSPAIR(_ZN9S19993C20C1Ev),
  NSPAIR(_ZN9S19993C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
static Base_Class bases_S19993C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C6_nt,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19993C9,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C2,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(464,332), //bcp->offset
    82, //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
    17, //immediately_derived
  0, 1},
  {&cd_S19993C9,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C9,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C21,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C20[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C20[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19993C20[];
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C20[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C18__9S19993C20[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C18__9S19993C20[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C18__9S19993C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C18__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C20[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C20[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C20[] = {
  {&(_ZTV9S19993C20[8]),  8,100},
  {&(_tg__ZTV9S19993C18__9S19993C20[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C20[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C18__9S19993C20[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C18__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C18__9S19993C20[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C18__9S19993C20[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C18__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C18__9S19993C20[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C18__9S19993C20[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C18__9S19993C20[8]),  8,14},
  {&(_ZTV9S19993C20[59]),  59,100},
  {&(_ZTV9S19993C20[66]),  66,100},
  {&(_ZTV9S19993C20[76]),  76,100},
  {&(_ZTV9S19993C20[22]),  22,100},
  {&(_ZTV9S19993C20[85]),  85,100},
  {&(_ZTV9S19993C20[33]),  33,100},
  {&(_ZTV9S19993C20[94]),  94,100},
  {&(_tg__ZTV8S19993C8__9S19993C20[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C20[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C20[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
Class_Descriptor cd_S19993C20 = {  "S19993C20", // class name
  bases_S19993C20, 19,
  &(vtc_S19993C20[0]), // expected_vtbl_contents
  &(vtt_S19993C20[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI9S19993C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19993C20),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C20),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C19  : virtual S19993C12 , virtual S19993C6_nt , virtual S19993C8 , S19993C20 {
  long double s19993c19f0;
  __tsi64 s19993c19f1[8];
  virtual void  v65(); // _ZN9S19993C193v65Ev
  virtual void  v66(); // _ZN9S19993C193v66Ev
  virtual void  v67(); // _ZN9S19993C193v67Ev
  virtual void  v68(); // _ZN9S19993C193v68Ev
  virtual void  v69(); // _ZN9S19993C193v69Ev
  virtual void  v70(); // _ZN9S19993C193v70Ev
  virtual void  v71(); // _ZN9S19993C193v71Ev
  ~S19993C19(); // tgen
  S19993C19(); // tgen
};
//SIG(-1 S19993C19) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S19993C19 ::v65(){vfunc_called(this, "_ZN9S19993C193v65Ev");}
void  S19993C19 ::v66(){vfunc_called(this, "_ZN9S19993C193v66Ev");}
void  S19993C19 ::v67(){vfunc_called(this, "_ZN9S19993C193v67Ev");}
void  S19993C19 ::v68(){vfunc_called(this, "_ZN9S19993C193v68Ev");}
void  S19993C19 ::v69(){vfunc_called(this, "_ZN9S19993C193v69Ev");}
void  S19993C19 ::v70(){vfunc_called(this, "_ZN9S19993C193v70Ev");}
void  S19993C19 ::v71(){vfunc_called(this, "_ZN9S19993C193v71Ev");}
S19993C19 ::~S19993C19(){ note_dtor("S19993C19", this);} // tgen
S19993C19 ::S19993C19(){ note_ctor("S19993C19", this);} // tgen

static void Test_S19993C19()
{
  extern Class_Descriptor cd_S19993C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S19993C19, buf);
    S19993C19 *dp, &lv = *(dp=new (buf) S19993C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S19993C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C19)");
    check_base_class_offset(lv, (S19993C12*), ABISELECT(464,340), "S19993C19");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*)(S19993C20*), ABISELECT(464,340), "S19993C19");
    /*is_ambiguous_... S19993C19::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*), ABISELECT(496,364), "S19993C19");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), ABISELECT(496,364), "S19993C19");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*)(S19993C20*), ABISELECT(496,364), "S19993C19");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), 0, "S19993C19");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(504,368), "S19993C19");
    /*is_ambiguous_... S19993C19::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(512,372), "S19993C19");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(512,372), "S19993C19");
    check_base_class_offset(lv, (S19993C8*), ABISELECT(504,368), "S19993C19");
    check_base_class_offset(lv, (S19993C8*)(S19993C20*), ABISELECT(504,368), "S19993C19");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(504,368), "S19993C19");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C20*), 0, "S19993C19");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C20*), ABISELECT(16,4), "S19993C19");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*)(S19993C20*), ABISELECT(144,96), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(160,104), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(160,104), "S19993C19");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(232,164), "S19993C19");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*)(S19993C20*), ABISELECT(152,100), "S19993C19");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*)(S19993C20*), ABISELECT(240,168), "S19993C19");
    check_base_class_offset(lv, (S19993C18*)(S19993C20*), ABISELECT(144,96), "S19993C19");
    check_base_class_offset(lv, (S19993C21*)(S19993C20*), ABISELECT(584,432), "S19993C19");
    check_base_class_offset(lv, (S19993C20*), 0, "S19993C19");
    check_field_offset(lv, s19993c19f0, ABISELECT(384,264), "S19993C19.s19993c19f0");
    check_field_offset(lv, s19993c19f1, ABISELECT(400,276), "S19993C19.s19993c19f1");
    test_class_info(&lv, &cd_S19993C19);
    dp->~S19993C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C19(Test_S19993C19, "S19993C19", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN9S19993C19C1Ev();
extern void _ZN9S19993C19D1Ev();
Name_Map name_map_S19993C19[] = {
  NSPAIR(_ZN9S19993C19C1Ev),
  NSPAIR(_ZN9S19993C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
extern Class_Descriptor cd_S19993C20;
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
static Base_Class bases_S19993C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C12,    ABISELECT(464,340), //bcp->offset
    58, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C6_nt,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C9,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C10,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //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, 1},
  {&cd_S19993C8,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(16,4), //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
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19993C9,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C9,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19993C21,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //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
    19, //immediately_derived
  0, 1},
  {&cd_S19993C20,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19993C19[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19993C19[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C20__9S19993C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C189S19993C20__9S19993C19[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C189S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C189S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A1__9S19993C20__9S19993C19[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C20__9S19993C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C20__9S19993C19[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C20__9S19993C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C20__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C19[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__9S19993C19[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__9S19993C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C19[] = {
  {&(_ZTV9S19993C19[8]),  8,107},
  {&(_tg__ZTV9S19993C20__9S19993C19[8]),  8,12},
  {&(_tg__ZTV9S19993C189S19993C20__9S19993C19[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C189S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C189S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C189S19993C20__9S19993C19[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C189S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C189S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C189S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C189S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV8S19993C8__9S19993C20__9S19993C19[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__A1__9S19993C20__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C20__9S19993C19[8]),  8,14},
  {&(_tg__ZTV9S19993C18__9S19993C20__9S19993C19[7]),  7,12},
  {&(_tg__ZTV9S19993C12__9S19993C20__9S19993C19[3]),  3,4},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C20__9S19993C19[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C20__9S19993C19[8]),  8,14},
  {&(_ZTV9S19993C19[61]),  61,107},
  {&(_ZTV9S19993C19[66]),  66,107},
  {&(_ZTV9S19993C19[76]),  76,107},
  {&(_ZTV9S19993C19[87]),  87,107},
  {&(_ZTV9S19993C19[29]),  29,107},
  {&(_ZTV9S19993C19[40]),  40,107},
  {&(_ZTV9S19993C19[101]),  101,107},
  {&(_tg__ZTV8S19993C8__9S19993C19[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__9S19993C19[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__9S19993C19[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19993C19[];
extern  VTBL_ENTRY _ZTV9S19993C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C19[];
Class_Descriptor cd_S19993C19 = {  "S19993C19", // class name
  bases_S19993C19, 20,
  &(vtc_S19993C19[0]), // expected_vtbl_contents
  &(vtt_S19993C19[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI9S19993C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19993C19),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19993C19),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19993C1  : virtual S19993C2 , S19993C3 , S19993C16 , S19993C14 , S19993C19 {
  long s19993c1f0;
  virtual  ~S19993C1(); // _ZN8S19993C1D2Ev
  virtual void  v1(); // _ZN8S19993C12v1Ev
  virtual void  v2(); // _ZN8S19993C12v2Ev
  virtual void  v3(); // _ZN8S19993C12v3Ev
  virtual void  v4(); // _ZN8S19993C12v4Ev
  virtual void  v5(); // _ZN8S19993C12v5Ev
  virtual void  v6(); // _ZN8S19993C12v6Ev
  virtual void  v7(); // _ZN8S19993C12v7Ev
  virtual void  v8(); // _ZN8S19993C12v8Ev
  virtual void  v9(); // _ZN8S19993C12v9Ev
  S19993C1(); // tgen
};
//SIG(1 S19993C1) C1{ VBC2{ v10 Fp FD[7]} BC3{ BC4{ m} VBC5{ VBC6{ v11 v12} BC7{ BC8{ VBC4 VBC6 BC9{ v13 v14} VBC10{ BC6 v15 v16 v17 v18 Fi[5] Fp FL[4]} v19} VBC2 vd v20 Fp} BC11{ VBC9 VBC4 BC12{ v21 FC4 Fi[4]} BC10 v22 v23 v24} VBC12 VBC13{ VBC14{ VBC4 BC2 BC10 v25 v26 v27 v28 v29 Fi[10] FC15{ BC9 VBC8 BC4 BC10 BC6 v53}} v30 v31 v32 Fi[2]} v33 v34 v35 v36 v37 v38 v39 v40 Fp} vd v41 v42 v43 Fi} BC16{ VBC11 VBC17{ VBC11 v44 v45 v46 v47 FC18{ VBC12 BC9 VBC6 BC15 BC2 v54 v55 v56 Fi} FC10 Fi FC7} BC13 BC7 vd v48 v49 v50 v51 v52 Fi:13} BC14 BC19{ VBC12 VBC6 VBC8 BC20{ BC6 VBC8 BC2 BC18 VBC21{ v57 v58 v59 v60 v61 v62 FU22{ m Fi}} v63 v64} v65 v66 v67 v68 v69 v70 v71 FD FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fl}


 S19993C1 ::~S19993C1(){ note_dtor("S19993C1", this);}
void  S19993C1 ::v1(){vfunc_called(this, "_ZN8S19993C12v1Ev");}
void  S19993C1 ::v2(){vfunc_called(this, "_ZN8S19993C12v2Ev");}
void  S19993C1 ::v3(){vfunc_called(this, "_ZN8S19993C12v3Ev");}
void  S19993C1 ::v4(){vfunc_called(this, "_ZN8S19993C12v4Ev");}
void  S19993C1 ::v5(){vfunc_called(this, "_ZN8S19993C12v5Ev");}
void  S19993C1 ::v6(){vfunc_called(this, "_ZN8S19993C12v6Ev");}
void  S19993C1 ::v7(){vfunc_called(this, "_ZN8S19993C12v7Ev");}
void  S19993C1 ::v8(){vfunc_called(this, "_ZN8S19993C12v8Ev");}
void  S19993C1 ::v9(){vfunc_called(this, "_ZN8S19993C12v9Ev");}
S19993C1 ::S19993C1(){ note_ctor("S19993C1", this);} // tgen

static void Test_S19993C1()
{
  extern Class_Descriptor cd_S19993C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(162,477)];
    init_test(&cd_S19993C1, buf);
    S19993C1 *dp, &lv = *(dp=new (buf) S19993C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2576,1904), "sizeof(S19993C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19993C1)");
    /*is_ambiguous_... S19993C1::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*), ABISELECT(960,704), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C5*), ABISELECT(960,704), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C7*)(S19993C16*), ABISELECT(960,704), "S19993C1");
    /*is_ambiguous_... S19993C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C3*), 0, "S19993C1");
    /*is_ambiguous_... S19993C5::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C5*), 0, "S19993C1");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C5*), 0, "S19993C1");
    /*is_ambiguous_... S19993C8::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*)(S19993C7*)(S19993C16*), 0, "S19993C1");
    /*is_ambiguous_... S19993C19::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C19*), 0, "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C8*), 0, "S19993C1");
    /*is_ambiguous_... S19993C18::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C18*)(S19993C20*)(S19993C19*), 0, "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C11*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C11*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C14*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C8*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(1216,892), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C8*), ABISELECT(1216,892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C7*)(S19993C5*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C11*)(S19993C5*), ABISELECT(1872,1400), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C11*), ABISELECT(1872,1400), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C11*)(S19993C5*), ABISELECT(1104,804), "S19993C1");
    check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(1136,828), "S19993C1");
    check_base_class_offset(lv, (S19993C10*)(S19993C11*)(S19993C5*), ABISELECT(1136,828), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C5*), ABISELECT(1104,804), "S19993C1");
    /*is_ambiguous_... S19993C5::S19993C12 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C5*), ABISELECT(1288,952), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C19*), ABISELECT(1288,952), "S19993C1");
    check_base_class_offset(lv, (S19993C12*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(1288,952), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(1344,988), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(1472,1080), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(1472,1080), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C13 */ AMB_check_base_class_offset(lv, (S19993C14*)(S19993C13*), ABISELECT(1344,988), "S19993C1");
    check_base_class_offset(lv, (S19993C14*)(S19993C13*)(S19993C16*), ABISELECT(1344,988), "S19993C1");
    check_base_class_offset(lv, (S19993C13*)(S19993C5*), ABISELECT(1320,976), "S19993C1");
    check_base_class_offset(lv, (S19993C5*)(S19993C3*), ABISELECT(1088,796), "S19993C1");
    check_base_class_offset(lv, (S19993C3*), 0, "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C12*)(S19993C11*), ABISELECT(1760,1316), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C11*), ABISELECT(1792,1340), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C11 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C11*), ABISELECT(1792,1340), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C16*), ABISELECT(1760,1316), "S19993C1");
    check_base_class_offset(lv, (S19993C11*)(S19993C17*), ABISELECT(1760,1316), "S19993C1");
    check_base_class_offset(lv, (S19993C17*)(S19993C16*), ABISELECT(1872,1400), "S19993C1");
    check_base_class_offset(lv, (S19993C13*)(S19993C16*), ABISELECT(16,8), "S19993C1");
    check_base_class_offset(lv, (S19993C9*)(S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C7*)(S19993C16*), ABISELECT(32,20), "S19993C1");
    check_base_class_offset(lv, (S19993C16*), ABISELECT(16,8), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C14*), ABISELECT(64,32), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C14*), ABISELECT(192,124), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C14*), ABISELECT(192,124), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C14 */ AMB_check_base_class_offset(lv, (S19993C14*), ABISELECT(64,32), "S19993C1");
    /*is_ambiguous_... S19993C1::S19993C8 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C8*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C20*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    check_base_class_offset(lv, (S19993C8*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(2544,1892), "S19993C1");
    /*is_ambiguous_... S19993C20::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C20*)(S19993C19*), ABISELECT(480,360), "S19993C1");
    /*is_ambiguous_... S19993C20::S19993C2 */ AMB_check_base_class_offset(lv, (S19993C2*)(S19993C20*)(S19993C19*), ABISELECT(496,364), "S19993C1");
    /*is_ambiguous_... S19993C18::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(624,456), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C9 */ AMB_check_base_class_offset(lv, (S19993C9*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    /*is_ambiguous_... S19993C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(640,464), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C10 */ AMB_check_base_class_offset(lv, (S19993C10*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(640,464), "S19993C1");
    /*is_ambiguous_... S19993C15::S19993C6_nt */ AMB_check_base_class_offset(lv, (S19993C6_nt*)(S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(712,524), "S19993C1");
    check_base_class_offset(lv, (S19993C15*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(632,460), "S19993C1");
    check_base_class_offset(lv, (S19993C2*)(S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(720,528), "S19993C1");
    check_base_class_offset(lv, (S19993C18*)(S19993C20*)(S19993C19*), ABISELECT(624,456), "S19993C1");
    check_base_class_offset(lv, (S19993C21*)(S19993C20*)(S19993C19*), ABISELECT(2552,1896), "S19993C1");
    check_base_class_offset(lv, (S19993C20*)(S19993C19*), ABISELECT(480,360), "S19993C1");
    check_base_class_offset(lv, (S19993C19*), ABISELECT(480,360), "S19993C1");
    check_field_offset(lv, s19993c1f0, ABISELECT(944,700), "S19993C1.s19993c1f0");
    test_class_info(&lv, &cd_S19993C1);
    dp->~S19993C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19993C1(Test_S19993C1, "S19993C1", ABISELECT(2576,1904));

#else // __cplusplus

extern void _ZN8S19993C1C1Ev();
extern void _ZN8S19993C1D2Ev();
Name_Map name_map_S19993C1[] = {
  NSPAIR(_ZN8S19993C1C1Ev),
  NSPAIR(_ZN8S19993C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C5;
extern VTBL_ENTRY _ZTI8S19993C5[];
extern  VTBL_ENTRY _ZTV8S19993C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C5[];
extern Class_Descriptor cd_S19993C3;
extern VTBL_ENTRY _ZTI8S19993C3[];
extern  VTBL_ENTRY _ZTV8S19993C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C3[];
extern Class_Descriptor cd_S19993C12;
extern VTBL_ENTRY _ZTI9S19993C12[];
extern  VTBL_ENTRY _ZTV9S19993C12[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C11;
extern VTBL_ENTRY _ZTI9S19993C11[];
extern  VTBL_ENTRY _ZTV9S19993C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C11[];
extern Class_Descriptor cd_S19993C17;
extern VTBL_ENTRY _ZTI9S19993C17[];
extern  VTBL_ENTRY _ZTV9S19993C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C17[];
extern Class_Descriptor cd_S19993C13;
extern VTBL_ENTRY _ZTI9S19993C13[];
extern  VTBL_ENTRY _ZTV9S19993C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C13[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C7;
extern VTBL_ENTRY _ZTI8S19993C7[];
extern  VTBL_ENTRY _ZTV8S19993C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C7[];
extern Class_Descriptor cd_S19993C16;
extern VTBL_ENTRY _ZTI9S19993C16[];
extern  VTBL_ENTRY _ZTV9S19993C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C16[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C14;
extern VTBL_ENTRY _ZTI9S19993C14[];
extern  VTBL_ENTRY _ZTV9S19993C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C14[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C8;
extern VTBL_ENTRY _ZTI8S19993C8[];
extern  VTBL_ENTRY _ZTV8S19993C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C8[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S19993C9;
extern VTBL_ENTRY _ZTI8S19993C9[];
extern  VTBL_ENTRY _ZTV8S19993C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C10;
extern VTBL_ENTRY _ZTI9S19993C10[];
extern  VTBL_ENTRY _ZTV9S19993C10[];
extern Class_Descriptor cd_S19993C6_nt;
extern VTBL_ENTRY _ZTI11S19993C6_nt[];
extern  VTBL_ENTRY _ZTV11S19993C6_nt[];
extern Class_Descriptor cd_S19993C15;
extern VTBL_ENTRY _ZTI9S19993C15[];
extern  VTBL_ENTRY _ZTV9S19993C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C15[];
extern Class_Descriptor cd_S19993C2;
extern VTBL_ENTRY _ZTI8S19993C2[];
extern  VTBL_ENTRY _ZTV8S19993C2[];
extern Class_Descriptor cd_S19993C18;
extern VTBL_ENTRY _ZTI9S19993C18[];
extern  VTBL_ENTRY _ZTV9S19993C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C18[];
extern Class_Descriptor cd_S19993C21;
extern VTBL_ENTRY _ZTI9S19993C21[];
extern  VTBL_ENTRY _ZTV9S19993C21[];
extern Class_Descriptor cd_S19993C20;
extern VTBL_ENTRY _ZTI9S19993C20[];
extern  VTBL_ENTRY _ZTV9S19993C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C20[];
extern Class_Descriptor cd_S19993C19;
extern VTBL_ENTRY _ZTI9S19993C19[];
extern  VTBL_ENTRY _ZTV9S19993C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19993C19[];
static Base_Class bases_S19993C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19993C2,    ABISELECT(960,704), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(1216,892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19993C9,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C6_nt,    ABISELECT(1216,892), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C10,    ABISELECT(1216,892), //bcp->offset
    207, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19993C8,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19993C7,    ABISELECT(1088,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(1872,1400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19993C12,    ABISELECT(1104,804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1136,828), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1136,828), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(1104,804), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19993C12,    ABISELECT(1288,952), //bcp->offset
    221, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C2,    ABISELECT(1344,988), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1472,1080), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(1472,1080), //bcp->offset
    256, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(1344,988), //bcp->offset
    235, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(1320,976), //bcp->offset
    225, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19993C5,    ABISELECT(1088,796), //bcp->offset
    144, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19993C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C12,    ABISELECT(1760,1316), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(1792,1340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19993C10,    ABISELECT(1792,1340), //bcp->offset
    282, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19993C11,    ABISELECT(1760,1316), //bcp->offset
    264, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19993C17,    ABISELECT(1872,1400), //bcp->offset
    290, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19993C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19993C9,    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
    30, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19993C8,    ABISELECT(32,20), //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
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19993C7,    ABISELECT(32,20), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19993C16,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C2,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19993C6_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
    35, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(192,124), //bcp->offset
    74, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S19993C14,    ABISELECT(64,32), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19993C9,    ABISELECT(2544,1892), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S19993C8,    ABISELECT(2544,1892), //bcp->offset
    307, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19993C6_nt,    ABISELECT(480,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
    38, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(496,364), //bcp->offset
    101, //bcp->virtual_function_table_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
    50, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(624,456), //bcp->offset
    -1, //bcp->virtual_function_table_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
    48, //immediately_derived
  0, 0},
  {&cd_S19993C9,    ABISELECT(632,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
    41, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(632,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
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(640,464), //bcp->offset
    -1, //bcp->virtual_function_table_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
    44, //immediately_derived
  0, 0},
  {&cd_S19993C10,    ABISELECT(640,464), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C6_nt,    ABISELECT(712,524), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19993C15,    ABISELECT(632,460), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19993C2,    ABISELECT(720,528), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19993C18,    ABISELECT(624,456), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19993C21,    ABISELECT(2552,1896), //bcp->offset
    318, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19993C20,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19993C19,    ABISELECT(480,360), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19993C1[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C1D1Ev();
extern void _ZN8S19993C1D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
extern void _ZN8S19993C12v1Ev();
extern void _ZN8S19993C12v2Ev();
extern void _ZN8S19993C12v3Ev();
extern void _ZN8S19993C12v4Ev();
extern void _ZN8S19993C12v5Ev();
extern void _ZN8S19993C12v6Ev();
extern void _ZN8S19993C12v7Ev();
extern void _ZN8S19993C12v8Ev();
extern void _ZN8S19993C12v9Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void ABISELECT(_ZThn16_N8S19993C1D1Ev,_ZThn8_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19993C1D0Ev,_ZThn8_N8S19993C1D0Ev)();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn32_N8S19993C1D1Ev,_ZThn20_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19993C1D0Ev,_ZThn20_N8S19993C1D0Ev)();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C1D1Ev,_ZThn796_N8S19993C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C1D0Ev,_ZThn796_N8S19993C1D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY vtc_S19993C1[] = {
  ABISELECT(2552,1896),
  ABISELECT(2544,1892),
  ABISELECT(1872,1400),
  ABISELECT(1760,1316),
  ABISELECT(1344,988),
  ABISELECT(1320,976),
  ABISELECT(1288,952),
  ABISELECT(1872,1400),
  ABISELECT(960,704),
  ABISELECT(1216,892),
  ABISELECT(1216,892),
  0,
  ABISELECT(1088,796),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19993C12v9Ev,
  ABISELECT(944,696),
  ABISELECT(1200,884),
  ABISELECT(-16,-8),
  ABISELECT(1856,1392),
  ABISELECT(1856,1392),
  ABISELECT(1744,1308),
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19993C1D1Ev,_ZThn8_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19993C1D0Ev,_ZThn8_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19993C1D1Ev,_ZThn20_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19993C1D0Ev,_ZThn20_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  ABISELECT(1152,860),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  ABISELECT(-480,-360),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-624,-456),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-632,-460),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  ABISELECT(-720,-528),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  0,
  ABISELECT(-960,-704),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-796),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-804),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-1136,-828),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-892),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  ABISELECT(-1288,-952),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-976),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
  ABISELECT(-1472,-1080),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1760,-1316),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
  ABISELECT(-1792,-1340),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1872,-1400),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2552,-1896),
  (VTBL_ENTRY)&(_ZTI8S19993C1[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern VTBL_ENTRY _ZTV8S19993C1[];
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN8S19993C3D1Ev();
extern void _ZN8S19993C3D0Ev();
extern void _ZN8S19993C33v41Ev();
extern void _ZN8S19993C33v42Ev();
extern void _ZN8S19993C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C3__8S19993C1[] = {
  ABISELECT(1344,988),
  ABISELECT(1320,976),
  ABISELECT(1288,952),
  ABISELECT(1872,1400),
  ABISELECT(960,704),
  ABISELECT(1216,892),
  ABISELECT(1216,892),
  0,
  ABISELECT(1088,796),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19993C33v43Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C3D1Ev,_ZThn796_N8S19993C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19993C3D0Ev,_ZThn796_N8S19993C3D0Ev)() __attribute__((weak));
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C3__8S19993C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-796),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C3__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-892),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C3__8S19993C1[] = {
  0,
  ABISELECT(-960,-704),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C3__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-804),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C3__8S19993C1[] = {
  0,
  0,
  ABISELECT(-1872,-1400),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C118S19993C5__A1__8S19993C3__8S19993C1[] = {
  ABISELECT(-1136,-828),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C3__8S19993C1[] = {
  0,
  ABISELECT(-1288,-952),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C3__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-976),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C3__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-988),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C3__8S19993C1[] = {
  ABISELECT(-1472,-1080),
  (VTBL_ENTRY)&(_ZTI8S19993C3[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
extern void _ZN9S19993C16D1Ev();
extern void _ZN9S19993C16D0Ev();
extern void _ZN9S19993C163v48Ev();
extern void _ZN9S19993C163v49Ev();
extern void _ZN9S19993C163v50Ev();
extern void _ZN9S19993C163v51Ev();
extern void _ZN9S19993C163v52Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C16__8S19993C1[] = {
  ABISELECT(944,696),
  ABISELECT(1200,884),
  ABISELECT(-16,-8),
  ABISELECT(1856,1392),
  ABISELECT(1856,1392),
  ABISELECT(1744,1308),
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19993C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19993C163v52Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(1200,884),
  ABISELECT(1328,980),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-980),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C139S19993C16__A1__8S19993C1[] = {
  ABISELECT(-1456,-1072),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C79S19993C16__A1__8S19993C1[] = {
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-872),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-872),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C79S19993C16__A1__8S19993C1[] = {
  0,
  ABISELECT(-928,-684),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C16__8S19993C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1744,-1308),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__9S19993C16__8S19993C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1856,-1392),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C16__8S19993C1[] = {
  ABISELECT(-1776,-1332),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C16__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-980),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A1__9S19993C16__8S19993C1[] = {
  ABISELECT(-1456,-1072),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev)();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C7__9S19993C16__8S19993C1[] = {
  ABISELECT(928,684),
  ABISELECT(1184,872),
  ABISELECT(-32,-20),
  ABISELECT(1184,872),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D1Ev,_ZThn12_N9S19993C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19993C16D0Ev,_ZThn12_N9S19993C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A2__9S19993C16__8S19993C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__A2__9S19993C16__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-884),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__A1__9S19993C16__8S19993C1[] = {
  0,
  ABISELECT(-944,-696),
  (VTBL_ENTRY)&(_ZTI9S19993C16[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__A__8S19993C1[] = {
  ABISELECT(1152,860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
extern void _ZN9S19993C193v65Ev();
extern void _ZN9S19993C193v66Ev();
extern void _ZN9S19993C193v67Ev();
extern void _ZN9S19993C193v68Ev();
extern void _ZN9S19993C193v69Ev();
extern void _ZN9S19993C193v70Ev();
extern void _ZN9S19993C193v71Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C19__8S19993C1[] = {
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19993C193v71Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C203v63Ev();
extern void _ZN9S19993C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(2072,1536),
  ABISELECT(808,592),
  ABISELECT(736,532),
  ABISELECT(-480,-360),
  ABISELECT(736,532),
  ABISELECT(2064,1532),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19993C203v64Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-1912,-1432),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(632,460),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19993C15[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-664,-496),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(624,456),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C15__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-1920,-1436),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C189S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-436),
  (VTBL_ENTRY)&(_ZTI9S19993C18[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1532),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__A1__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-532),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C18__9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C209S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-808,-592),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C18__9S19993C209S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C209S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1536),
  (VTBL_ENTRY)&(_ZTI9S19993C20[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__9S19993C19__8S19993C1[] = {
  0,
  ABISELECT(-808,-592),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__9S19993C19__8S19993C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1532),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-532),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C183v54Ev();
extern void _ZN9S19993C183v55Ev();
extern void _ZN9S19993C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C189S19993C20__9S19993C19__8S19993C1[] = {
  ABISELECT(592,436),
  ABISELECT(592,436),
  ABISELECT(1920,1436),
  ABISELECT(-624,-456),
  ABISELECT(664,496),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19993C183v56Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19__8S19993C1[] = {
  ABISELECT(584,432),
  ABISELECT(-632,-460),
  ABISELECT(584,432),
  ABISELECT(1912,1432),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C153v53Ev,
};
extern void _ZN9S19993C213v57Ev();
extern void _ZN9S19993C213v58Ev();
extern void _ZN9S19993C213v59Ev();
extern void _ZN9S19993C213v60Ev();
extern void _ZN9S19993C213v61Ev();
extern void _ZN9S19993C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C21__9S19993C19__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1536),
  (VTBL_ENTRY)&(_ZTI9S19993C19[0]),
  (VTBL_ENTRY)&_ZN9S19993C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19993C213v62Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C5D1Ev();
extern void _ZN8S19993C5D0Ev();
extern void _ZN8S19993C73v20Ev();
extern void _ZN8S19993C53v33Ev();
extern void _ZN8S19993C53v34Ev();
extern void _ZN8S19993C53v35Ev();
extern void _ZN8S19993C53v36Ev();
extern void _ZN8S19993C53v37Ev();
extern void _ZN8S19993C53v38Ev();
extern void _ZN8S19993C53v39Ev();
extern void _ZN8S19993C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C5__8S19993C1[] = {
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19993C53v40Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
extern void _ZN8S19993C7D1Ev();
extern void _ZN8S19993C7D0Ev();
extern void _ZN8S19993C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C78S19993C5__8S19993C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19993C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19993C73v20Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C88S19993C78S19993C5__8S19993C1[] = {
  ABISELECT(128,96),
  ABISELECT(-1088,-796),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19993C7[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C118S19993C5__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(-768,-596),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(1088,796),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C2__8S19993C5__8S19993C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__8S19993C5__8S19993C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__A1__8S19993C5__8S19993C1[] = {
  0,
  0,
  ABISELECT(-784,-604),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN9S19993C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C12__A1__8S19993C5__8S19993C1[] = {
  0,
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C5__8S19993C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-232,-180),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C5__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-256,-192),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C1[] = {
  ABISELECT(-384,-284),
  (VTBL_ENTRY)&(_ZTI8S19993C5[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN9S19993C133v30Ev();
extern void _ZN9S19993C133v31Ev();
extern void _ZN9S19993C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C13__8S19993C1[] = {
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN9S19993C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19993C133v32Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__9S19993C13__8S19993C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19993C13[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C23v10Ev();
extern void _ZN9S19993C143v25Ev();
extern void _ZN9S19993C143v26Ev();
extern void _ZN9S19993C143v27Ev();
extern void _ZN9S19993C143v28Ev();
extern void _ZN9S19993C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C14__8S19993C1[] = {
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C14[0]),
  (VTBL_ENTRY)&_ZN8S19993C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19993C143v29Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__A1__8S19993C1[] = {
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C9__9S19993C11__A1__8S19993C1[] = {
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19993C11[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN9S19993C173v44Ev();
extern void _ZN9S19993C173v45Ev();
extern void _ZN9S19993C173v46Ev();
extern void _ZN9S19993C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C17__8S19993C1[] = {
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19993C173v47Ev,
};
extern void _ZN9S19993C123v21Ev();
extern void _ZN9S19993C113v22Ev();
extern void _ZN9S19993C113v23Ev();
extern void _ZN9S19993C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C11__9S19993C17__8S19993C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN9S19993C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19993C113v24Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C109S19993C11__9S19993C17__8S19993C1[] = {
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19993C17[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
extern void _ZN8S19993C93v13Ev();
extern void _ZN8S19993C93v14Ev();
extern void _ZN8S19993C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19993C8__A2__8S19993C1[] = {
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1892),
  ABISELECT(-1328,-1000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN8S19993C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19993C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19993C83v19Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV11S19993C6_nt__8S19993C8__A2__8S19993C1[] = {
  0,
  0,
  ABISELECT(2544,1892),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
};
extern void _ZN11S19993C6_nt3v11Ev();
extern void _ZN11S19993C6_nt3v12Ev();
extern void _ZN9S19993C103v15Ev();
extern void _ZN9S19993C103v16Ev();
extern void _ZN9S19993C103v17Ev();
extern void _ZN9S19993C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19993C10__8S19993C8__A2__8S19993C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1328,1000),
  (VTBL_ENTRY)&(_ZTI8S19993C8[0]),
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19993C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19993C103v18Ev,
};
static  VTT_ENTRY vtt_S19993C1[] = {
  {&(_ZTV8S19993C1[17]),  17,332},
  {&(_tg__ZTV8S19993C3__8S19993C1[13]),  13,20},
  {&(_tg__ZTV8S19993C5__8S19993C3__8S19993C1[33]),  33,47},
  {&(_tg__ZTV8S19993C3__8S19993C1[13]),  13,20},
  {&(_tg__ZTV9S19993C10__8S19993C3__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C3__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C3__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C3__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C109S19993C118S19993C5__A1__8S19993C3__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C12__A1__8S19993C3__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C3__8S19993C1[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C3__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C3__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C16__8S19993C1[10]),  10,20},
  {&(_tg__ZTV9S19993C139S19993C16__A1__8S19993C1[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C139S19993C16__A1__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C139S19993C16__A1__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C79S19993C16__A1__8S19993C1[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C79S19993C16__A1__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C79S19993C16__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C79S19993C16__A1__8S19993C1[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C79S19993C16__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C79S19993C16__A1__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C79S19993C16__A1__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C11__9S19993C16__8S19993C1[14]),  14,18},
  {&(_tg__ZTV9S19993C17__9S19993C16__8S19993C1[11]),  11,17},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C16__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C17__9S19993C16__8S19993C1[11]),  11,17},
  {&(_tg__ZTV9S19993C14__9S19993C16__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A1__9S19993C16__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C7__9S19993C16__8S19993C1[6]),  6,12},
  {&(_tg__ZTV11S19993C6_nt__A2__9S19993C16__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__A2__9S19993C16__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__A1__9S19993C16__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C14__A__8S19993C1[3]),  3,9},
  {&(_tg__ZTV9S19993C19__8S19993C1[8]),  8,19},
  {&(_tg__ZTV9S19993C209S19993C19__8S19993C1[8]),  8,12},
  {&(_tg__ZTV9S19993C189S19993C209S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C159S19993C189S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C189S19993C209S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C189S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C15__9S19993C189S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV8S19993C8__9S19993C189S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C189S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C8__9S19993C209S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV11S19993C6_nt__A1__9S19993C209S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__9S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C18__9S19993C209S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C12__9S19993C209S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C159S19993C18__9S19993C209S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C209S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C12__9S19993C19__8S19993C1[3]),  3,4},
  {&(_tg__ZTV11S19993C6_nt__9S19993C19__8S19993C1[4]),  4,6},
  {&(_tg__ZTV8S19993C8__9S19993C19__8S19993C1[8]),  8,11},
  {&(_tg__ZTV9S19993C10__9S19993C19__8S19993C1[8]),  8,14},
  {&(_tg__ZTV9S19993C189S19993C20__9S19993C19__8S19993C1[7]),  7,12},
  {&(_tg__ZTV9S19993C159S19993C189S19993C20__9S19993C19__8S19993C1[6]),  6,9},
  {&(_tg__ZTV9S19993C21__9S19993C19__8S19993C1[8]),  8,14},
  {&(_ZTV8S19993C1[143]),  143,332},
  {&(_ZTV8S19993C1[177]),  177,332},
  {&(_ZTV8S19993C1[17]),  17,332},
  {&(_ZTV8S19993C1[215]),  215,332},
  {&(_ZTV8S19993C1[195]),  195,332},
  {&(_ZTV8S19993C1[301]),  301,332},
  {&(_ZTV8S19993C1[201]),  201,332},
  {&(_ZTV8S19993C1[224]),  224,332},
  {&(_ZTV8S19993C1[232]),  232,332},
  {&(_ZTV8S19993C1[250]),  250,332},
  {&(_ZTV8S19993C1[258]),  258,332},
  {&(_ZTV8S19993C1[43]),  43,332},
  {&(_ZTV8S19993C1[278]),  278,332},
  {&(_ZTV8S19993C1[284]),  284,332},
  {&(_ZTV8S19993C1[301]),  301,332},
  {&(_ZTV8S19993C1[59]),  59,332},
  {&(_ZTV8S19993C1[68]),  68,332},
  {&(_ZTV8S19993C1[90]),  90,332},
  {&(_ZTV8S19993C1[315]),  315,332},
  {&(_ZTV8S19993C1[111]),  111,332},
  {&(_ZTV8S19993C1[122]),  122,332},
  {&(_ZTV8S19993C1[326]),  326,332},
  {&(_tg__ZTV8S19993C5__8S19993C1[10]),  10,24},
  {&(_tg__ZTV8S19993C78S19993C5__8S19993C1[6]),  6,12},
  {&(_tg__ZTV8S19993C88S19993C78S19993C5__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C88S19993C78S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C88S19993C78S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV11S19993C6_nt__8S19993C78S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C78S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C78S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C118S19993C5__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C118S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV11S19993C6_nt__8S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C5__8S19993C1[8]),  8,14},
  {&(_tg__ZTV8S19993C2__8S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C11__8S19993C5__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__A1__8S19993C5__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C12__A1__8S19993C5__8S19993C1[3]),  3,4},
  {&(_tg__ZTV9S19993C13__8S19993C5__8S19993C1[7]),  7,10},
  {&(_tg__ZTV9S19993C14__8S19993C5__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__A2__8S19993C5__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C13__8S19993C1[4]),  4,7},
  {&(_tg__ZTV9S19993C14__9S19993C13__8S19993C1[15]),  15,21},
  {&(_tg__ZTV9S19993C109S19993C14__9S19993C13__8S19993C1[2]),  2,8},
  {&(_tg__ZTV9S19993C14__8S19993C1[3]),  3,9},
  {&(_tg__ZTV9S19993C11__A1__8S19993C1[4]),  4,8},
  {&(_tg__ZTV8S19993C9__9S19993C11__A1__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C17__8S19993C1[7]),  7,13},
  {&(_tg__ZTV9S19993C11__9S19993C17__8S19993C1[14]),  14,18},
  {&(_tg__ZTV9S19993C17__8S19993C1[7]),  7,13},
  {&(_tg__ZTV9S19993C109S19993C11__9S19993C17__8S19993C1[2]),  2,8},
  {&(_tg__ZTV8S19993C8__A2__8S19993C1[5]),  5,8},
  {&(_tg__ZTV11S19993C6_nt__8S19993C8__A2__8S19993C1[4]),  4,6},
  {&(_tg__ZTV9S19993C10__8S19993C8__A2__8S19993C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S19993C1[];
extern  VTBL_ENTRY _ZTV8S19993C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19993C1[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D0Ev,_ZTv0_n56_N8S19993C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C3D0Ev,_ZThn796_N8S19993C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C3D1Ev,_ZTv0_n56_N8S19993C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C3D1Ev,_ZThn796_N8S19993C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C1D0Ev,_ZTv0_n56_N8S19993C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C1D0Ev,_ZThn796_N8S19993C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19993C1D1Ev,_ZTv0_n56_N8S19993C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19993C1D1Ev,_ZThn796_N8S19993C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19993C1 = {  "S19993C1", // class name
  bases_S19993C1, 52,
  &(vtc_S19993C1[0]), // expected_vtbl_contents
  &(vtt_S19993C1[0]), // expected_vtt_contents
  ABISELECT(2576,1904), // object size
  NSPAIRA(_ZTI8S19993C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19993C1),332, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19993C1),115, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C2  {
  void *s19994c2f0;
  long double s19994c2f1[7];
  virtual void  v10(); // _ZN8S19994C23v10Ev
  ~S19994C2(); // tgen
  S19994C2(); // tgen
};
//SIG(-1 S19994C2) C1{ v1 Fp FD[7]}


void  S19994C2 ::v10(){vfunc_called(this, "_ZN8S19994C23v10Ev");}
S19994C2 ::~S19994C2(){ note_dtor("S19994C2", this);} // tgen
S19994C2 ::S19994C2(){ note_ctor("S19994C2", this);} // tgen

static void Test_S19994C2()
{
  extern Class_Descriptor cd_S19994C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S19994C2, buf);
    S19994C2 *dp, &lv = *(dp=new (buf) S19994C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S19994C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C2)");
    check_field_offset(lv, s19994c2f0, ABISELECT(8,4), "S19994C2.s19994c2f0");
    check_field_offset(lv, s19994c2f1, ABISELECT(16,8), "S19994C2.s19994c2f1");
    test_class_info(&lv, &cd_S19994C2);
    dp->~S19994C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C2(Test_S19994C2, "S19994C2", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S19994C2C1Ev();
extern void _ZN8S19994C2D1Ev();
Name_Map name_map_S19994C2[] = {
  NSPAIR(_ZN8S19994C2C1Ev),
  NSPAIR(_ZN8S19994C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C2[];
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C2[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
Class_Descriptor cd_S19994C2 = {  "S19994C2", // class name
  0,0,//no base classes
  &(vtc_S19994C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S19994C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C2),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  S19994C6  {
  virtual void  v11(); // _ZN8S19994C63v11Ev
  virtual void  v12(); // _ZN8S19994C63v12Ev
  ~S19994C6(); // tgen
  S19994C6(); // tgen
};
//SIG(-1 S19994C6) C1{ v1 v2}


void  S19994C6 ::v11(){vfunc_called(this, "_ZN8S19994C63v11Ev");}
void  S19994C6 ::v12(){vfunc_called(this, "_ZN8S19994C63v12Ev");}
S19994C6 ::~S19994C6(){ note_dtor("S19994C6", this);} // tgen
S19994C6 ::S19994C6(){ note_ctor("S19994C6", this);} // tgen

static void Test_S19994C6()
{
  extern Class_Descriptor cd_S19994C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19994C6, buf);
    S19994C6 *dp, &lv = *(dp=new (buf) S19994C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19994C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C6)");
    test_class_info(&lv, &cd_S19994C6);
    dp->~S19994C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C6(Test_S19994C6, "S19994C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19994C6C1Ev();
extern void _ZN8S19994C6D1Ev();
Name_Map name_map_S19994C6[] = {
  NSPAIR(_ZN8S19994C6C1Ev),
  NSPAIR(_ZN8S19994C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C6[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY vtc_S19994C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C6[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
Class_Descriptor cd_S19994C6 = {  "S19994C6", // class name
  0,0,//no base classes
  &(vtc_S19994C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19994C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C6),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  S19994C9  {
  virtual void  v13(); // _ZN8S19994C93v13Ev
  virtual void  v14(); // _ZN8S19994C93v14Ev
  ~S19994C9(); // tgen
  S19994C9(); // tgen
};
//SIG(-1 S19994C9) C1{ v1 v2}


void  S19994C9 ::v13(){vfunc_called(this, "_ZN8S19994C93v13Ev");}
void  S19994C9 ::v14(){vfunc_called(this, "_ZN8S19994C93v14Ev");}
S19994C9 ::~S19994C9(){ note_dtor("S19994C9", this);} // tgen
S19994C9 ::S19994C9(){ note_ctor("S19994C9", this);} // tgen

static void Test_S19994C9()
{
  extern Class_Descriptor cd_S19994C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19994C9, buf);
    S19994C9 *dp, &lv = *(dp=new (buf) S19994C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19994C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C9)");
    test_class_info(&lv, &cd_S19994C9);
    dp->~S19994C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C9(Test_S19994C9, "S19994C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19994C9C1Ev();
extern void _ZN8S19994C9D1Ev();
Name_Map name_map_S19994C9[] = {
  NSPAIR(_ZN8S19994C9C1Ev),
  NSPAIR(_ZN8S19994C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19994C9[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY vtc_S19994C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C9[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
Class_Descriptor cd_S19994C9 = {  "S19994C9", // class name
  0,0,//no base classes
  &(vtc_S19994C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19994C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19994C9),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  S19994C10  : S19994C6 {
  int s19994c10f0[5];
  void *s19994c10f1;
  __tsi64 s19994c10f2[4];
  virtual void  v15(); // _ZN9S19994C103v15Ev
  virtual void  v16(); // _ZN9S19994C103v16Ev
  virtual void  v17(); // _ZN9S19994C103v17Ev
  virtual void  v18(); // _ZN9S19994C103v18Ev
  ~S19994C10(); // tgen
  S19994C10(); // tgen
};
//SIG(-1 S19994C10) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S19994C10 ::v15(){vfunc_called(this, "_ZN9S19994C103v15Ev");}
void  S19994C10 ::v16(){vfunc_called(this, "_ZN9S19994C103v16Ev");}
void  S19994C10 ::v17(){vfunc_called(this, "_ZN9S19994C103v17Ev");}
void  S19994C10 ::v18(){vfunc_called(this, "_ZN9S19994C103v18Ev");}
S19994C10 ::~S19994C10(){ note_dtor("S19994C10", this);} // tgen
S19994C10 ::S19994C10(){ note_ctor("S19994C10", this);} // tgen

static void Test_S19994C10()
{
  extern Class_Descriptor cd_S19994C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S19994C10, buf);
    S19994C10 *dp, &lv = *(dp=new (buf) S19994C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S19994C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C10)");
    check_base_class_offset(lv, (S19994C6*), 0, "S19994C10");
    check_field_offset(lv, s19994c10f0, ABISELECT(8,4), "S19994C10.s19994c10f0");
    check_field_offset(lv, s19994c10f1, ABISELECT(32,24), "S19994C10.s19994c10f1");
    check_field_offset(lv, s19994c10f2, ABISELECT(40,28), "S19994C10.s19994c10f2");
    test_class_info(&lv, &cd_S19994C10);
    dp->~S19994C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C10(Test_S19994C10, "S19994C10", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN9S19994C10C1Ev();
extern void _ZN9S19994C10D1Ev();
Name_Map name_map_S19994C10[] = {
  NSPAIR(_ZN9S19994C10C1Ev),
  NSPAIR(_ZN9S19994C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
static Base_Class bases_S19994C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S19994C10[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C10[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
Class_Descriptor cd_S19994C10 = {  "S19994C10", // class name
  bases_S19994C10, 1,
  &(vtc_S19994C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI9S19994C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19994C10),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  S19994C8  : virtual S77C13_nt , virtual S19994C6 , S19994C9 , virtual S19994C10 {
  virtual void  v19(); // _ZN8S19994C83v19Ev
  ~S19994C8(); // tgen
  S19994C8(); // tgen
};
//SIG(-1 S19994C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S19994C8 ::v19(){vfunc_called(this, "_ZN8S19994C83v19Ev");}
S19994C8 ::~S19994C8(){ note_dtor("S19994C8", this);} // tgen
S19994C8 ::S19994C8(){ note_ctor("S19994C8", this);} // tgen

static void Test_S19994C8()
{
  extern Class_Descriptor cd_S19994C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S19994C8, buf);
    S19994C8 *dp, &lv = *(dp=new (buf) S19994C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S19994C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C8)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C8");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(8,4), "S19994C8");
    check_base_class_offset(lv, (S19994C9*), 0, "S19994C8");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(16,8), "S19994C8");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(16,8), "S19994C8");
    test_class_info(&lv, &cd_S19994C8);
    dp->~S19994C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C8(Test_S19994C8, "S19994C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S19994C8C1Ev();
extern void _ZN8S19994C8D1Ev();
Name_Map name_map_S19994C8[] = {
  NSPAIR(_ZN8S19994C8C1Ev),
  NSPAIR(_ZN8S19994C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19994C6,    ABISELECT(8,4), //bcp->offset
    8, //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_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(16,8), //bcp->offset
    14, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C8[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C8[];
static  VTT_ENTRY vtt_S19994C8[] = {
  {&(_ZTV8S19994C8[5]),  5,28},
  {&(_ZTV8S19994C8[12]),  12,28},
  {&(_ZTV8S19994C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
Class_Descriptor cd_S19994C8 = {  "S19994C8", // class name
  bases_S19994C8, 5,
  &(vtc_S19994C8[0]), // expected_vtbl_contents
  &(vtt_S19994C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S19994C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19994C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C8),3, //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  S19994C7  : S19994C8 , virtual S19994C2 {
  void *s19994c7f0;
  virtual  ~S19994C7(); // _ZN8S19994C7D2Ev
  virtual void  v20(); // _ZN8S19994C73v20Ev
  S19994C7(); // tgen
};
//SIG(-1 S19994C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S19994C7 ::~S19994C7(){ note_dtor("S19994C7", this);}
void  S19994C7 ::v20(){vfunc_called(this, "_ZN8S19994C73v20Ev");}
S19994C7 ::S19994C7(){ note_ctor("S19994C7", this);} // tgen

static void Test_S19994C7()
{
  extern Class_Descriptor cd_S19994C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19994C7, buf);
    S19994C7 *dp, &lv = *(dp=new (buf) S19994C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19994C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C7)");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C7");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(16,8), "S19994C7");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), 0, "S19994C7");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(24,12), "S19994C7");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(24,12), "S19994C7");
    check_base_class_offset(lv, (S19994C8*), 0, "S19994C7");
    check_base_class_offset(lv, (S19994C2*), ABISELECT(96,72), "S19994C7");
    check_field_offset(lv, s19994c7f0, ABISELECT(8,4), "S19994C7.s19994c7f0");
    test_class_info(&lv, &cd_S19994C7);
    dp->~S19994C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C7(Test_S19994C7, "S19994C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S19994C7C1Ev();
extern void _ZN8S19994C7D2Ev();
Name_Map name_map_S19994C7[] = {
  NSPAIR(_ZN8S19994C7C1Ev),
  NSPAIR(_ZN8S19994C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
static Base_Class bases_S19994C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C6,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(24,12), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19994C8,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(96,72), //bcp->offset
    32, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C7[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19994C7[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__8S19994C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__8S19994C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__8S19994C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C7[] = {
  {&(_ZTV8S19994C7[6]),  6,36},
  {&(_tg__ZTV8S19994C8__8S19994C7[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__8S19994C7[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__8S19994C7[8]),  8,14},
  {&(_ZTV8S19994C7[16]),  16,36},
  {&(_ZTV8S19994C7[26]),  26,36},
  {&(_ZTV8S19994C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
Class_Descriptor cd_S19994C7 = {  "S19994C7", // class name
  bases_S19994C7, 7,
  &(vtc_S19994C7[0]), // expected_vtbl_contents
  &(vtt_S19994C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S19994C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19994C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C7),7, //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  S19994C12  {
  ::S77C13_nt s19994c12f0;
  int s19994c12f1[4];
  virtual void  v21(); // _ZN9S19994C123v21Ev
  ~S19994C12(); // tgen
  S19994C12(); // tgen
};
//SIG(-1 S19994C12) C1{ v1 FC2{ m} Fi[4]}


void  S19994C12 ::v21(){vfunc_called(this, "_ZN9S19994C123v21Ev");}
S19994C12 ::~S19994C12(){ note_dtor("S19994C12", this);} // tgen
S19994C12 ::S19994C12(){ note_ctor("S19994C12", this);} // tgen

static void Test_S19994C12()
{
  extern Class_Descriptor cd_S19994C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19994C12, buf);
    S19994C12 *dp, &lv = *(dp=new (buf) S19994C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19994C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C12)");
    check_field_offset(lv, s19994c12f0, ABISELECT(8,4), "S19994C12.s19994c12f0");
    check_field_offset(lv, s19994c12f1, ABISELECT(12,8), "S19994C12.s19994c12f1");
    test_class_info(&lv, &cd_S19994C12);
    dp->~S19994C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C12(Test_S19994C12, "S19994C12", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19994C12C1Ev();
extern void _ZN9S19994C12D1Ev();
Name_Map name_map_S19994C12[] = {
  NSPAIR(_ZN9S19994C12C1Ev),
  NSPAIR(_ZN9S19994C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19994C12[];
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY vtc_S19994C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C12[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
Class_Descriptor cd_S19994C12 = {  "S19994C12", // class name
  0,0,//no base classes
  &(vtc_S19994C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19994C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19994C12),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  S19994C11  : virtual S19994C9 , virtual S77C13_nt , S19994C12 , S19994C10 {
  virtual void  v22(); // _ZN9S19994C113v22Ev
  virtual void  v23(); // _ZN9S19994C113v23Ev
  virtual void  v24(); // _ZN9S19994C113v24Ev
  ~S19994C11(); // tgen
  S19994C11(); // tgen
};
//SIG(-1 S19994C11) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S19994C11 ::v22(){vfunc_called(this, "_ZN9S19994C113v22Ev");}
void  S19994C11 ::v23(){vfunc_called(this, "_ZN9S19994C113v23Ev");}
void  S19994C11 ::v24(){vfunc_called(this, "_ZN9S19994C113v24Ev");}
S19994C11 ::~S19994C11(){ note_dtor("S19994C11", this);} // tgen
S19994C11 ::S19994C11(){ note_ctor("S19994C11", this);} // tgen

static void Test_S19994C11()
{
  extern Class_Descriptor cd_S19994C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S19994C11, buf);
    S19994C11 *dp, &lv = *(dp=new (buf) S19994C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S19994C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C11)");
    check_base_class_offset(lv, (S19994C9*), ABISELECT(104,84), "S19994C11");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C11");
    check_base_class_offset(lv, (S19994C12*), 0, "S19994C11");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(32,24), "S19994C11");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(32,24), "S19994C11");
    test_class_info(&lv, &cd_S19994C11);
    dp->~S19994C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C11(Test_S19994C11, "S19994C11", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN9S19994C11C1Ev();
extern void _ZN9S19994C11D1Ev();
Name_Map name_map_S19994C11[] = {
  NSPAIR(_ZN9S19994C11C1Ev),
  NSPAIR(_ZN9S19994C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    ABISELECT(104,84), //bcp->offset
    16, //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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19994C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C6,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(32,24), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C11[];
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY vtc_S19994C11[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern VTBL_ENTRY _ZTV9S19994C11[];
static  VTT_ENTRY vtt_S19994C11[] = {
  {&(_ZTV9S19994C11[4]),  4,22},
  {&(_ZTV9S19994C11[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
Class_Descriptor cd_S19994C11 = {  "S19994C11", // class name
  bases_S19994C11, 5,
  &(vtc_S19994C11[0]), // expected_vtbl_contents
  &(vtt_S19994C11[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI9S19994C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C11),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C11),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  S19994C15  : S19994C9 , virtual S19994C8 , S77C13_nt , S19994C10 , S19994C6 {
  virtual void  v53(); // _ZN9S19994C153v53Ev
  ~S19994C15(); // tgen
  S19994C15(); // tgen
};
//SIG(-1 S19994C15) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S19994C15 ::v53(){vfunc_called(this, "_ZN9S19994C153v53Ev");}
S19994C15 ::~S19994C15(){ note_dtor("S19994C15", this);} // tgen
S19994C15 ::S19994C15(){ note_ctor("S19994C15", this);} // tgen

static void Test_S19994C15()
{
  extern Class_Descriptor cd_S19994C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S19994C15, buf);
    S19994C15 *dp, &lv = *(dp=new (buf) S19994C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S19994C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C15)");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*), 0, "S19994C15");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), ABISELECT(96,72), "S19994C15");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(96,72), "S19994C15");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(88,68), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(104,76), "S19994C15");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(104,76), "S19994C15");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(88,68), "S19994C15");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(8,4), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*), ABISELECT(8,4), "S19994C15");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(80,64), "S19994C15");
    test_class_info(&lv, &cd_S19994C15);
    dp->~S19994C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C15(Test_S19994C15, "S19994C15", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S19994C15C1Ev();
extern void _ZN9S19994C15D1Ev();
Name_Map name_map_S19994C15[] = {
  NSPAIR(_ZN9S19994C15C1Ev),
  NSPAIR(_ZN9S19994C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
static Base_Class bases_S19994C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(96,72), //bcp->offset
    32, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(104,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(104,76), //bcp->offset
    38, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19994C6,    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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19994C10,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(80,64), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C15[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C15[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C15[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C15[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C15[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C15[] = {
  {&(_ZTV9S19994C15[6]),  6,52},
  {&(_ZTV9S19994C15[29]),  29,52},
  {&(_ZTV9S19994C15[36]),  36,52},
  {&(_ZTV9S19994C15[46]),  46,52},
  {&(_tg__ZTV8S19994C8__9S19994C15[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C15[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C15[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
Class_Descriptor cd_S19994C15 = {  "S19994C15", // class name
  bases_S19994C15, 11,
  &(vtc_S19994C15[0]), // expected_vtbl_contents
  &(vtt_S19994C15[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S19994C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C15),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C15),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C14  : virtual S77C13_nt , S19994C2 , S19994C10 {
  int s19994c14f0[10];
  ::S19994C15 s19994c14f1;
  virtual void  v25(); // _ZN9S19994C143v25Ev
  virtual void  v26(); // _ZN9S19994C143v26Ev
  virtual void  v27(); // _ZN9S19994C143v27Ev
  virtual void  v28(); // _ZN9S19994C143v28Ev
  virtual void  v29(); // _ZN9S19994C143v29Ev
  ~S19994C14(); // tgen
  S19994C14(); // tgen
};
//SIG(-1 S19994C14) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S19994C14 ::v25(){vfunc_called(this, "_ZN9S19994C143v25Ev");}
void  S19994C14 ::v26(){vfunc_called(this, "_ZN9S19994C143v26Ev");}
void  S19994C14 ::v27(){vfunc_called(this, "_ZN9S19994C143v27Ev");}
void  S19994C14 ::v28(){vfunc_called(this, "_ZN9S19994C143v28Ev");}
void  S19994C14 ::v29(){vfunc_called(this, "_ZN9S19994C143v29Ev");}
S19994C14 ::~S19994C14(){ note_dtor("S19994C14", this);} // tgen
S19994C14 ::S19994C14(){ note_ctor("S19994C14", this);} // tgen

static void Test_S19994C14()
{
  extern Class_Descriptor cd_S19994C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S19994C14, buf);
    S19994C14 *dp, &lv = *(dp=new (buf) S19994C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S19994C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C14)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C14");
    check_base_class_offset(lv, (S19994C2*), 0, "S19994C14");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(128,92), "S19994C14");
    check_base_class_offset(lv, (S19994C10*), ABISELECT(128,92), "S19994C14");
    check_field_offset(lv, s19994c14f0, ABISELECT(200,152), "S19994C14.s19994c14f0");
    check_field_offset(lv, s19994c14f1, ABISELECT(240,192), "S19994C14.s19994c14f1");
    test_class_info(&lv, &cd_S19994C14);
    dp->~S19994C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C14(Test_S19994C14, "S19994C14", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S19994C14C1Ev();
extern void _ZN9S19994C14D1Ev();
Name_Map name_map_S19994C14[] = {
  NSPAIR(_ZN9S19994C14C1Ev),
  NSPAIR(_ZN9S19994C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
static Base_Class bases_S19994C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19994C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19994C6,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(128,92), //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 _ZTI9S19994C14[];
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C14[];
static  VTT_ENTRY vtt_S19994C14[] = {
  {&(_ZTV9S19994C14[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
Class_Descriptor cd_S19994C14 = {  "S19994C14", // class name
  bases_S19994C14, 4,
  &(vtc_S19994C14[0]), // expected_vtbl_contents
  &(vtt_S19994C14[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S19994C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19994C14),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C14),1, //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  S19994C13  : virtual S19994C14 {
  int s19994c13f0[2];
  virtual void  v30(); // _ZN9S19994C133v30Ev
  virtual void  v31(); // _ZN9S19994C133v31Ev
  virtual void  v32(); // _ZN9S19994C133v32Ev
  ~S19994C13(); // tgen
  S19994C13(); // tgen
};
//SIG(-1 S19994C13) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S19994C13 ::v30(){vfunc_called(this, "_ZN9S19994C133v30Ev");}
void  S19994C13 ::v31(){vfunc_called(this, "_ZN9S19994C133v31Ev");}
void  S19994C13 ::v32(){vfunc_called(this, "_ZN9S19994C133v32Ev");}
S19994C13 ::~S19994C13(){ note_dtor("S19994C13", this);} // tgen
S19994C13 ::S19994C13(){ note_ctor("S19994C13", this);} // tgen

static void Test_S19994C13()
{
  extern Class_Descriptor cd_S19994C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S19994C13, buf);
    S19994C13 *dp, &lv = *(dp=new (buf) S19994C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S19994C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C13)");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C13");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(16,12), "S19994C13");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(144,104), "S19994C13");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(144,104), "S19994C13");
    check_base_class_offset(lv, (S19994C14*), ABISELECT(16,12), "S19994C13");
    check_field_offset(lv, s19994c13f0, ABISELECT(8,4), "S19994C13.s19994c13f0");
    test_class_info(&lv, &cd_S19994C13);
    dp->~S19994C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C13(Test_S19994C13, "S19994C13", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S19994C13C1Ev();
extern void _ZN9S19994C13D1Ev();
Name_Map name_map_S19994C13[] = {
  NSPAIR(_ZN9S19994C13C1Ev),
  NSPAIR(_ZN9S19994C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
static Base_Class bases_S19994C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C2,    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_S19994C6,    ABISELECT(144,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(144,104), //bcp->offset
    28, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C13[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C13[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C13[];
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C13[] = {
  {&(_ZTV9S19994C13[4]),  4,36},
  {&(_ZTV9S19994C13[22]),  22,36},
  {&(_ZTV9S19994C13[30]),  30,36},
  {&(_tg__ZTV9S19994C14__9S19994C13[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
Class_Descriptor cd_S19994C13 = {  "S19994C13", // class name
  bases_S19994C13, 5,
  &(vtc_S19994C13[0]), // expected_vtbl_contents
  &(vtt_S19994C13[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S19994C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19994C13),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C13),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  S19994C5  : virtual S19994C6 , S19994C7 , S19994C11 , virtual S19994C12 , virtual S19994C13 {
  void *s19994c5f0;
  virtual void  v33(); // _ZN8S19994C53v33Ev
  virtual void  v34(); // _ZN8S19994C53v34Ev
  virtual void  v35(); // _ZN8S19994C53v35Ev
  virtual void  v36(); // _ZN8S19994C53v36Ev
  virtual void  v37(); // _ZN8S19994C53v37Ev
  virtual void  v38(); // _ZN8S19994C53v38Ev
  virtual void  v39(); // _ZN8S19994C53v39Ev
  virtual void  v40(); // _ZN8S19994C53v40Ev
  ~S19994C5(); // tgen
  S19994C5(); // tgen
};
//SIG(-1 S19994C5) C1{ VBC2{ v9 v10} BC3{ BC4{ VBC5{ m} VBC2 BC6{ v11 v12} VBC7{ BC2 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} VBC8{ v18 Fp FD[7]} vd v19 Fp} BC9{ VBC6 VBC5 BC10{ v20 FC5 Fi[4]} BC7 v21 v22 v23} VBC10 VBC11{ VBC12{ VBC5 BC8 BC7 v24 v25 v26 v27 v28 Fi[10] FC13{ BC6 VBC4 BC5 BC7 BC2 v32}} v29 v30 v31 Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S19994C5 ::v33(){vfunc_called(this, "_ZN8S19994C53v33Ev");}
void  S19994C5 ::v34(){vfunc_called(this, "_ZN8S19994C53v34Ev");}
void  S19994C5 ::v35(){vfunc_called(this, "_ZN8S19994C53v35Ev");}
void  S19994C5 ::v36(){vfunc_called(this, "_ZN8S19994C53v36Ev");}
void  S19994C5 ::v37(){vfunc_called(this, "_ZN8S19994C53v37Ev");}
void  S19994C5 ::v38(){vfunc_called(this, "_ZN8S19994C53v38Ev");}
void  S19994C5 ::v39(){vfunc_called(this, "_ZN8S19994C53v39Ev");}
void  S19994C5 ::v40(){vfunc_called(this, "_ZN8S19994C53v40Ev");}
S19994C5 ::~S19994C5(){ note_dtor("S19994C5", this);} // tgen
S19994C5 ::S19994C5(){ note_ctor("S19994C5", this);} // tgen

static void Test_S19994C5()
{
  extern Class_Descriptor cd_S19994C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,156)];
    init_test(&cd_S19994C5, buf);
    S19994C5 *dp, &lv = *(dp=new (buf) S19994C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,620), "sizeof(S19994C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C5)");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(128,96), "S19994C5");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*), ABISELECT(128,96), "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C5");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*), 0, "S19994C5");
    /*is_ambiguous_... S19994C5::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(136,100), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*), ABISELECT(136,100), "S19994C5");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*), ABISELECT(208,160), "S19994C5");
    check_base_class_offset(lv, (S19994C7*), 0, "S19994C5");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(336,252), "S19994C5");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(16,8), "S19994C5");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(48,32), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(48,32), "S19994C5");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(16,8), "S19994C5");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*), ABISELECT(344,256), "S19994C5");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(400,292), "S19994C5");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(528,384), "S19994C5");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(528,384), "S19994C5");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(400,292), "S19994C5");
    check_base_class_offset(lv, (S19994C13*), ABISELECT(376,280), "S19994C5");
    check_field_offset(lv, s19994c5f0, ABISELECT(120,92), "S19994C5.s19994c5f0");
    test_class_info(&lv, &cd_S19994C5);
    dp->~S19994C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C5(Test_S19994C5, "S19994C5", ABISELECT(816,620));

#else // __cplusplus

extern void _ZN8S19994C5C1Ev();
extern void _ZN8S19994C5D1Ev();
Name_Map name_map_S19994C5[] = {
  NSPAIR(_ZN8S19994C5C1Ev),
  NSPAIR(_ZN8S19994C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
static Base_Class bases_S19994C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    ABISELECT(128,96), //bcp->offset
    40, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(136,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(136,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //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_S19994C8,    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
    13, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(208,160), //bcp->offset
    60, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19994C7,    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_S19994C9,    ABISELECT(336,252), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19994C12,    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
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C6,    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
    16, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(48,32), //bcp->offset
    32, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(344,256), //bcp->offset
    70, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(400,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(528,384), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(528,384), //bcp->offset
    105, //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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(400,292), //bcp->offset
    84, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(376,280), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C5[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C5[] = {
  ABISELECT(400,292),
  ABISELECT(376,280),
  ABISELECT(344,256),
  ABISELECT(336,252),
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  0,
  ABISELECT(-344,-256),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  ABISELECT(-376,-280),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-400,-292),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-528,-384),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C5[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__8S19994C5[] = {
  ABISELECT(208,160),
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C7__8S19994C5[] = {
  ABISELECT(136,100),
  ABISELECT(128,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C7__8S19994C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C7__8S19994C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C7__8S19994C5[] = {
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C7__8S19994C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C7__8S19994C5[] = {
  0,
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__8S19994C5[] = {
  0,
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5[] = {
  ABISELECT(-376,-280),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C5[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-292),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C5[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5[] = {
  ABISELECT(-400,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C5[] = {
  {&(_ZTV8S19994C5[10]),  10,113},
  {&(_tg__ZTV8S19994C7__8S19994C5[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C7__8S19994C5[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C7__8S19994C5[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C7__8S19994C5[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C7__8S19994C5[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C7__8S19994C5[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C7__8S19994C5[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__8S19994C5[4]),  4,6},
  {&(_ZTV8S19994C5[44]),  44,113},
  {&(_ZTV8S19994C5[54]),  54,113},
  {&(_ZTV8S19994C5[63]),  63,113},
  {&(_ZTV8S19994C5[28]),  28,113},
  {&(_ZTV8S19994C5[68]),  68,113},
  {&(_ZTV8S19994C5[73]),  73,113},
  {&(_ZTV8S19994C5[81]),  81,113},
  {&(_ZTV8S19994C5[99]),  99,113},
  {&(_ZTV8S19994C5[107]),  107,113},
  {&(_tg__ZTV9S19994C13__8S19994C5[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C5[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C5[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C5[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
Class_Descriptor cd_S19994C5 = {  "S19994C5", // class name
  bases_S19994C5, 19,
  &(vtc_S19994C5[0]), // expected_vtbl_contents
  &(vtt_S19994C5[0]), // expected_vtt_contents
  ABISELECT(816,620), // object size
  NSPAIRA(_ZTI8S19994C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19994C5),113, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C5),23, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C3  : S77C13_nt , virtual S19994C5 {
  int s19994c3f0;
  virtual  ~S19994C3(); // _ZN8S19994C3D2Ev
  virtual void  v41(); // _ZN8S19994C33v41Ev
  virtual void  v42(); // _ZN8S19994C33v42Ev
  virtual void  v43(); // _ZN8S19994C33v43Ev
  S19994C3(); // tgen
};
//SIG(-1 S19994C3) C1{ BC2{ m} VBC3{ VBC4{ v4 v5} BC5{ BC6{ VBC2 VBC4 BC7{ v6 v7} VBC8{ BC4 v8 v9 v10 v11 Fi[5] Fp FL[4]} v12} VBC9{ v13 Fp FD[7]} vd v14 Fp} BC10{ VBC7 VBC2 BC11{ v15 FC2 Fi[4]} BC8 v16 v17 v18} VBC11 VBC12{ VBC13{ VBC2 BC9 BC8 v19 v20 v21 v22 v23 Fi[10] FC14{ BC7 VBC6 BC2 BC8 BC4 v35}} v24 v25 v26 Fi[2]} v27 v28 v29 v30 v31 v32 v33 v34 Fp} vd v1 v2 v3 Fi}


 S19994C3 ::~S19994C3(){ note_dtor("S19994C3", this);}
void  S19994C3 ::v41(){vfunc_called(this, "_ZN8S19994C33v41Ev");}
void  S19994C3 ::v42(){vfunc_called(this, "_ZN8S19994C33v42Ev");}
void  S19994C3 ::v43(){vfunc_called(this, "_ZN8S19994C33v43Ev");}
S19994C3 ::S19994C3(){ note_ctor("S19994C3", this);} // tgen

static void Test_S19994C3()
{
  extern Class_Descriptor cd_S19994C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(53,157)];
    init_test(&cd_S19994C3, buf);
    S19994C3 *dp, &lv = *(dp=new (buf) S19994C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(832,624), "sizeof(S19994C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C3)");
    /*is_ambiguous_... S19994C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19994C3");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C5*), 0, "S19994C3");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C5*), 0, "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    /*is_ambiguous_... S19994C3::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(144,104), "S19994C3");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C5*), ABISELECT(224,164), "S19994C3");
    check_base_class_offset(lv, (S19994C7*)(S19994C5*), ABISELECT(16,8), "S19994C3");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*)(S19994C5*), ABISELECT(352,256), "S19994C3");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*)(S19994C5*), ABISELECT(32,16), "S19994C3");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(64,40), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(64,40), "S19994C3");
    check_base_class_offset(lv, (S19994C11*)(S19994C5*), ABISELECT(32,16), "S19994C3");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C5*), ABISELECT(360,260), "S19994C3");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(416,296), "S19994C3");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(544,388), "S19994C3");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(544,388), "S19994C3");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(416,296), "S19994C3");
    check_base_class_offset(lv, (S19994C13*)(S19994C5*), ABISELECT(392,284), "S19994C3");
    check_base_class_offset(lv, (S19994C5*), ABISELECT(16,8), "S19994C3");
    check_field_offset(lv, s19994c3f0, ABISELECT(8,4), "S19994C3.s19994c3f0");
    test_class_info(&lv, &cd_S19994C3);
    dp->~S19994C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C3(Test_S19994C3, "S19994C3", ABISELECT(832,624));

#else // __cplusplus

extern void _ZN8S19994C3C1Ev();
extern void _ZN8S19994C3D2Ev();
Name_Map name_map_S19994C3[] = {
  NSPAIR(_ZN8S19994C3C1Ev),
  NSPAIR(_ZN8S19994C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C5;
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
static Base_Class bases_S19994C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19994C6,    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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,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
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    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
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(144,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(144,104), //bcp->offset
    83, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(16,8), //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
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(224,164), //bcp->offset
    97, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19994C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(352,256), //bcp->offset
    101, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19994C12,    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
    15, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    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
    16, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(64,40), //bcp->offset
    75, //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
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(32,16), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C12,    ABISELECT(360,260), //bcp->offset
    107, //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
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C2,    ABISELECT(416,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(544,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(544,388), //bcp->offset
    142, //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(416,296), //bcp->offset
    121, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(392,284), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C3[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C3D1Ev();
extern void _ZN8S19994C3D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19994C3D1Ev,_ZThn8_N8S19994C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19994C3D0Ev,_ZThn8_N8S19994C3D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C3[] = {
  ABISELECT(416,296),
  ABISELECT(392,284),
  ABISELECT(360,260),
  ABISELECT(352,256),
  ABISELECT(224,164),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  0,
  ABISELECT(-360,-260),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-392,-284),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-544,-388),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV8S19994C3[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C3[] = {
  ABISELECT(400,288),
  ABISELECT(376,276),
  ABISELECT(344,252),
  ABISELECT(336,248),
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C78S19994C5__8S19994C3[] = {
  ABISELECT(208,156),
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C78S19994C5__8S19994C3[] = {
  ABISELECT(128,96),
  ABISELECT(-16,-8),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5__8S19994C3[] = {
  ABISELECT(112,88),
  ABISELECT(320,240),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C5__8S19994C3[] = {
  0,
  0,
  ABISELECT(-336,-248),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C5__8S19994C3[] = {
  0,
  ABISELECT(-344,-252),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5__8S19994C3[] = {
  0,
  0,
  0,
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5__8S19994C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C3[] = {
  ABISELECT(-528,-380),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C3[] = {
  ABISELECT(-248,-180),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C3[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C3[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C3[] = {
  ABISELECT(-272,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C3[] = {
  {&(_ZTV8S19994C3[13]),  13,150},
  {&(_ZTV8S19994C3[53]),  53,150},
  {&(_ZTV8S19994C3[13]),  13,150},
  {&(_ZTV8S19994C3[91]),  91,150},
  {&(_ZTV8S19994C3[100]),  100,150},
  {&(_ZTV8S19994C3[71]),  71,150},
  {&(_ZTV8S19994C3[105]),  105,150},
  {&(_ZTV8S19994C3[77]),  77,150},
  {&(_ZTV8S19994C3[110]),  110,150},
  {&(_ZTV8S19994C3[118]),  118,150},
  {&(_ZTV8S19994C3[136]),  136,150},
  {&(_ZTV8S19994C3[144]),  144,150},
  {&(_tg__ZTV8S19994C5__8S19994C3[10]),  10,24},
  {&(_tg__ZTV8S19994C78S19994C5__8S19994C3[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C78S19994C5__8S19994C3[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C3[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV8S19994C6__8S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C5__8S19994C3[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5__8S19994C3[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C5__8S19994C3[4]),  4,6},
  {&(_tg__ZTV9S19994C12__A1__8S19994C5__8S19994C3[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C5__8S19994C3[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C5__8S19994C3[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C3[2]),  2,8},
  {&(_tg__ZTV9S19994C13__8S19994C3[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C3[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C3[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C3[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19994C3[];
extern  VTBL_ENTRY _ZTV8S19994C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C3[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19994C3D0Ev,_ZThn8_N8S19994C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19994C3D1Ev,_ZThn8_N8S19994C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19994C3 = {  "S19994C3", // class name
  bases_S19994C3, 21,
  &(vtc_S19994C3[0]), // expected_vtbl_contents
  &(vtt_S19994C3[0]), // expected_vtt_contents
  ABISELECT(832,624), // object size
  NSPAIRA(_ZTI8S19994C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19994C3),150, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C3),35, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C18  : virtual S19994C12 , S19994C9 , virtual S19994C6 , S19994C15 , S19994C2 {
  int s19994c18f0;
  virtual void  v54(); // _ZN9S19994C183v54Ev
  virtual void  v55(); // _ZN9S19994C183v55Ev
  virtual void  v56(); // _ZN9S19994C183v56Ev
  ~S19994C18(); // tgen
  S19994C18(); // tgen
};
//SIG(-1 S19994C18) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S19994C18 ::v54(){vfunc_called(this, "_ZN9S19994C183v54Ev");}
void  S19994C18 ::v55(){vfunc_called(this, "_ZN9S19994C183v55Ev");}
void  S19994C18 ::v56(){vfunc_called(this, "_ZN9S19994C183v56Ev");}
S19994C18 ::~S19994C18(){ note_dtor("S19994C18", this);} // tgen
S19994C18 ::S19994C18(){ note_ctor("S19994C18", this);} // tgen

static void Test_S19994C18()
{
  extern Class_Descriptor cd_S19994C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S19994C18, buf);
    S19994C18 *dp, &lv = *(dp=new (buf) S19994C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S19994C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C18)");
    check_base_class_offset(lv, (S19994C12*), ABISELECT(232,168), "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*), 0, "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(264,192), "S19994C18");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(264,192), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*), ABISELECT(8,4), "S19994C18");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C18");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(272,196), "S19994C18");
    /*is_ambiguous_... S19994C18::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(280,200), "S19994C18");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(280,200), "S19994C18");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*), ABISELECT(272,196), "S19994C18");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*), ABISELECT(8,4), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*), ABISELECT(16,8), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*), ABISELECT(16,8), "S19994C18");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*), ABISELECT(88,68), "S19994C18");
    check_base_class_offset(lv, (S19994C15*), ABISELECT(8,4), "S19994C18");
    check_base_class_offset(lv, (S19994C2*), ABISELECT(96,72), "S19994C18");
    check_field_offset(lv, s19994c18f0, ABISELECT(224,164), "S19994C18.s19994c18f0");
    test_class_info(&lv, &cd_S19994C18);
    dp->~S19994C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C18(Test_S19994C18, "S19994C18", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN9S19994C18C1Ev();
extern void _ZN9S19994C18D1Ev();
Name_Map name_map_S19994C18[] = {
  NSPAIR(_ZN9S19994C18C1Ev),
  NSPAIR(_ZN9S19994C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
static Base_Class bases_S19994C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C12,    ABISELECT(232,168), //bcp->offset
    36, //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_S19994C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(264,192), //bcp->offset
    40, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C9,    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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S77C13_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_S19994C6,    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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(16,8), //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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(88,68), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_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},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C18[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C18[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C18[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C18[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C15__9S19994C18[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C15__9S19994C18[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C15__9S19994C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C18[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C18[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C18[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C18[] = {
  {&(_ZTV9S19994C18[7]),  7,71},
  {&(_tg__ZTV9S19994C15__9S19994C18[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C15__9S19994C18[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C15__9S19994C18[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C15__9S19994C18[8]),  8,14},
  {&(_ZTV9S19994C18[39]),  39,71},
  {&(_ZTV9S19994C18[44]),  44,71},
  {&(_ZTV9S19994C18[18]),  18,71},
  {&(_ZTV9S19994C18[54]),  54,71},
  {&(_ZTV9S19994C18[65]),  65,71},
  {&(_tg__ZTV8S19994C8__9S19994C18[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C18[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C18[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
Class_Descriptor cd_S19994C18 = {  "S19994C18", // class name
  bases_S19994C18, 15,
  &(vtc_S19994C18[0]), // expected_vtbl_contents
  &(vtt_S19994C18[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI9S19994C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C18),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C18),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C17  : virtual S19994C11 {
  ::S19994C18 s19994c17f0;
  ::S19994C10 s19994c17f1;
  int s19994c17f2;
  ::S19994C7 s19994c17f3;
  virtual void  v44(); // _ZN9S19994C173v44Ev
  virtual void  v45(); // _ZN9S19994C173v45Ev
  virtual void  v46(); // _ZN9S19994C173v46Ev
  virtual void  v47(); // _ZN9S19994C173v47Ev
  ~S19994C17(); // tgen
  S19994C17(); // tgen
};
//SIG(-1 S19994C17) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC5 BC3 VBC7 BC9{ BC3 VBC10{ VBC4 VBC7 BC3 VBC6 v20} BC4 BC6 BC7 v21} BC11{ v22 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC12{ BC10 VBC11 vd v23 Fp}}


void  S19994C17 ::v44(){vfunc_called(this, "_ZN9S19994C173v44Ev");}
void  S19994C17 ::v45(){vfunc_called(this, "_ZN9S19994C173v45Ev");}
void  S19994C17 ::v46(){vfunc_called(this, "_ZN9S19994C173v46Ev");}
void  S19994C17 ::v47(){vfunc_called(this, "_ZN9S19994C173v47Ev");}
S19994C17 ::~S19994C17(){ note_dtor("S19994C17", this);} // tgen
S19994C17 ::S19994C17(){ note_ctor("S19994C17", this);} // tgen

static void Test_S19994C17()
{
  extern Class_Descriptor cd_S19994C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S19994C17, buf);
    S19994C17 *dp, &lv = *(dp=new (buf) S19994C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S19994C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C17)");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), 0, "S19994C17");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C17");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(672,492), "S19994C17");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(704,516), "S19994C17");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(704,516), "S19994C17");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(672,492), "S19994C17");
    check_field_offset(lv, s19994c17f0, ABISELECT(16,4), "S19994C17.s19994c17f0");
    check_field_offset(lv, s19994c17f1, ABISELECT(368,264), "S19994C17.s19994c17f1");
    check_field_offset(lv, s19994c17f2, ABISELECT(440,324), "S19994C17.s19994c17f2");
    check_field_offset(lv, s19994c17f3, ABISELECT(448,328), "S19994C17.s19994c17f3");
    test_class_info(&lv, &cd_S19994C17);
    dp->~S19994C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C17(Test_S19994C17, "S19994C17", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN9S19994C17C1Ev();
extern void _ZN9S19994C17D1Ev();
Name_Map name_map_S19994C17[] = {
  NSPAIR(_ZN9S19994C17C1Ev),
  NSPAIR(_ZN9S19994C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
static Base_Class bases_S19994C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C12,    ABISELECT(672,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(704,516), //bcp->offset
    31, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C17[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY vtc_S19994C17[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern VTBL_ENTRY _ZTV9S19994C17[];
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__9S19994C17[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
static  VTT_ENTRY vtt_S19994C17[] = {
  {&(_ZTV9S19994C17[7]),  7,39},
  {&(_ZTV9S19994C17[27]),  27,39},
  {&(_ZTV9S19994C17[7]),  7,39},
  {&(_ZTV9S19994C17[33]),  33,39},
  {&(_tg__ZTV9S19994C11__9S19994C17[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__9S19994C17[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
Class_Descriptor cd_S19994C17 = {  "S19994C17", // class name
  bases_S19994C17, 6,
  &(vtc_S19994C17[0]), // expected_vtbl_contents
  &(vtt_S19994C17[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI9S19994C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19994C17),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C17),6, //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  S19994C16  : virtual S19994C11 , virtual S19994C17 , S19994C13 , S19994C7 {
  int s19994c16f0:13;
  virtual  ~S19994C16(); // _ZN9S19994C16D2Ev
  virtual void  v48(); // _ZN9S19994C163v48Ev
  virtual void  v49(); // _ZN9S19994C163v49Ev
  virtual void  v50(); // _ZN9S19994C163v50Ev
  virtual void  v51(); // _ZN9S19994C163v51Ev
  virtual void  v52(); // _ZN9S19994C163v52Ev
  S19994C16(); // tgen
};
//SIG(-1 S19994C16) C1{ VBC2{ VBC3{ v6 v7} VBC4{ m} BC5{ v8 FC4 Fi[4]} BC6{ BC7{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} VBC8{ VBC2 v18 v19 v20 v21 FC9{ VBC5 BC3 VBC7 BC10{ BC3 VBC11{ VBC4 VBC7 BC3 VBC6 v31} BC4 BC6 BC7 v36} BC12{ v22 Fp FD[7]} v33 v34 v35 Fi} FC6 Fi FC13{ BC11 VBC12 vd v32 Fp}} BC14{ VBC15{ VBC4 BC12 BC6 v23 v24 v25 v26 v27 Fi[10] FC10} v28 v29 v30 Fi[2]} BC13 vd v1 v2 v3 v4 v5 Fi:13}


 S19994C16 ::~S19994C16(){ note_dtor("S19994C16", this);}
void  S19994C16 ::v48(){vfunc_called(this, "_ZN9S19994C163v48Ev");}
void  S19994C16 ::v49(){vfunc_called(this, "_ZN9S19994C163v49Ev");}
void  S19994C16 ::v50(){vfunc_called(this, "_ZN9S19994C163v50Ev");}
void  S19994C16 ::v51(){vfunc_called(this, "_ZN9S19994C163v51Ev");}
void  S19994C16 ::v52(){vfunc_called(this, "_ZN9S19994C163v52Ev");}
S19994C16 ::S19994C16(){ note_ctor("S19994C16", this);} // tgen

static void Test_S19994C16()
{
  extern Class_Descriptor cd_S19994C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,272)];
    init_test(&cd_S19994C16, buf);
    S19994C16 *dp, &lv = *(dp=new (buf) S19994C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,1084), "sizeof(S19994C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C16)");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(144,108), "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), 0, "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), 0, "S19994C16");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*), 0, "S19994C16");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(72,48), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(72,48), "S19994C16");
    check_base_class_offset(lv, (S19994C11*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C11*)(S19994C17*), ABISELECT(40,24), "S19994C16");
    check_base_class_offset(lv, (S19994C17*), ABISELECT(144,108), "S19994C16");
    check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(816,600), "S19994C16");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(944,692), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(944,692), "S19994C16");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(816,600), "S19994C16");
    check_base_class_offset(lv, (S19994C13*), 0, "S19994C16");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*), ABISELECT(1232,928), "S19994C16");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*), ABISELECT(16,12), "S19994C16");
    /*is_ambiguous_... S19994C16::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(1240,932), "S19994C16");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*), ABISELECT(1240,932), "S19994C16");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*), ABISELECT(16,12), "S19994C16");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*), ABISELECT(1312,992), "S19994C16");
    check_base_class_offset(lv, (S19994C7*), ABISELECT(16,12), "S19994C16");
    set_bf_and_test(lv, s19994c16f0, ABISELECT(32,20), 0, 13, 1, "S19994C16");
    set_bf_and_test(lv, s19994c16f0, ABISELECT(32,20), 0, 13, hide_sll(1LL<<12), "S19994C16");
    test_class_info(&lv, &cd_S19994C16);
    dp->~S19994C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C16(Test_S19994C16, "S19994C16", ABISELECT(1440,1084));

#else // __cplusplus

extern void _ZN9S19994C16C1Ev();
extern void _ZN9S19994C16D2Ev();
Name_Map name_map_S19994C16[] = {
  NSPAIR(_ZN9S19994C16C1Ev),
  NSPAIR(_ZN9S19994C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C17;
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
static Base_Class bases_S19994C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C9,    ABISELECT(144,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C12,    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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C6,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(72,48), //bcp->offset
    50, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C17,    ABISELECT(144,108), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(816,600), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(944,692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(944,692), //bcp->offset
    96, //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(816,600), //bcp->offset
    75, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19994C13,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C6,    ABISELECT(1232,928), //bcp->offset
    104, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19994C9,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1240,932), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1240,932), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(16,12), //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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(1312,992), //bcp->offset
    124, //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
    14, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19994C7,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C16[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN9S19994C16D1Ev();
extern void _ZN9S19994C16D0Ev();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev)();
extern void _ZN8S19994C73v20Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY vtc_S19994C16[] = {
  ABISELECT(1312,992),
  ABISELECT(1240,932),
  ABISELECT(1232,928),
  ABISELECT(144,108),
  ABISELECT(144,108),
  ABISELECT(40,24),
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  ABISELECT(-1232,-928),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1240,-932),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-1312,-992),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern VTBL_ENTRY _ZTV9S19994C16[];
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__9S19994C16[] = {
  0,
  ABISELECT(816,600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__9S19994C16[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-600),
  ABISELECT(-816,-600),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__9S19994C16[] = {
  ABISELECT(-944,-692),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__9S19994C16[] = {
  ABISELECT(1296,980),
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C7__9S19994C16[] = {
  ABISELECT(1224,920),
  ABISELECT(1216,916),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C7__9S19994C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C7__9S19994C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C7__9S19994C16[] = {
  0,
  0,
  ABISELECT(-1216,-916),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C7__9S19994C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1224,-920),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C7__9S19994C16[] = {
  0,
  ABISELECT(-1296,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C16[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__9S19994C16[] = {
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__9S19994C16[] = {
  ABISELECT(-144,-108),
  0,
  ABISELECT(-104,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17__9S19994C16[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C17__9S19994C16[] = {
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C16[] = {
  ABISELECT(-816,-600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
static  VTT_ENTRY vtt_S19994C16[] = {
  {&(_ZTV9S19994C16[10]),  10,128},
  {&(_tg__ZTV9S19994C13__9S19994C16[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__9S19994C16[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__9S19994C16[2]),  2,8},
  {&(_tg__ZTV8S19994C7__9S19994C16[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C7__9S19994C16[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C7__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C7__9S19994C16[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C7__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C7__9S19994C16[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C7__9S19994C16[3]),  3,4},
  {&(_ZTV9S19994C16[46]),  46,128},
  {&(_ZTV9S19994C16[69]),  69,128},
  {&(_ZTV9S19994C16[52]),  52,128},
  {&(_ZTV9S19994C16[69]),  69,128},
  {&(_ZTV9S19994C16[90]),  90,128},
  {&(_ZTV9S19994C16[98]),  98,128},
  {&(_ZTV9S19994C16[26]),  26,128},
  {&(_ZTV9S19994C16[108]),  108,128},
  {&(_ZTV9S19994C16[118]),  118,128},
  {&(_ZTV9S19994C16[127]),  127,128},
  {&(_tg__ZTV9S19994C11__9S19994C16[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__9S19994C16[4]),  4,6},
  {&(_tg__ZTV9S19994C17__9S19994C16[7]),  7,13},
  {&(_tg__ZTV9S19994C11__9S19994C17__9S19994C16[14]),  14,18},
  {&(_tg__ZTV9S19994C17__9S19994C16[7]),  7,13},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C17__9S19994C16[2]),  2,8},
  {&(_tg__ZTV9S19994C14__9S19994C16[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S19994C16[];
extern  VTBL_ENTRY _ZTV9S19994C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C16[];
Class_Descriptor cd_S19994C16 = {  "S19994C16", // class name
  bases_S19994C16, 19,
  &(vtc_S19994C16[0]), // expected_vtbl_contents
  &(vtt_S19994C16[0]), // expected_vtt_contents
  ABISELECT(1440,1084), // object size
  NSPAIRA(_ZTI9S19994C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C16),128, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C16),28, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C21  {
  ::S19993C22_nt s19994c21f0;
  virtual void  v57(); // _ZN9S19994C213v57Ev
  virtual void  v58(); // _ZN9S19994C213v58Ev
  virtual void  v59(); // _ZN9S19994C213v59Ev
  virtual void  v60(); // _ZN9S19994C213v60Ev
  virtual void  v61(); // _ZN9S19994C213v61Ev
  virtual void  v62(); // _ZN9S19994C213v62Ev
  ~S19994C21(); // tgen
  S19994C21(); // tgen
};
//SIG(-1 S19994C21) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S19994C21 ::v57(){vfunc_called(this, "_ZN9S19994C213v57Ev");}
void  S19994C21 ::v58(){vfunc_called(this, "_ZN9S19994C213v58Ev");}
void  S19994C21 ::v59(){vfunc_called(this, "_ZN9S19994C213v59Ev");}
void  S19994C21 ::v60(){vfunc_called(this, "_ZN9S19994C213v60Ev");}
void  S19994C21 ::v61(){vfunc_called(this, "_ZN9S19994C213v61Ev");}
void  S19994C21 ::v62(){vfunc_called(this, "_ZN9S19994C213v62Ev");}
S19994C21 ::~S19994C21(){ note_dtor("S19994C21", this);} // tgen
S19994C21 ::S19994C21(){ note_ctor("S19994C21", this);} // tgen

static void Test_S19994C21()
{
  extern Class_Descriptor cd_S19994C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19994C21, buf);
    S19994C21 *dp, &lv = *(dp=new (buf) S19994C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19994C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19994C21)");
    check_field_offset(lv, s19994c21f0, ABISELECT(8,4), "S19994C21.s19994c21f0");
    test_class_info(&lv, &cd_S19994C21);
    dp->~S19994C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C21(Test_S19994C21, "S19994C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19994C21C1Ev();
extern void _ZN9S19994C21D1Ev();
Name_Map name_map_S19994C21[] = {
  NSPAIR(_ZN9S19994C21C1Ev),
  NSPAIR(_ZN9S19994C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19994C21[];
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C21[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
Class_Descriptor cd_S19994C21 = {  "S19994C21", // class name
  0,0,//no base classes
  &(vtc_S19994C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19994C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19994C21),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  S19994C20  : S19994C6 , virtual S19994C8 , S19994C2 , S19994C18 , virtual S19994C21 {
  virtual void  v63(); // _ZN9S19994C203v63Ev
  virtual void  v64(); // _ZN9S19994C203v64Ev
  ~S19994C20(); // tgen
  S19994C20(); // tgen
};
//SIG(-1 S19994C20) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S19994C20 ::v63(){vfunc_called(this, "_ZN9S19994C203v63Ev");}
void  S19994C20 ::v64(){vfunc_called(this, "_ZN9S19994C203v64Ev");}
S19994C20 ::~S19994C20(){ note_dtor("S19994C20", this);} // tgen
S19994C20 ::S19994C20(){ note_ctor("S19994C20", this);} // tgen

static void Test_S19994C20()
{
  extern Class_Descriptor cd_S19994C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S19994C20, buf);
    S19994C20 *dp, &lv = *(dp=new (buf) S19994C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S19994C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C20)");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), 0, "S19994C20");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C20");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(384,268), "S19994C20");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*), ABISELECT(384,268), "S19994C20");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(376,264), "S19994C20");
    /*is_ambiguous_... S19994C20::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(392,272), "S19994C20");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(392,272), "S19994C20");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(376,264), "S19994C20");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*), ABISELECT(376,264), "S19994C20");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*), ABISELECT(16,4), "S19994C20");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*), ABISELECT(464,332), "S19994C20");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*), ABISELECT(144,96), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*), ABISELECT(160,104), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*), ABISELECT(160,104), "S19994C20");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*), ABISELECT(232,164), "S19994C20");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*), ABISELECT(152,100), "S19994C20");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*), ABISELECT(240,168), "S19994C20");
    check_base_class_offset(lv, (S19994C18*), ABISELECT(144,96), "S19994C20");
    check_base_class_offset(lv, (S19994C21*), ABISELECT(496,356), "S19994C20");
    test_class_info(&lv, &cd_S19994C20);
    dp->~S19994C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C20(Test_S19994C20, "S19994C20", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN9S19994C20C1Ev();
extern void _ZN9S19994C20D1Ev();
Name_Map name_map_S19994C20[] = {
  NSPAIR(_ZN9S19994C20C1Ev),
  NSPAIR(_ZN9S19994C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
static Base_Class bases_S19994C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C6,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19994C9,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C2,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(464,332), //bcp->offset
    82, //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
    17, //immediately_derived
  0, 1},
  {&cd_S19994C9,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C9,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C21,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C20[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C20[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19994C20[];
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C20[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C18__9S19994C20[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C18__9S19994C20[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C18__9S19994C20[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C18__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C20[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C20[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C20[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C20[] = {
  {&(_ZTV9S19994C20[8]),  8,100},
  {&(_tg__ZTV9S19994C18__9S19994C20[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C20[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C18__9S19994C20[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C18__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C18__9S19994C20[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C18__9S19994C20[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C18__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C18__9S19994C20[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C18__9S19994C20[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C18__9S19994C20[8]),  8,14},
  {&(_ZTV9S19994C20[59]),  59,100},
  {&(_ZTV9S19994C20[66]),  66,100},
  {&(_ZTV9S19994C20[76]),  76,100},
  {&(_ZTV9S19994C20[22]),  22,100},
  {&(_ZTV9S19994C20[85]),  85,100},
  {&(_ZTV9S19994C20[33]),  33,100},
  {&(_ZTV9S19994C20[94]),  94,100},
  {&(_tg__ZTV8S19994C8__9S19994C20[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C20[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C20[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
Class_Descriptor cd_S19994C20 = {  "S19994C20", // class name
  bases_S19994C20, 19,
  &(vtc_S19994C20[0]), // expected_vtbl_contents
  &(vtt_S19994C20[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI9S19994C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19994C20),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C20),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C19  : virtual S19994C12 , virtual S19994C6 , virtual S19994C8 , S19994C20 {
  long double s19994c19f0;
  __tsi64 s19994c19f1[8];
  virtual void  v65(); // _ZN9S19994C193v65Ev
  virtual void  v66(); // _ZN9S19994C193v66Ev
  virtual void  v67(); // _ZN9S19994C193v67Ev
  virtual void  v68(); // _ZN9S19994C193v68Ev
  virtual void  v69(); // _ZN9S19994C193v69Ev
  virtual void  v70(); // _ZN9S19994C193v70Ev
  virtual void  v71(); // _ZN9S19994C193v71Ev
  ~S19994C19(); // tgen
  S19994C19(); // tgen
};
//SIG(-1 S19994C19) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S19994C19 ::v65(){vfunc_called(this, "_ZN9S19994C193v65Ev");}
void  S19994C19 ::v66(){vfunc_called(this, "_ZN9S19994C193v66Ev");}
void  S19994C19 ::v67(){vfunc_called(this, "_ZN9S19994C193v67Ev");}
void  S19994C19 ::v68(){vfunc_called(this, "_ZN9S19994C193v68Ev");}
void  S19994C19 ::v69(){vfunc_called(this, "_ZN9S19994C193v69Ev");}
void  S19994C19 ::v70(){vfunc_called(this, "_ZN9S19994C193v70Ev");}
void  S19994C19 ::v71(){vfunc_called(this, "_ZN9S19994C193v71Ev");}
S19994C19 ::~S19994C19(){ note_dtor("S19994C19", this);} // tgen
S19994C19 ::S19994C19(){ note_ctor("S19994C19", this);} // tgen

static void Test_S19994C19()
{
  extern Class_Descriptor cd_S19994C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S19994C19, buf);
    S19994C19 *dp, &lv = *(dp=new (buf) S19994C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S19994C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C19)");
    check_base_class_offset(lv, (S19994C12*), ABISELECT(464,340), "S19994C19");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*)(S19994C20*), ABISELECT(464,340), "S19994C19");
    /*is_ambiguous_... S19994C19::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*), ABISELECT(496,364), "S19994C19");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), ABISELECT(496,364), "S19994C19");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*)(S19994C20*), ABISELECT(496,364), "S19994C19");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), 0, "S19994C19");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(504,368), "S19994C19");
    /*is_ambiguous_... S19994C19::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(512,372), "S19994C19");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(512,372), "S19994C19");
    check_base_class_offset(lv, (S19994C8*), ABISELECT(504,368), "S19994C19");
    check_base_class_offset(lv, (S19994C8*)(S19994C20*), ABISELECT(504,368), "S19994C19");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(504,368), "S19994C19");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C20*), 0, "S19994C19");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C20*), ABISELECT(16,4), "S19994C19");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*)(S19994C20*), ABISELECT(144,96), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(160,104), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(160,104), "S19994C19");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(232,164), "S19994C19");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*)(S19994C20*), ABISELECT(152,100), "S19994C19");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*)(S19994C20*), ABISELECT(240,168), "S19994C19");
    check_base_class_offset(lv, (S19994C18*)(S19994C20*), ABISELECT(144,96), "S19994C19");
    check_base_class_offset(lv, (S19994C21*)(S19994C20*), ABISELECT(584,432), "S19994C19");
    check_base_class_offset(lv, (S19994C20*), 0, "S19994C19");
    check_field_offset(lv, s19994c19f0, ABISELECT(384,264), "S19994C19.s19994c19f0");
    check_field_offset(lv, s19994c19f1, ABISELECT(400,276), "S19994C19.s19994c19f1");
    test_class_info(&lv, &cd_S19994C19);
    dp->~S19994C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C19(Test_S19994C19, "S19994C19", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN9S19994C19C1Ev();
extern void _ZN9S19994C19D1Ev();
Name_Map name_map_S19994C19[] = {
  NSPAIR(_ZN9S19994C19C1Ev),
  NSPAIR(_ZN9S19994C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
extern Class_Descriptor cd_S19994C20;
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
static Base_Class bases_S19994C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C12,    ABISELECT(464,340), //bcp->offset
    58, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C6,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C9,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C10,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //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, 1},
  {&cd_S19994C8,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(16,4), //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
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19994C9,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C9,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19994C21,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //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
    19, //immediately_derived
  0, 1},
  {&cd_S19994C20,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19994C19[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV9S19994C19[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C20__9S19994C19[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C189S19994C20__9S19994C19[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C189S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C189S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A1__9S19994C20__9S19994C19[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C20__9S19994C19[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C20__9S19994C19[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C20__9S19994C19[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C20__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C19[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__9S19994C19[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__9S19994C19[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C19[] = {
  {&(_ZTV9S19994C19[8]),  8,107},
  {&(_tg__ZTV9S19994C20__9S19994C19[8]),  8,12},
  {&(_tg__ZTV9S19994C189S19994C20__9S19994C19[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C189S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C189S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C189S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C189S19994C20__9S19994C19[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C189S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C189S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C189S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C189S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV8S19994C8__9S19994C20__9S19994C19[8]),  8,11},
  {&(_tg__ZTV8S19994C6__A1__9S19994C20__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C20__9S19994C19[8]),  8,14},
  {&(_tg__ZTV9S19994C18__9S19994C20__9S19994C19[7]),  7,12},
  {&(_tg__ZTV9S19994C12__9S19994C20__9S19994C19[3]),  3,4},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C20__9S19994C19[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C20__9S19994C19[8]),  8,14},
  {&(_ZTV9S19994C19[61]),  61,107},
  {&(_ZTV9S19994C19[66]),  66,107},
  {&(_ZTV9S19994C19[76]),  76,107},
  {&(_ZTV9S19994C19[87]),  87,107},
  {&(_ZTV9S19994C19[29]),  29,107},
  {&(_ZTV9S19994C19[40]),  40,107},
  {&(_ZTV9S19994C19[101]),  101,107},
  {&(_tg__ZTV8S19994C8__9S19994C19[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__9S19994C19[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__9S19994C19[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S19994C19[];
extern  VTBL_ENTRY _ZTV9S19994C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C19[];
Class_Descriptor cd_S19994C19 = {  "S19994C19", // class name
  bases_S19994C19, 20,
  &(vtc_S19994C19[0]), // expected_vtbl_contents
  &(vtt_S19994C19[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI9S19994C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19994C19),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19994C19),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19994C1  : virtual S19994C2 , S19994C3 , S19994C16 , S19994C14 , S19994C19 {
  __tsi64 s19994c1f0;
  virtual  ~S19994C1(); // _ZN8S19994C1D2Ev
  virtual void  v1(); // _ZN8S19994C12v1Ev
  virtual void  v2(); // _ZN8S19994C12v2Ev
  virtual void  v3(); // _ZN8S19994C12v3Ev
  virtual void  v4(); // _ZN8S19994C12v4Ev
  virtual void  v5(); // _ZN8S19994C12v5Ev
  virtual void  v6(); // _ZN8S19994C12v6Ev
  virtual void  v7(); // _ZN8S19994C12v7Ev
  virtual void  v8(); // _ZN8S19994C12v8Ev
  virtual void  v9(); // _ZN8S19994C12v9Ev
  S19994C1(); // tgen
};
//SIG(1 S19994C1) C1{ VBC2{ v10 Fp FD[7]} BC3{ BC4{ m} VBC5{ VBC6{ v11 v12} BC7{ BC8{ VBC4 VBC6 BC9{ v13 v14} VBC10{ BC6 v15 v16 v17 v18 Fi[5] Fp FL[4]} v19} VBC2 vd v20 Fp} BC11{ VBC9 VBC4 BC12{ v21 FC4 Fi[4]} BC10 v22 v23 v24} VBC12 VBC13{ VBC14{ VBC4 BC2 BC10 v25 v26 v27 v28 v29 Fi[10] FC15{ BC9 VBC8 BC4 BC10 BC6 v53}} v30 v31 v32 Fi[2]} v33 v34 v35 v36 v37 v38 v39 v40 Fp} vd v41 v42 v43 Fi} BC16{ VBC11 VBC17{ VBC11 v44 v45 v46 v47 FC18{ VBC12 BC9 VBC6 BC15 BC2 v54 v55 v56 Fi} FC10 Fi FC7} BC13 BC7 vd v48 v49 v50 v51 v52 Fi:13} BC14 BC19{ VBC12 VBC6 VBC8 BC20{ BC6 VBC8 BC2 BC18 VBC21{ v57 v58 v59 v60 v61 v62 FU22{ m Fi}} v63 v64} v65 v66 v67 v68 v69 v70 v71 FD FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FL}


 S19994C1 ::~S19994C1(){ note_dtor("S19994C1", this);}
void  S19994C1 ::v1(){vfunc_called(this, "_ZN8S19994C12v1Ev");}
void  S19994C1 ::v2(){vfunc_called(this, "_ZN8S19994C12v2Ev");}
void  S19994C1 ::v3(){vfunc_called(this, "_ZN8S19994C12v3Ev");}
void  S19994C1 ::v4(){vfunc_called(this, "_ZN8S19994C12v4Ev");}
void  S19994C1 ::v5(){vfunc_called(this, "_ZN8S19994C12v5Ev");}
void  S19994C1 ::v6(){vfunc_called(this, "_ZN8S19994C12v6Ev");}
void  S19994C1 ::v7(){vfunc_called(this, "_ZN8S19994C12v7Ev");}
void  S19994C1 ::v8(){vfunc_called(this, "_ZN8S19994C12v8Ev");}
void  S19994C1 ::v9(){vfunc_called(this, "_ZN8S19994C12v9Ev");}
S19994C1 ::S19994C1(){ note_ctor("S19994C1", this);} // tgen

static void Test_S19994C1()
{
  extern Class_Descriptor cd_S19994C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(162,478)];
    init_test(&cd_S19994C1, buf);
    S19994C1 *dp, &lv = *(dp=new (buf) S19994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2576,1908), "sizeof(S19994C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19994C1)");
    /*is_ambiguous_... S19994C1::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*), ABISELECT(960,708), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C5*), ABISELECT(960,708), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C7*)(S19994C16*), ABISELECT(960,708), "S19994C1");
    /*is_ambiguous_... S19994C3::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C3*), 0, "S19994C1");
    /*is_ambiguous_... S19994C5::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C5*), 0, "S19994C1");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C5*), 0, "S19994C1");
    /*is_ambiguous_... S19994C8::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*)(S19994C7*)(S19994C16*), 0, "S19994C1");
    /*is_ambiguous_... S19994C19::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C19*), 0, "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C8*), 0, "S19994C1");
    /*is_ambiguous_... S19994C18::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C18*)(S19994C20*)(S19994C19*), 0, "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C11*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C11*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C14*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C8*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(1216,896), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C8*), ABISELECT(1216,896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C7*)(S19994C5*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C11*)(S19994C5*), ABISELECT(1872,1404), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C11*), ABISELECT(1872,1404), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C11*)(S19994C5*), ABISELECT(1104,808), "S19994C1");
    check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(1136,832), "S19994C1");
    check_base_class_offset(lv, (S19994C10*)(S19994C11*)(S19994C5*), ABISELECT(1136,832), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C5*), ABISELECT(1104,808), "S19994C1");
    /*is_ambiguous_... S19994C5::S19994C12 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C5*), ABISELECT(1288,956), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C19*), ABISELECT(1288,956), "S19994C1");
    check_base_class_offset(lv, (S19994C12*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(1288,956), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(1344,992), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(1472,1084), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(1472,1084), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C13 */ AMB_check_base_class_offset(lv, (S19994C14*)(S19994C13*), ABISELECT(1344,992), "S19994C1");
    check_base_class_offset(lv, (S19994C14*)(S19994C13*)(S19994C16*), ABISELECT(1344,992), "S19994C1");
    check_base_class_offset(lv, (S19994C13*)(S19994C5*), ABISELECT(1320,980), "S19994C1");
    check_base_class_offset(lv, (S19994C5*)(S19994C3*), ABISELECT(1088,800), "S19994C1");
    check_base_class_offset(lv, (S19994C3*), 0, "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C12*)(S19994C11*), ABISELECT(1760,1320), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C11*), ABISELECT(1792,1344), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C11 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C11*), ABISELECT(1792,1344), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C16*), ABISELECT(1760,1320), "S19994C1");
    check_base_class_offset(lv, (S19994C11*)(S19994C17*), ABISELECT(1760,1320), "S19994C1");
    check_base_class_offset(lv, (S19994C17*)(S19994C16*), ABISELECT(1872,1404), "S19994C1");
    check_base_class_offset(lv, (S19994C13*)(S19994C16*), ABISELECT(16,8), "S19994C1");
    check_base_class_offset(lv, (S19994C9*)(S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C7*)(S19994C16*), ABISELECT(32,20), "S19994C1");
    check_base_class_offset(lv, (S19994C16*), ABISELECT(16,8), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C14*), ABISELECT(64,32), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C14*), ABISELECT(192,124), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C14*), ABISELECT(192,124), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C14 */ AMB_check_base_class_offset(lv, (S19994C14*), ABISELECT(64,32), "S19994C1");
    /*is_ambiguous_... S19994C1::S19994C8 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C8*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C20*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    check_base_class_offset(lv, (S19994C8*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(2544,1896), "S19994C1");
    /*is_ambiguous_... S19994C20::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C20*)(S19994C19*), ABISELECT(480,360), "S19994C1");
    /*is_ambiguous_... S19994C20::S19994C2 */ AMB_check_base_class_offset(lv, (S19994C2*)(S19994C20*)(S19994C19*), ABISELECT(496,364), "S19994C1");
    /*is_ambiguous_... S19994C18::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(624,456), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C9 */ AMB_check_base_class_offset(lv, (S19994C9*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    /*is_ambiguous_... S19994C15::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(640,464), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C10 */ AMB_check_base_class_offset(lv, (S19994C10*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(640,464), "S19994C1");
    /*is_ambiguous_... S19994C15::S19994C6 */ AMB_check_base_class_offset(lv, (S19994C6*)(S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(712,524), "S19994C1");
    check_base_class_offset(lv, (S19994C15*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(632,460), "S19994C1");
    check_base_class_offset(lv, (S19994C2*)(S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(720,528), "S19994C1");
    check_base_class_offset(lv, (S19994C18*)(S19994C20*)(S19994C19*), ABISELECT(624,456), "S19994C1");
    check_base_class_offset(lv, (S19994C21*)(S19994C20*)(S19994C19*), ABISELECT(2552,1900), "S19994C1");
    check_base_class_offset(lv, (S19994C20*)(S19994C19*), ABISELECT(480,360), "S19994C1");
    check_base_class_offset(lv, (S19994C19*), ABISELECT(480,360), "S19994C1");
    check_field_offset(lv, s19994c1f0, ABISELECT(944,700), "S19994C1.s19994c1f0");
    test_class_info(&lv, &cd_S19994C1);
    dp->~S19994C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19994C1(Test_S19994C1, "S19994C1", ABISELECT(2576,1908));

#else // __cplusplus

extern void _ZN8S19994C1C1Ev();
extern void _ZN8S19994C1D2Ev();
Name_Map name_map_S19994C1[] = {
  NSPAIR(_ZN8S19994C1C1Ev),
  NSPAIR(_ZN8S19994C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C5;
extern VTBL_ENTRY _ZTI8S19994C5[];
extern  VTBL_ENTRY _ZTV8S19994C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C5[];
extern Class_Descriptor cd_S19994C3;
extern VTBL_ENTRY _ZTI8S19994C3[];
extern  VTBL_ENTRY _ZTV8S19994C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C3[];
extern Class_Descriptor cd_S19994C12;
extern VTBL_ENTRY _ZTI9S19994C12[];
extern  VTBL_ENTRY _ZTV9S19994C12[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C11;
extern VTBL_ENTRY _ZTI9S19994C11[];
extern  VTBL_ENTRY _ZTV9S19994C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C11[];
extern Class_Descriptor cd_S19994C17;
extern VTBL_ENTRY _ZTI9S19994C17[];
extern  VTBL_ENTRY _ZTV9S19994C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C17[];
extern Class_Descriptor cd_S19994C13;
extern VTBL_ENTRY _ZTI9S19994C13[];
extern  VTBL_ENTRY _ZTV9S19994C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C13[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C7;
extern VTBL_ENTRY _ZTI8S19994C7[];
extern  VTBL_ENTRY _ZTV8S19994C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C7[];
extern Class_Descriptor cd_S19994C16;
extern VTBL_ENTRY _ZTI9S19994C16[];
extern  VTBL_ENTRY _ZTV9S19994C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C16[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C14;
extern VTBL_ENTRY _ZTI9S19994C14[];
extern  VTBL_ENTRY _ZTV9S19994C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C14[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C8;
extern VTBL_ENTRY _ZTI8S19994C8[];
extern  VTBL_ENTRY _ZTV8S19994C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C8[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S19994C9;
extern VTBL_ENTRY _ZTI8S19994C9[];
extern  VTBL_ENTRY _ZTV8S19994C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C10;
extern VTBL_ENTRY _ZTI9S19994C10[];
extern  VTBL_ENTRY _ZTV9S19994C10[];
extern Class_Descriptor cd_S19994C6;
extern VTBL_ENTRY _ZTI8S19994C6[];
extern  VTBL_ENTRY _ZTV8S19994C6[];
extern Class_Descriptor cd_S19994C15;
extern VTBL_ENTRY _ZTI9S19994C15[];
extern  VTBL_ENTRY _ZTV9S19994C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C15[];
extern Class_Descriptor cd_S19994C2;
extern VTBL_ENTRY _ZTI8S19994C2[];
extern  VTBL_ENTRY _ZTV8S19994C2[];
extern Class_Descriptor cd_S19994C18;
extern VTBL_ENTRY _ZTI9S19994C18[];
extern  VTBL_ENTRY _ZTV9S19994C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C18[];
extern Class_Descriptor cd_S19994C21;
extern VTBL_ENTRY _ZTI9S19994C21[];
extern  VTBL_ENTRY _ZTV9S19994C21[];
extern Class_Descriptor cd_S19994C20;
extern VTBL_ENTRY _ZTI9S19994C20[];
extern  VTBL_ENTRY _ZTV9S19994C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C20[];
extern Class_Descriptor cd_S19994C19;
extern VTBL_ENTRY _ZTI9S19994C19[];
extern  VTBL_ENTRY _ZTV9S19994C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19994C19[];
static Base_Class bases_S19994C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19994C2,    ABISELECT(960,708), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(1216,896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19994C9,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C6,    ABISELECT(1216,896), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C10,    ABISELECT(1216,896), //bcp->offset
    207, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19994C8,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19994C7,    ABISELECT(1088,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(1872,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19994C12,    ABISELECT(1104,808), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1136,832), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1136,832), //bcp->offset
    199, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(1104,808), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19994C12,    ABISELECT(1288,956), //bcp->offset
    221, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C2,    ABISELECT(1344,992), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1472,1084), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(1472,1084), //bcp->offset
    256, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(1344,992), //bcp->offset
    235, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(1320,980), //bcp->offset
    225, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19994C5,    ABISELECT(1088,800), //bcp->offset
    144, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19994C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C12,    ABISELECT(1760,1320), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(1792,1344), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19994C10,    ABISELECT(1792,1344), //bcp->offset
    282, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19994C11,    ABISELECT(1760,1320), //bcp->offset
    264, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19994C17,    ABISELECT(1872,1404), //bcp->offset
    290, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19994C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19994C9,    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
    30, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19994C8,    ABISELECT(32,20), //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
    31, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19994C7,    ABISELECT(32,20), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19994C16,    ABISELECT(16,8), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C2,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19994C6,    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
    35, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(192,124), //bcp->offset
    74, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S19994C14,    ABISELECT(64,32), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19994C9,    ABISELECT(2544,1896), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S19994C8,    ABISELECT(2544,1896), //bcp->offset
    307, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19994C6,    ABISELECT(480,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
    38, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(496,364), //bcp->offset
    101, //bcp->virtual_function_table_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
    50, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(624,456), //bcp->offset
    -1, //bcp->virtual_function_table_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
    48, //immediately_derived
  0, 0},
  {&cd_S19994C9,    ABISELECT(632,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
    41, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(632,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
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(640,464), //bcp->offset
    -1, //bcp->virtual_function_table_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
    44, //immediately_derived
  0, 0},
  {&cd_S19994C10,    ABISELECT(640,464), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C6,    ABISELECT(712,524), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19994C15,    ABISELECT(632,460), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19994C2,    ABISELECT(720,528), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19994C18,    ABISELECT(624,456), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19994C21,    ABISELECT(2552,1900), //bcp->offset
    318, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19994C20,    ABISELECT(480,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19994C19,    ABISELECT(480,360), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19994C1[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C1D1Ev();
extern void _ZN8S19994C1D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
extern void _ZN8S19994C12v1Ev();
extern void _ZN8S19994C12v2Ev();
extern void _ZN8S19994C12v3Ev();
extern void _ZN8S19994C12v4Ev();
extern void _ZN8S19994C12v5Ev();
extern void _ZN8S19994C12v6Ev();
extern void _ZN8S19994C12v7Ev();
extern void _ZN8S19994C12v8Ev();
extern void _ZN8S19994C12v9Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void ABISELECT(_ZThn16_N8S19994C1D1Ev,_ZThn8_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19994C1D0Ev,_ZThn8_N8S19994C1D0Ev)();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn32_N8S19994C1D1Ev,_ZThn20_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19994C1D0Ev,_ZThn20_N8S19994C1D0Ev)();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C1D1Ev,_ZThn800_N8S19994C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C1D0Ev,_ZThn800_N8S19994C1D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY vtc_S19994C1[] = {
  ABISELECT(2552,1900),
  ABISELECT(2544,1896),
  ABISELECT(1872,1404),
  ABISELECT(1760,1320),
  ABISELECT(1344,992),
  ABISELECT(1320,980),
  ABISELECT(1288,956),
  ABISELECT(1872,1404),
  ABISELECT(960,708),
  ABISELECT(1216,896),
  ABISELECT(1216,896),
  0,
  ABISELECT(1088,800),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19994C12v9Ev,
  ABISELECT(944,700),
  ABISELECT(1200,888),
  ABISELECT(-16,-8),
  ABISELECT(1856,1396),
  ABISELECT(1856,1396),
  ABISELECT(1744,1312),
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19994C1D1Ev,_ZThn8_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19994C1D0Ev,_ZThn8_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19994C1D1Ev,_ZThn20_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19994C1D0Ev,_ZThn20_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  ABISELECT(1152,864),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  ABISELECT(-480,-360),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-624,-456),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-632,-460),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(-712,-524),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  ABISELECT(-720,-528),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  0,
  ABISELECT(-960,-708),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-800),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-808),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-1136,-832),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-896),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  ABISELECT(-1288,-956),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-992),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
  ABISELECT(-1472,-1084),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1760,-1320),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
  ABISELECT(-1792,-1344),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1872,-1404),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2552,-1900),
  (VTBL_ENTRY)&(_ZTI8S19994C1[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern VTBL_ENTRY _ZTV8S19994C1[];
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN8S19994C3D1Ev();
extern void _ZN8S19994C3D0Ev();
extern void _ZN8S19994C33v41Ev();
extern void _ZN8S19994C33v42Ev();
extern void _ZN8S19994C33v43Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C3__8S19994C1[] = {
  ABISELECT(1344,992),
  ABISELECT(1320,980),
  ABISELECT(1288,956),
  ABISELECT(1872,1404),
  ABISELECT(960,708),
  ABISELECT(1216,896),
  ABISELECT(1216,896),
  0,
  ABISELECT(1088,800),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v41Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v42Ev,
  (VTBL_ENTRY)&_ZN8S19994C33v43Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C3D1Ev,_ZThn800_N8S19994C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19994C3D0Ev,_ZThn800_N8S19994C3D0Ev)() __attribute__((weak));
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C3__8S19994C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1088,-800),
  0,
  0,
  0,
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C3__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1216,-896),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C3__8S19994C1[] = {
  0,
  ABISELECT(-960,-708),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C3__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-1104,-808),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C3__8S19994C1[] = {
  0,
  0,
  ABISELECT(-1872,-1404),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C118S19994C5__A1__8S19994C3__8S19994C1[] = {
  ABISELECT(-1136,-832),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C3__8S19994C1[] = {
  0,
  ABISELECT(-1288,-956),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C3__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-1320,-980),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C3__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1344,-992),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C3__8S19994C1[] = {
  ABISELECT(-1472,-1084),
  (VTBL_ENTRY)&(_ZTI8S19994C3[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
extern void _ZN9S19994C16D1Ev();
extern void _ZN9S19994C16D0Ev();
extern void _ZN9S19994C163v48Ev();
extern void _ZN9S19994C163v49Ev();
extern void _ZN9S19994C163v50Ev();
extern void _ZN9S19994C163v51Ev();
extern void _ZN9S19994C163v52Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C16__8S19994C1[] = {
  ABISELECT(944,700),
  ABISELECT(1200,888),
  ABISELECT(-16,-8),
  ABISELECT(1856,1396),
  ABISELECT(1856,1396),
  ABISELECT(1744,1312),
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19994C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v48Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v49Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v50Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v51Ev,
  (VTBL_ENTRY)&_ZN9S19994C163v52Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(1200,888),
  ABISELECT(1328,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-984),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C139S19994C16__A1__8S19994C1[] = {
  ABISELECT(-1456,-1076),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C79S19994C16__A1__8S19994C1[] = {
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-876),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1184,-876),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C79S19994C16__A1__8S19994C1[] = {
  0,
  ABISELECT(-928,-688),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C16__8S19994C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(-1744,-1312),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__9S19994C16__8S19994C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  ABISELECT(-1856,-1396),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C16__8S19994C1[] = {
  ABISELECT(-1776,-1336),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C16__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-1328,-984),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A1__9S19994C16__8S19994C1[] = {
  ABISELECT(-1456,-1076),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev)();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C7__9S19994C16__8S19994C1[] = {
  ABISELECT(928,688),
  ABISELECT(1184,876),
  ABISELECT(-32,-20),
  ABISELECT(1184,876),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D1Ev,_ZThn12_N9S19994C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19994C16D0Ev,_ZThn12_N9S19994C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A2__9S19994C16__8S19994C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__A2__9S19994C16__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-888),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__A1__9S19994C16__8S19994C1[] = {
  0,
  ABISELECT(-944,-700),
  (VTBL_ENTRY)&(_ZTI9S19994C16[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__A__8S19994C1[] = {
  ABISELECT(1152,864),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
extern void _ZN9S19994C193v65Ev();
extern void _ZN9S19994C193v66Ev();
extern void _ZN9S19994C193v67Ev();
extern void _ZN9S19994C193v68Ev();
extern void _ZN9S19994C193v69Ev();
extern void _ZN9S19994C193v70Ev();
extern void _ZN9S19994C193v71Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C19__8S19994C1[] = {
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v65Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v66Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v67Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v68Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v69Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v70Ev,
  (VTBL_ENTRY)&_ZN9S19994C193v71Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C203v63Ev();
extern void _ZN9S19994C203v64Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(2072,1540),
  ABISELECT(808,596),
  ABISELECT(736,536),
  ABISELECT(-480,-360),
  ABISELECT(736,536),
  ABISELECT(2064,1536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v63Ev,
  (VTBL_ENTRY)&_ZN9S19994C203v64Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-1912,-1436),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(632,460),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-436),
  (VTBL_ENTRY)&(_ZTI9S19994C15[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-664,-500),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(624,456),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C15__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-1920,-1440),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C189S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-440),
  (VTBL_ENTRY)&(_ZTI9S19994C18[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1536),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__A1__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-536),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C18__9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C209S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-808,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C18__9S19994C209S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C209S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1540),
  (VTBL_ENTRY)&(_ZTI9S19994C20[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__9S19994C19__8S19994C1[] = {
  0,
  ABISELECT(-808,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__9S19994C19__8S19994C1[] = {
  0,
  0,
  ABISELECT(480,360),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  ABISELECT(-2064,-1536),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-536),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C183v54Ev();
extern void _ZN9S19994C183v55Ev();
extern void _ZN9S19994C183v56Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C189S19994C20__9S19994C19__8S19994C1[] = {
  ABISELECT(592,440),
  ABISELECT(592,440),
  ABISELECT(1920,1440),
  ABISELECT(-624,-456),
  ABISELECT(664,500),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v54Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v55Ev,
  (VTBL_ENTRY)&_ZN9S19994C183v56Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C153v53Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19__8S19994C1[] = {
  ABISELECT(584,436),
  ABISELECT(-632,-460),
  ABISELECT(584,436),
  ABISELECT(1912,1436),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C153v53Ev,
};
extern void _ZN9S19994C213v57Ev();
extern void _ZN9S19994C213v58Ev();
extern void _ZN9S19994C213v59Ev();
extern void _ZN9S19994C213v60Ev();
extern void _ZN9S19994C213v61Ev();
extern void _ZN9S19994C213v62Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C21__9S19994C19__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-2072,-1540),
  (VTBL_ENTRY)&(_ZTI9S19994C19[0]),
  (VTBL_ENTRY)&_ZN9S19994C213v57Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v58Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v59Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v60Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v61Ev,
  (VTBL_ENTRY)&_ZN9S19994C213v62Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C5D1Ev();
extern void _ZN8S19994C5D0Ev();
extern void _ZN8S19994C73v20Ev();
extern void _ZN8S19994C53v33Ev();
extern void _ZN8S19994C53v34Ev();
extern void _ZN8S19994C53v35Ev();
extern void _ZN8S19994C53v36Ev();
extern void _ZN8S19994C53v37Ev();
extern void _ZN8S19994C53v38Ev();
extern void _ZN8S19994C53v39Ev();
extern void _ZN8S19994C53v40Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C5__8S19994C1[] = {
  ABISELECT(256,192),
  ABISELECT(232,180),
  ABISELECT(200,156),
  ABISELECT(784,604),
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v33Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v34Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v35Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v36Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v37Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v38Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v39Ev,
  (VTBL_ENTRY)&_ZN8S19994C53v40Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
extern void _ZN8S19994C7D1Ev();
extern void _ZN8S19994C7D0Ev();
extern void _ZN8S19994C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C78S19994C5__8S19994C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19994C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19994C73v20Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C88S19994C78S19994C5__8S19994C1[] = {
  ABISELECT(128,96),
  ABISELECT(-1088,-800),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19994C7[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C118S19994C5__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(-768,-596),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(1088,800),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C2__8S19994C5__8S19994C1[] = {
  0,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__8S19994C5__8S19994C1[] = {
  ABISELECT(112,88),
  ABISELECT(768,596),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__A1__8S19994C5__8S19994C1[] = {
  0,
  0,
  ABISELECT(-784,-604),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN9S19994C123v21Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C12__A1__8S19994C5__8S19994C1[] = {
  0,
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C5__8S19994C1[] = {
  0,
  0,
  0,
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  ABISELECT(-232,-180),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C5__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-256,-192),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C1[] = {
  ABISELECT(-384,-284),
  (VTBL_ENTRY)&(_ZTI8S19994C5[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN9S19994C133v30Ev();
extern void _ZN9S19994C133v31Ev();
extern void _ZN9S19994C133v32Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C13__8S19994C1[] = {
  ABISELECT(-104,-84),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN9S19994C133v30Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v31Ev,
  (VTBL_ENTRY)&_ZN9S19994C133v32Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__9S19994C13__8S19994C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-96),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19994C13[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C23v10Ev();
extern void _ZN9S19994C143v25Ev();
extern void _ZN9S19994C143v26Ev();
extern void _ZN9S19994C143v27Ev();
extern void _ZN9S19994C143v28Ev();
extern void _ZN9S19994C143v29Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C14__8S19994C1[] = {
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C14[0]),
  (VTBL_ENTRY)&_ZN8S19994C23v10Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v25Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v26Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v27Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v28Ev,
  (VTBL_ENTRY)&_ZN9S19994C143v29Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__A1__8S19994C1[] = {
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C9__9S19994C11__A1__8S19994C1[] = {
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19994C11[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN9S19994C173v44Ev();
extern void _ZN9S19994C173v45Ev();
extern void _ZN9S19994C173v46Ev();
extern void _ZN9S19994C173v47Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C17__8S19994C1[] = {
  ABISELECT(-656,-508),
  0,
  ABISELECT(-112,-84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v44Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v45Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v46Ev,
  (VTBL_ENTRY)&_ZN9S19994C173v47Ev,
};
extern void _ZN9S19994C123v21Ev();
extern void _ZN9S19994C113v22Ev();
extern void _ZN9S19994C113v23Ev();
extern void _ZN9S19994C113v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C11__9S19994C17__8S19994C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-544,-424),
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN9S19994C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v22Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v23Ev,
  (VTBL_ENTRY)&_ZN9S19994C113v24Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C109S19994C11__9S19994C17__8S19994C1[] = {
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19994C17[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
extern void _ZN8S19994C93v13Ev();
extern void _ZN8S19994C93v14Ev();
extern void _ZN8S19994C83v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C8__A2__8S19994C1[] = {
  ABISELECT(-1328,-1000),
  ABISELECT(-2544,-1896),
  ABISELECT(-1328,-1000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C93v13Ev,
  (VTBL_ENTRY)&_ZN8S19994C93v14Ev,
  (VTBL_ENTRY)&_ZN8S19994C83v19Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19994C6__8S19994C8__A2__8S19994C1[] = {
  0,
  0,
  ABISELECT(2544,1896),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
};
extern void _ZN8S19994C63v11Ev();
extern void _ZN8S19994C63v12Ev();
extern void _ZN9S19994C103v15Ev();
extern void _ZN9S19994C103v16Ev();
extern void _ZN9S19994C103v17Ev();
extern void _ZN9S19994C103v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19994C10__8S19994C8__A2__8S19994C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1328,1000),
  (VTBL_ENTRY)&(_ZTI8S19994C8[0]),
  (VTBL_ENTRY)&_ZN8S19994C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19994C63v12Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v15Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v16Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v17Ev,
  (VTBL_ENTRY)&_ZN9S19994C103v18Ev,
};
static  VTT_ENTRY vtt_S19994C1[] = {
  {&(_ZTV8S19994C1[17]),  17,332},
  {&(_tg__ZTV8S19994C3__8S19994C1[13]),  13,20},
  {&(_tg__ZTV8S19994C5__8S19994C3__8S19994C1[33]),  33,47},
  {&(_tg__ZTV8S19994C3__8S19994C1[13]),  13,20},
  {&(_tg__ZTV9S19994C10__8S19994C3__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C3__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C3__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C3__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C109S19994C118S19994C5__A1__8S19994C3__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C12__A1__8S19994C3__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C3__8S19994C1[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C3__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C3__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C16__8S19994C1[10]),  10,20},
  {&(_tg__ZTV9S19994C139S19994C16__A1__8S19994C1[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C139S19994C16__A1__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C139S19994C16__A1__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C79S19994C16__A1__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C79S19994C16__A1__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C79S19994C16__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C79S19994C16__A1__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C79S19994C16__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C79S19994C16__A1__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C79S19994C16__A1__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C11__9S19994C16__8S19994C1[14]),  14,18},
  {&(_tg__ZTV9S19994C17__9S19994C16__8S19994C1[11]),  11,17},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C16__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C17__9S19994C16__8S19994C1[11]),  11,17},
  {&(_tg__ZTV9S19994C14__9S19994C16__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A1__9S19994C16__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C7__9S19994C16__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C6__A2__9S19994C16__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__A2__9S19994C16__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__A1__9S19994C16__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C14__A__8S19994C1[3]),  3,9},
  {&(_tg__ZTV9S19994C19__8S19994C1[8]),  8,19},
  {&(_tg__ZTV9S19994C209S19994C19__8S19994C1[8]),  8,12},
  {&(_tg__ZTV9S19994C189S19994C209S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV8S19994C6__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C159S19994C189S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C189S19994C209S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C189S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C15__9S19994C189S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV8S19994C8__9S19994C189S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C189S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C8__9S19994C209S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV8S19994C6__A1__9S19994C209S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__9S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C18__9S19994C209S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C12__9S19994C209S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C159S19994C18__9S19994C209S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C209S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C12__9S19994C19__8S19994C1[3]),  3,4},
  {&(_tg__ZTV8S19994C6__9S19994C19__8S19994C1[4]),  4,6},
  {&(_tg__ZTV8S19994C8__9S19994C19__8S19994C1[8]),  8,11},
  {&(_tg__ZTV9S19994C10__9S19994C19__8S19994C1[8]),  8,14},
  {&(_tg__ZTV9S19994C189S19994C20__9S19994C19__8S19994C1[7]),  7,12},
  {&(_tg__ZTV9S19994C159S19994C189S19994C20__9S19994C19__8S19994C1[6]),  6,9},
  {&(_tg__ZTV9S19994C21__9S19994C19__8S19994C1[8]),  8,14},
  {&(_ZTV8S19994C1[143]),  143,332},
  {&(_ZTV8S19994C1[177]),  177,332},
  {&(_ZTV8S19994C1[17]),  17,332},
  {&(_ZTV8S19994C1[215]),  215,332},
  {&(_ZTV8S19994C1[195]),  195,332},
  {&(_ZTV8S19994C1[301]),  301,332},
  {&(_ZTV8S19994C1[201]),  201,332},
  {&(_ZTV8S19994C1[224]),  224,332},
  {&(_ZTV8S19994C1[232]),  232,332},
  {&(_ZTV8S19994C1[250]),  250,332},
  {&(_ZTV8S19994C1[258]),  258,332},
  {&(_ZTV8S19994C1[43]),  43,332},
  {&(_ZTV8S19994C1[278]),  278,332},
  {&(_ZTV8S19994C1[284]),  284,332},
  {&(_ZTV8S19994C1[301]),  301,332},
  {&(_ZTV8S19994C1[59]),  59,332},
  {&(_ZTV8S19994C1[68]),  68,332},
  {&(_ZTV8S19994C1[90]),  90,332},
  {&(_ZTV8S19994C1[315]),  315,332},
  {&(_ZTV8S19994C1[111]),  111,332},
  {&(_ZTV8S19994C1[122]),  122,332},
  {&(_ZTV8S19994C1[326]),  326,332},
  {&(_tg__ZTV8S19994C5__8S19994C1[10]),  10,24},
  {&(_tg__ZTV8S19994C78S19994C5__8S19994C1[6]),  6,12},
  {&(_tg__ZTV8S19994C88S19994C78S19994C5__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C88S19994C78S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C88S19994C78S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C6__8S19994C78S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C78S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C78S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C118S19994C5__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C118S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV8S19994C6__8S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C5__8S19994C1[8]),  8,14},
  {&(_tg__ZTV8S19994C2__8S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C11__8S19994C5__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__A1__8S19994C5__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C12__A1__8S19994C5__8S19994C1[3]),  3,4},
  {&(_tg__ZTV9S19994C13__8S19994C5__8S19994C1[7]),  7,10},
  {&(_tg__ZTV9S19994C14__8S19994C5__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__A2__8S19994C5__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C13__8S19994C1[4]),  4,7},
  {&(_tg__ZTV9S19994C14__9S19994C13__8S19994C1[15]),  15,21},
  {&(_tg__ZTV9S19994C109S19994C14__9S19994C13__8S19994C1[2]),  2,8},
  {&(_tg__ZTV9S19994C14__8S19994C1[3]),  3,9},
  {&(_tg__ZTV9S19994C11__A1__8S19994C1[4]),  4,8},
  {&(_tg__ZTV8S19994C9__9S19994C11__A1__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C17__8S19994C1[7]),  7,13},
  {&(_tg__ZTV9S19994C11__9S19994C17__8S19994C1[14]),  14,18},
  {&(_tg__ZTV9S19994C17__8S19994C1[7]),  7,13},
  {&(_tg__ZTV9S19994C109S19994C11__9S19994C17__8S19994C1[2]),  2,8},
  {&(_tg__ZTV8S19994C8__A2__8S19994C1[5]),  5,8},
  {&(_tg__ZTV8S19994C6__8S19994C8__A2__8S19994C1[4]),  4,6},
  {&(_tg__ZTV9S19994C10__8S19994C8__A2__8S19994C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S19994C1[];
extern  VTBL_ENTRY _ZTV8S19994C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19994C1[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D0Ev,_ZTv0_n56_N8S19994C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C3D0Ev,_ZThn800_N8S19994C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C3D1Ev,_ZTv0_n56_N8S19994C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C3D1Ev,_ZThn800_N8S19994C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C1D0Ev,_ZTv0_n56_N8S19994C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C1D0Ev,_ZThn800_N8S19994C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19994C1D1Ev,_ZTv0_n56_N8S19994C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19994C1D1Ev,_ZThn800_N8S19994C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19994C1 = {  "S19994C1", // class name
  bases_S19994C1, 52,
  &(vtc_S19994C1[0]), // expected_vtbl_contents
  &(vtt_S19994C1[0]), // expected_vtt_contents
  ABISELECT(2576,1908), // object size
  NSPAIRA(_ZTI8S19994C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19994C1),332, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19994C1),115, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C2_nt  {
  short s20291c2f0:6;
  long s20291c2f1;
  short s20291c2f2:4;
  __tsi64 s20291c2f3[13];
  void *s20291c2f4;
  virtual void  v6(); // _ZN11S20291C2_nt2v6Ev
  ~S20291C2_nt(); // tgen
  S20291C2_nt(); // tgen
};
//SIG(-1 S20291C2_nt) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S20291C2_nt ::v6(){vfunc_called(this, "_ZN11S20291C2_nt2v6Ev");}
S20291C2_nt ::~S20291C2_nt(){ note_dtor("S20291C2_nt", this);} // tgen
S20291C2_nt ::S20291C2_nt(){ note_ctor("S20291C2_nt", this);} // tgen

//skip512 S20291C2_nt

#else // __cplusplus

extern void _ZN11S20291C2_ntC1Ev();
extern void _ZN11S20291C2_ntD1Ev();
Name_Map name_map_S20291C2_nt[] = {
  NSPAIR(_ZN11S20291C2_ntC1Ev),
  NSPAIR(_ZN11S20291C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
VTBL_ENTRY *P__ZTI11S20291C2_nt = _ZTI11S20291C2_nt; 
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
Class_Descriptor cd_S20291C2_nt = {  "S20291C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI11S20291C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C2_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  S20291C3_nt  : virtual S20291C2_nt {
  void *s20291c3f0;
  ::S20291C2_nt s20291c3f1;
  int s20291c3f2:3;
  ~S20291C3_nt(); // tgen
  S20291C3_nt(); // tgen
};
//SIG(-1 S20291C3_nt) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S20291C3_nt ::~S20291C3_nt(){ note_dtor("S20291C3_nt", this);} // tgen
S20291C3_nt ::S20291C3_nt(){ note_ctor("S20291C3_nt", this);} // tgen

//skip512 S20291C3_nt

#else // __cplusplus

extern void _ZN11S20291C3_ntC1Ev();
extern void _ZN11S20291C3_ntD1Ev();
Name_Map name_map_S20291C3_nt[] = {
  NSPAIR(_ZN11S20291C3_ntC1Ev),
  NSPAIR(_ZN11S20291C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
static Base_Class bases_S20291C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    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 _ZTI11S20291C3_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C3_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV11S20291C3_nt[];
static  VTT_ENTRY vtt_S20291C3_nt[] = {
  {&(_ZTV11S20291C3_nt[3]),  3,7},
  {&(_ZTV11S20291C3_nt[6]),  6,7},
};
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
VTBL_ENTRY *P__ZTI11S20291C3_nt = _ZTI11S20291C3_nt; 
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
Class_Descriptor cd_S20291C3_nt = {  "S20291C3_nt", // class name
  bases_S20291C3_nt, 1,
  &(vtc_S20291C3_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C3_nt[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI11S20291C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20291C3_nt),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C3_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  S20291C7_nt  {
  __tsi64 s20291c7f0;
  long double s20291c7f1;
  void *s20291c7f2;
  char s20291c7f3;
  ::S20291C2_nt s20291c7f4;
  void *s20291c7f5[2];
  __tsi64 s20291c7f6[8];
  short s20291c7f7;
  void *s20291c7f8;
  __tsi64 s20291c7f9:64;
  virtual void  v7(); // _ZN11S20291C7_nt2v7Ev
  ~S20291C7_nt(); // tgen
  S20291C7_nt(); // tgen
};
//SIG(-1 S20291C7_nt) 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  S20291C7_nt ::v7(){vfunc_called(this, "_ZN11S20291C7_nt2v7Ev");}
S20291C7_nt ::~S20291C7_nt(){ note_dtor("S20291C7_nt", this);} // tgen
S20291C7_nt ::S20291C7_nt(){ note_ctor("S20291C7_nt", this);} // tgen

//skip512 S20291C7_nt

#else // __cplusplus

extern void _ZN11S20291C7_ntC1Ev();
extern void _ZN11S20291C7_ntD1Ev();
Name_Map name_map_S20291C7_nt[] = {
  NSPAIR(_ZN11S20291C7_ntC1Ev),
  NSPAIR(_ZN11S20291C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
VTBL_ENTRY *P__ZTI11S20291C7_nt = _ZTI11S20291C7_nt; 
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
Class_Descriptor cd_S20291C7_nt = {  "S20291C7_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI11S20291C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C7_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  S20291C8_nt  {
  int s20291c8f0[2];
  __tsi64 s20291c8f1[2];
  ::S20291C2_nt s20291c8f2[3];
  virtual void  v8(); // _ZN11S20291C8_nt2v8Ev
  virtual void  v9(); // _ZN11S20291C8_nt2v9Ev
  virtual void  v10(); // _ZN11S20291C8_nt3v10Ev
  ~S20291C8_nt(); // tgen
  S20291C8_nt(); // tgen
};
//SIG(-1 S20291C8_nt) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S20291C8_nt ::v8(){vfunc_called(this, "_ZN11S20291C8_nt2v8Ev");}
void  S20291C8_nt ::v9(){vfunc_called(this, "_ZN11S20291C8_nt2v9Ev");}
void  S20291C8_nt ::v10(){vfunc_called(this, "_ZN11S20291C8_nt3v10Ev");}
S20291C8_nt ::~S20291C8_nt(){ note_dtor("S20291C8_nt", this);} // tgen
S20291C8_nt ::S20291C8_nt(){ note_ctor("S20291C8_nt", this);} // tgen

//skip512 S20291C8_nt

#else // __cplusplus

extern void _ZN11S20291C8_ntC1Ev();
extern void _ZN11S20291C8_ntD1Ev();
Name_Map name_map_S20291C8_nt[] = {
  NSPAIR(_ZN11S20291C8_ntC1Ev),
  NSPAIR(_ZN11S20291C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
VTBL_ENTRY *P__ZTI11S20291C8_nt = _ZTI11S20291C8_nt; 
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
Class_Descriptor cd_S20291C8_nt = {  "S20291C8_nt", // class name
  0,0,//no base classes
  &(vtc_S20291C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI11S20291C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20291C8_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C9_nt  : S20291C2_nt , virtual S20291C8_nt , virtual S20291C3_nt , virtual S20291C7_nt {
  ::S20291C7_nt s20291c9f0;
  short s20291c9f1;
  int s20291c9f2[2];
  ~S20291C9_nt(); // tgen
  S20291C9_nt(); // tgen
};
//SIG(-1 S20291C9_nt) 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]}


S20291C9_nt ::~S20291C9_nt(){ note_dtor("S20291C9_nt", this);} // tgen
S20291C9_nt ::S20291C9_nt(){ note_ctor("S20291C9_nt", this);} // tgen

//skip512 S20291C9_nt

#else // __cplusplus

extern void _ZN11S20291C9_ntC1Ev();
extern void _ZN11S20291C9_ntD1Ev();
Name_Map name_map_S20291C9_nt[] = {
  NSPAIR(_ZN11S20291C9_ntC1Ev),
  NSPAIR(_ZN11S20291C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
static Base_Class bases_S20291C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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_S20291C7_nt,    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 _ZTI11S20291C9_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C9_nt[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV11S20291C9_nt[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C9_nt[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C9_nt[] = {
  {&(_ZTV11S20291C9_nt[6]),  6,26},
  {&(_ZTV11S20291C9_nt[12]),  12,26},
  {&(_ZTV11S20291C9_nt[18]),  18,26},
  {&(_ZTV11S20291C9_nt[21]),  21,26},
  {&(_ZTV11S20291C9_nt[25]),  25,26},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C9_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
VTBL_ENTRY *P__ZTI11S20291C9_nt = _ZTI11S20291C9_nt; 
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
Class_Descriptor cd_S20291C9_nt = {  "S20291C9_nt", // class name
  bases_S20291C9_nt, 5,
  &(vtc_S20291C9_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C9_nt[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI11S20291C9_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S20291C9_nt),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C9_nt),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  S20291C6_nt  : S20291C7_nt , S20291C8_nt , S20291C2_nt {
  __tsi64 s20291c6f0[2];
  void *s20291c6f1[8];
  ::S20291C9_nt s20291c6f2;
  void *s20291c6f3;
  int s20291c6f4;
  ::S20291C9_nt s20291c6f5;
  int s20291c6f6;
  virtual  ~S20291C6_nt(); // _ZN11S20291C6_ntD1Ev
  virtual void  v11(); // _ZN11S20291C6_nt3v11Ev
  S20291C6_nt(); // tgen
};
//SIG(-1 S20291C6_nt) 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}


 S20291C6_nt ::~S20291C6_nt(){ note_dtor("S20291C6_nt", this);}
void  S20291C6_nt ::v11(){vfunc_called(this, "_ZN11S20291C6_nt3v11Ev");}
S20291C6_nt ::S20291C6_nt(){ note_ctor("S20291C6_nt", this);} // tgen

//skip512 S20291C6_nt

#else // __cplusplus

extern void _ZN11S20291C6_ntC1Ev();
extern void _ZN11S20291C6_ntD1Ev();
Name_Map name_map_S20291C6_nt[] = {
  NSPAIR(_ZN11S20291C6_ntC1Ev),
  NSPAIR(_ZN11S20291C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
static Base_Class bases_S20291C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20291C8_nt,    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_S20291C2_nt,    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 _ZTI11S20291C6_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C6_ntD1Ev();
extern void _ZN11S20291C6_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI11S20291C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
VTBL_ENTRY *P__ZTI11S20291C6_nt = _ZTI11S20291C6_nt; 
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
Class_Descriptor cd_S20291C6_nt = {  "S20291C6_nt", // class name
  bases_S20291C6_nt, 3,
  &(vtc_S20291C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI11S20291C6_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S20291C6_nt),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  S20291C11_nt  : S20291C7_nt {
  ::S20291C3_nt s20291c11f0;
  int s20291c11f1;
  void *s20291c11f2;
  int s20291c11f3;
  virtual  ~S20291C11_nt(); // _ZN12S20291C11_ntD1Ev
  virtual void  v13(); // _ZN12S20291C11_nt3v13Ev
  S20291C11_nt(); // tgen
};
//SIG(-1 S20291C11_nt) 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}


 S20291C11_nt ::~S20291C11_nt(){ note_dtor("S20291C11_nt", this);}
void  S20291C11_nt ::v13(){vfunc_called(this, "_ZN12S20291C11_nt3v13Ev");}
S20291C11_nt ::S20291C11_nt(){ note_ctor("S20291C11_nt", this);} // tgen

//skip512 S20291C11_nt

#else // __cplusplus

extern void _ZN12S20291C11_ntC1Ev();
extern void _ZN12S20291C11_ntD1Ev();
Name_Map name_map_S20291C11_nt[] = {
  NSPAIR(_ZN12S20291C11_ntC1Ev),
  NSPAIR(_ZN12S20291C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
static Base_Class bases_S20291C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI12S20291C11_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C11_ntD1Ev();
extern void _ZN12S20291C11_ntD0Ev();
extern void _ZN12S20291C11_nt3v13Ev();
static  VTBL_ENTRY vtc_S20291C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
VTBL_ENTRY *P__ZTI12S20291C11_nt = _ZTI12S20291C11_nt; 
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
Class_Descriptor cd_S20291C11_nt = {  "S20291C11_nt", // class name
  bases_S20291C11_nt, 1,
  &(vtc_S20291C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI12S20291C11_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV12S20291C11_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  S20291C10_nt  : virtual S20291C7_nt , virtual S20291C6_nt , virtual S20291C2_nt , virtual S20291C3_nt {
  __tsi64 s20291c10f0:44;
  void *s20291c10f1;
  int s20291c10f2;
  ::S20291C9_nt s20291c10f3;
  __tsi64 s20291c10f4[2];
  int s20291c10f5[3];
  ::S20291C6_nt s20291c10f6;
  char s20291c10f7:7;
  ::S20291C11_nt s20291c10f8;
  ~S20291C10_nt(); // tgen
  S20291C10_nt(); // tgen
};
//SIG(-1 S20291C10_nt) 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}}


S20291C10_nt ::~S20291C10_nt(){ note_dtor("S20291C10_nt", this);} // tgen
S20291C10_nt ::S20291C10_nt(){ note_ctor("S20291C10_nt", this);} // tgen

//skip512 S20291C10_nt

#else // __cplusplus

extern void _ZN12S20291C10_ntC1Ev();
extern void _ZN12S20291C10_ntD1Ev();
Name_Map name_map_S20291C10_nt[] = {
  NSPAIR(_ZN12S20291C10_ntC1Ev),
  NSPAIR(_ZN12S20291C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
static Base_Class bases_S20291C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    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_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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 _ZTI12S20291C10_nt[];
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn6704_N12S20291C10_ntD1Ev,_ZThn5492_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn6704_N12S20291C10_ntD0Ev,_ZThn5492_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C10_nt[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20291C10_nt[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C10_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C10_nt[] = {
  {&(_ZTV12S20291C10_nt[6]),  6,40},
  {&(_ZTV12S20291C10_nt[11]),  11,40},
  {&(_ZTV12S20291C10_nt[21]),  21,40},
  {&(_ZTV12S20291C10_nt[27]),  27,40},
  {&(_ZTV12S20291C10_nt[32]),  32,40},
  {&(_ZTV12S20291C10_nt[36]),  36,40},
  {&(_ZTV12S20291C10_nt[40]),  40,40},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C10_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
VTBL_ENTRY *P__ZTI12S20291C10_nt = _ZTI12S20291C10_nt; 
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N12S20291C10_ntD0Ev,_ZThn5492_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N12S20291C10_ntD1Ev,_ZThn5492_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C10_nt = {  "S20291C10_nt", // class name
  bases_S20291C10_nt, 7,
  &(vtc_S20291C10_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C10_nt[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI12S20291C10_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S20291C10_nt),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C10_nt),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C5_nt  : virtual S20291C6_nt , virtual S20291C2_nt , virtual S20291C3_nt , S20291C9_nt , S20291C10_nt {
  ::S20291C6_nt s20291c5f0;
  __tsi64 s20291c5f1;
  char s20291c5f2:7;
  virtual void  v12(); // _ZN11S20291C5_nt3v12Ev
  ~S20291C5_nt(); // tgen
  S20291C5_nt(); // tgen
};
//SIG(-1 S20291C5_nt) 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  S20291C5_nt ::v12(){vfunc_called(this, "_ZN11S20291C5_nt3v12Ev");}
S20291C5_nt ::~S20291C5_nt(){ note_dtor("S20291C5_nt", this);} // tgen
S20291C5_nt ::S20291C5_nt(){ note_ctor("S20291C5_nt", this);} // tgen

//skip512 S20291C5_nt

#else // __cplusplus

extern void _ZN11S20291C5_ntC1Ev();
extern void _ZN11S20291C5_ntD1Ev();
Name_Map name_map_S20291C5_nt[] = {
  NSPAIR(_ZN11S20291C5_ntC1Ev),
  NSPAIR(_ZN11S20291C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static Base_Class bases_S20291C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    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_S20291C7_nt,    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_S20291C9_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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C10_nt,    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 _ZTI11S20291C5_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY vtc_S20291C5_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV11S20291C5_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__11S20291C5_nt[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C5_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C5_nt[] = {
  {&(_ZTV11S20291C5_nt[7]),  7,59},
  {&(_tg__ZTV11S20291C9_nt__11S20291C5_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__11S20291C5_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__11S20291C5_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__11S20291C5_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__11S20291C5_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt__11S20291C5_nt[3]),  3,3},
  {&(_ZTV11S20291C5_nt[28]),  28,59},
  {&(_ZTV11S20291C5_nt[34]),  34,59},
  {&(_ZTV11S20291C5_nt[39]),  39,59},
  {&(_ZTV11S20291C5_nt[43]),  43,59},
  {&(_ZTV11S20291C5_nt[47]),  47,59},
  {&(_ZTV11S20291C5_nt[52]),  52,59},
  {&(_ZTV11S20291C5_nt[58]),  58,59},
  {&(_ZTV11S20291C5_nt[17]),  17,59},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__11S20291C5_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
VTBL_ENTRY *P__ZTI11S20291C5_nt = _ZTI11S20291C5_nt; 
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C5_nt = {  "S20291C5_nt", // class name
  bases_S20291C5_nt, 11,
  &(vtc_S20291C5_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C5_nt[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI11S20291C5_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S20291C5_nt),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20291C5_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C13_nt  : virtual S20291C7_nt , S20291C8_nt , virtual S20291C5_nt {
  char s20291c13f0:8;
  int s20291c13f1;
  ~S20291C13_nt(); // tgen
  S20291C13_nt(); // tgen
};
//SIG(-1 S20291C13_nt) 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}


S20291C13_nt ::~S20291C13_nt(){ note_dtor("S20291C13_nt", this);} // tgen
S20291C13_nt ::S20291C13_nt(){ note_ctor("S20291C13_nt", this);} // tgen

//skip512 S20291C13_nt

#else // __cplusplus

extern void _ZN12S20291C13_ntC1Ev();
extern void _ZN12S20291C13_ntD1Ev();
Name_Map name_map_S20291C13_nt[] = {
  NSPAIR(_ZN12S20291C13_ntC1Ev),
  NSPAIR(_ZN12S20291C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static Base_Class bases_S20291C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    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_S20291C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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_S20291C2_nt,    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_S20291C8_nt,    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_S20291C9_nt,    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_S20291C10_nt,    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_S20291C5_nt,    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 _ZTI12S20291C13_nt[];
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn784_N12S20291C13_ntD1Ev,_ZThn652_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn784_N12S20291C13_ntD0Ev,_ZThn652_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11792_N12S20291C13_ntD1Ev,_ZThn9688_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11792_N12S20291C13_ntD0Ev,_ZThn9688_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C13_nt[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  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)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV12S20291C13_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C13_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C13_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C13_nt[] = {
  {&(_ZTV12S20291C13_nt[8]),  8,75},
  {&(_ZTV12S20291C13_nt[16]),  16,75},
  {&(_ZTV12S20291C13_nt[27]),  27,75},
  {&(_ZTV12S20291C13_nt[48]),  48,75},
  {&(_ZTV12S20291C13_nt[54]),  54,75},
  {&(_ZTV12S20291C13_nt[59]),  59,75},
  {&(_ZTV12S20291C13_nt[63]),  63,75},
  {&(_ZTV12S20291C13_nt[67]),  67,75},
  {&(_ZTV12S20291C13_nt[72]),  72,75},
  {&(_ZTV12S20291C13_nt[37]),  37,75},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C13_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C13_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C13_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C13_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C13_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C13_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
VTBL_ENTRY *P__ZTI12S20291C13_nt = _ZTI12S20291C13_nt; 
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N12S20291C13_ntD0Ev,_ZThn9688_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N12S20291C13_ntD1Ev,_ZThn9688_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N12S20291C13_ntD0Ev,_ZThn652_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N12S20291C13_ntD1Ev,_ZThn652_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C13_nt = {  "S20291C13_nt", // class name
  bases_S20291C13_nt, 13,
  &(vtc_S20291C13_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C13_nt[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI12S20291C13_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV12S20291C13_nt),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C13_nt),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C12_nt  : S20291C2_nt , virtual S20291C7_nt , virtual S20291C13_nt , S20291C9_nt , S20291C11_nt {
  int s20291c12f0;
  ::S20291C9_nt s20291c12f1;
  int s20291c12f2;
  short s20291c12f3;
  __tsi64 s20291c12f4:8;
  int s20291c12f5;
  virtual  ~S20291C12_nt(); // _ZN12S20291C12_ntD2Ev
  virtual void  v14(); // _ZN12S20291C12_nt3v14Ev
  S20291C12_nt(); // tgen
};
//SIG(-1 S20291C12_nt) 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}


 S20291C12_nt ::~S20291C12_nt(){ note_dtor("S20291C12_nt", this);}
void  S20291C12_nt ::v14(){vfunc_called(this, "_ZN12S20291C12_nt3v14Ev");}
S20291C12_nt ::S20291C12_nt(){ note_ctor("S20291C12_nt", this);} // tgen

//skip512 S20291C12_nt

#else // __cplusplus

extern void _ZN12S20291C12_ntC1Ev();
extern void _ZN12S20291C12_ntD2Ev();
Name_Map name_map_S20291C12_nt[] = {
  NSPAIR(_ZN12S20291C12_ntC1Ev),
  NSPAIR(_ZN12S20291C12_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
static Base_Class bases_S20291C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C7_nt,    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_S20291C8_nt,    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_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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_S20291C2_nt,    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_S20291C8_nt,    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_S20291C9_nt,    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_S20291C10_nt,    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_S20291C5_nt,    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_S20291C13_nt,    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_S20291C2_nt,    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_S20291C9_nt,    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_S20291C7_nt,    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_S20291C11_nt,    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 _ZTI12S20291C12_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZThn608_N12S20291C12_ntD1Ev,_ZThn504_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn608_N12S20291C12_ntD0Ev,_ZThn504_N12S20291C12_ntD0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn3112_N12S20291C12_ntD1Ev,_ZThn2564_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn3112_N12S20291C12_ntD0Ev,_ZThn2564_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn3584_N12S20291C12_ntD1Ev,_ZThn2972_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn3584_N12S20291C12_ntD0Ev,_ZThn2972_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn14592_N12S20291C12_ntD1Ev,_ZThn12008_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn14592_N12S20291C12_ntD0Ev,_ZThn12008_N12S20291C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY vtc_S20291C12_nt[] = {
  ABISELECT(19024,15664),
  ABISELECT(18856,15528),
  ABISELECT(18712,15404),
  ABISELECT(14592,12008),
  ABISELECT(3584,2972),
  ABISELECT(3112,2564),
  ABISELECT(2816,2320),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N12S20291C12_ntD1Ev,_ZThn504_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N12S20291C12_ntD0Ev,_ZThn504_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  0,
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  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)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
  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)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-4048,-3352),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-14592,-12008),
  0,
  ABISELECT(-14592,-12008),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-14888,-12252),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-15352,-12652),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-18856,-15528),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-15664),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV12S20291C12_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt[] = {
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-15540),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  ABISELECT(-18568,-15280),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__A1__12S20291C12_nt[] = {
  0,
  ABISELECT(-2672,-2196),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn472_N12S20291C13_ntD1Ev,_ZThn408_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn472_N12S20291C13_ntD0Ev,_ZThn408_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[] = {
  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)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11480_N12S20291C13_ntD1Ev,_ZThn9444_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11480_N12S20291C13_ntD0Ev,_ZThn9444_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15600,-12840),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15744,-12964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-13100),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C12_nt[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C12_nt[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C12_nt[] = {
  {&(_ZTV12S20291C12_nt[9]),  9,105},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__A1__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__A1__12S20291C12_nt[3]),  3,4},
  {&(_ZTV12S20291C12_nt[29]),  29,105},
  {&(_ZTV12S20291C12_nt[42]),  42,105},
  {&(_ZTV12S20291C12_nt[57]),  57,105},
  {&(_ZTV12S20291C12_nt[78]),  78,105},
  {&(_ZTV12S20291C12_nt[84]),  84,105},
  {&(_ZTV12S20291C12_nt[89]),  89,105},
  {&(_ZTV12S20291C12_nt[93]),  93,105},
  {&(_ZTV12S20291C12_nt[97]),  97,105},
  {&(_ZTV12S20291C12_nt[102]),  102,105},
  {&(_ZTV12S20291C12_nt[67]),  67,105},
  {&(_ZTV12S20291C12_nt[19]),  19,105},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__12S20291C12_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C12_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C12_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C12_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C12_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C12_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
VTBL_ENTRY *P__ZTI12S20291C12_nt = _ZTI12S20291C12_nt; 
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N12S20291C13_ntD0Ev,_ZThn9444_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N12S20291C13_ntD1Ev,_ZThn9444_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S20291C13_ntD0Ev,_ZThn408_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S20291C13_ntD1Ev,_ZThn408_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N12S20291C12_ntD0Ev,_ZThn12008_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N12S20291C12_ntD1Ev,_ZThn12008_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N12S20291C12_ntD0Ev,_ZThn2972_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N12S20291C12_ntD1Ev,_ZThn2972_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N12S20291C12_ntD0Ev,_ZThn2564_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N12S20291C12_ntD1Ev,_ZThn2564_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C12_nt = {  "S20291C12_nt", // class name
  bases_S20291C12_nt, 19,
  &(vtc_S20291C12_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C12_nt[0]), // expected_vtt_contents
  ABISELECT(19488,16064), // object size
  NSPAIRA(_ZTI12S20291C12_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV12S20291C12_nt),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C12_nt),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C14_nt  {
};
//SIG(-1 S20291C14_nt) C1{}



//skip512 S20291C14_nt

#else // __cplusplus

Class_Descriptor cd_S20291C14_nt = {  "S20291C14_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  S20291C4  : virtual S20291C5_nt , virtual S20291C12_nt , S20291C3_nt , S20291C13_nt {
  char s20291c4f0;
  ::S20291C14_nt s20291c4f1;
  void *s20291c4f2;
  ~S20291C4(); // tgen
  S20291C4(); // tgen
};
//SIG(-1 S20291C4) C1{ VBC2{ VBC3{ BC4{ v1 FL FD Fp Fc FC5{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC6{ v2 v3 v4 Fi[2] FL[2] FC5[3]} BC5 vd v6 FL[2] Fp[8] FC7{ BC5 VBC6 VBC8{ VBC5 Fp FC5 Fi:3} VBC4 FC4 Fs Fi[2]} Fp Fi FC7 Fi} VBC5 VBC8 BC7 BC9{ VBC4 VBC3 VBC5 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC3 Fc:7 FC10{ BC4 vd v8 FC8 Fi Fp Fi}} v7 FC3 FL Fc:7} VBC11{ BC5 VBC4 VBC12{ VBC4 BC6 VBC2 Fc:8 Fi} BC7 BC10 vd v9 Fi FC7 Fi Fs FL:8 Fi} BC8 BC12 Fc FC13{} Fp}


S20291C4 ::~S20291C4(){ note_dtor("S20291C4", this);} // tgen
S20291C4 ::S20291C4(){ note_ctor("S20291C4", this);} // tgen

static void Test_S20291C4()
{
  extern Class_Descriptor cd_S20291C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1261,4155)];
    init_test(&cd_S20291C4, buf);
    S20291C4 *dp, &lv = *(dp=new (buf) S20291C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20160,16616), "sizeof(S20291C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20291C4)");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*), ABISELECT(11664,9588), "S20291C4");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*), ABISELECT(11960,9832), "S20291C4");
    check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*), ABISELECT(12424,10232), "S20291C4");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*), ABISELECT(11664,9588), "S20291C4");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(11664,9588), "S20291C4");
    /*is_ambiguous_... S20291C5_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(15784,12984), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(15784,12984), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(15928,13108), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(15928,13108), "S20291C4");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(16096,13244), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(16096,13244), "S20291C4");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C12_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(16560,13644), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(16560,13644), "S20291C4");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*), ABISELECT(1120,932), "S20291C4");
    check_base_class_offset(lv, (S20291C5_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(656,552), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C12_nt*), ABISELECT(16864,13888), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(19680,16208), "S20291C4");
    check_base_class_offset(lv, (S20291C13_nt*)(S20291C12_nt*), ABISELECT(19680,16208), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(17008,14012), "S20291C4");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C12_nt*), ABISELECT(17008,14012), "S20291C4");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C11_nt*)(S20291C12_nt*), ABISELECT(17472,14392), "S20291C4");
    check_base_class_offset(lv, (S20291C11_nt*)(S20291C12_nt*), ABISELECT(17472,14392), "S20291C4");
    check_base_class_offset(lv, (S20291C12_nt*), ABISELECT(16864,13888), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*), 0, "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(168,136), "S20291C4");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C13_nt*), ABISELECT(168,136), "S20291C4");
    check_field_offset(lv, s20291c4f0, ABISELECT(640,544), "S20291C4.s20291c4f0");
    check_field_offset(lv, s20291c4f1, ABISELECT(641,545), "S20291C4.s20291c4f1");
    check_field_offset(lv, s20291c4f2, ABISELECT(648,548), "S20291C4.s20291c4f2");
    test_class_info(&lv, &cd_S20291C4);
    dp->~S20291C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20291C4(Test_S20291C4, "S20291C4", ABISELECT(20160,16616));

#else // __cplusplus

extern void _ZN8S20291C4C1Ev();
extern void _ZN8S20291C4D1Ev();
Name_Map name_map_S20291C4[] = {
  NSPAIR(_ZN8S20291C4C1Ev),
  NSPAIR(_ZN8S20291C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
extern Class_Descriptor cd_S20291C12_nt;
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
static Base_Class bases_S20291C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C7_nt,    ABISELECT(11664,9588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20291C8_nt,    ABISELECT(11960,9832), //bcp->offset
    60, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(12424,10232), //bcp->offset
    65, //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(11664,9588), //bcp->offset
    47, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(15784,12984), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(15928,13108), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(656,552), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    ABISELECT(16096,13244), //bcp->offset
    75, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(16560,13644), //bcp->offset
    83, //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
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(656,552), //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
    11, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(1120,932), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(656,552), //bcp->offset
    25, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    ABISELECT(16864,13888), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    ABISELECT(19680,16208), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C13_nt,    ABISELECT(19680,16208), //bcp->offset
    118, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(17008,14012), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C9_nt,    ABISELECT(17008,14012), //bcp->offset
    105, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C7_nt,    ABISELECT(17472,14392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C11_nt,    ABISELECT(17472,14392), //bcp->offset
    112, //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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C12_nt,    ABISELECT(16864,13888), //bcp->offset
    87, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C3_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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C8_nt,    ABISELECT(168,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
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20291C13_nt,    ABISELECT(168,136), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20291C4[];
extern void _ZN8S20291C4D1Ev();
extern void _ZN8S20291C4D0Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn16864_N8S20291C4D1Ev,_ZThn13888_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn16864_N8S20291C4D0Ev,_ZThn13888_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn19680_N8S20291C4D1Ev,_ZThn16208_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn19680_N8S20291C4D0Ev,_ZThn16208_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20291C4[] = {
  ABISELECT(19680,16208),
  ABISELECT(16864,13888),
  ABISELECT(16560,13644),
  ABISELECT(16096,13244),
  ABISELECT(15928,13108),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(15784,12984),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN8S20291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C4D0Ev,
  ABISELECT(15928,13108),
  ABISELECT(15760,12972),
  ABISELECT(15616,12848),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16392,13508),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev),
  ABISELECT(-656,-552),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-656,-552),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-1120,-932),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11664,-9588),
  0,
  ABISELECT(-11664,-9588),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-11960,-9832),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-12424,-10232),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15928,-13108),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  0,
  0,
  0,
  ABISELECT(-16096,-13244),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-16560,-13644),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-16864,-13888),
  0,
  ABISELECT(-768,-644),
  ABISELECT(-936,-780),
  ABISELECT(-1080,-904),
  ABISELECT(-5200,-4300),
  ABISELECT(-16208,-13336),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-16864,-13888),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  ABISELECT(-17008,-14012),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-17472,-14392),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  ABISELECT(-19680,-16208),
  0,
  0,
  0,
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  ABISELECT(-19680,-16208),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20291C4[];
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__A__8S20291C4[] = {
  ABISELECT(15784,12984),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(15928,13108),
  ABISELECT(15760,12972),
  ABISELECT(15616,12848),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16392,13508),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-16392,-13508),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-488,-416),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-488,-416),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11496,-9452),
  0,
  ABISELECT(-11496,-9452),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-11792,-9696),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-12256,-10096),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__A__8S20291C4[] = {
  0,
  ABISELECT(-15616,-12848),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15760,-12972),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__A__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15928,-13108),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__A__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-952,-796),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C4[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C4[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C4[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-768,-644),
  ABISELECT(-936,-780),
  ABISELECT(-1080,-904),
  ABISELECT(-5200,-4300),
  ABISELECT(-16208,-13336),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(912,768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  ABISELECT(1224,1028),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[] = {
  0,
  ABISELECT(448,368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C4[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-2816,-2320),
  0,
  0,
  0,
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(16208,13336),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(16208,13336),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(5200,4300),
  0,
  ABISELECT(5200,4300),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(4904,4056),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C4[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(936,780),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(768,644),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(15744,12956),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C4[] = {
  ABISELECT(-448,-368),
  ABISELECT(-1224,-1028),
  ABISELECT(-1080,-904),
  ABISELECT(-912,-768),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C4[] = {
  ABISELECT(-3584,-2964),
  ABISELECT(-3752,-3100),
  ABISELECT(-3896,-3224),
  ABISELECT(-8016,-6620),
  ABISELECT(-19024,-15656),
  ABISELECT(-3120,-2564),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C4[] = {
  0,
  ABISELECT(3120,2564),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(19024,15656),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(19024,15656),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8016,6620),
  0,
  ABISELECT(8016,6620),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(7720,6376),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(7256,5976),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C4[] = {
  0,
  ABISELECT(3896,3224),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(-144,-124),
  ABISELECT(3752,3100),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C4[] = {
  0,
  0,
  0,
  ABISELECT(3584,2964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C4[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(18560,15276),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
static  VTT_ENTRY vtt_S20291C4[] = {
  {&(_ZTV8S20291C4[10]),  10,135},
  {&(_tg__ZTV11S20291C3_nt__A__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__A__8S20291C4[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__A__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__A__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__A__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__A__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__A__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__A__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__A__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__A__8S20291C4[6]),  6,8},
  {&(_ZTV8S20291C4[35]),  35,135},
  {&(_ZTV8S20291C4[56]),  56,135},
  {&(_ZTV8S20291C4[62]),  62,135},
  {&(_ZTV8S20291C4[67]),  67,135},
  {&(_ZTV8S20291C4[71]),  71,135},
  {&(_ZTV8S20291C4[75]),  75,135},
  {&(_ZTV8S20291C4[80]),  80,135},
  {&(_ZTV8S20291C4[86]),  86,135},
  {&(_ZTV8S20291C4[45]),  45,135},
  {&(_ZTV8S20291C4[101]),  101,135},
  {&(_ZTV8S20291C4[130]),  130,135},
  {&(_ZTV8S20291C4[111]),  111,135},
  {&(_ZTV8S20291C4[114]),  114,135},
  {&(_ZTV8S20291C4[20]),  20,135},
  {&(_tg__ZTV11S20291C5_nt__8S20291C4[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C4[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C3_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C12_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C4[12]),  12,17},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C4[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C4[6]),  6,7},
  {&(_tg__ZTV12S20291C13_nt__8S20291C4[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C4[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C4[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C4[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C4[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C4[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C4[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C4[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C4[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20291C4[];
extern  VTBL_ENTRY _ZTV8S20291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C4[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20291C4D0Ev,_ZThn16208_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20291C4D1Ev,_ZThn16208_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20291C4D0Ev,_ZThn13888_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20291C4D1Ev,_ZThn13888_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C4 = {  "S20291C4", // class name
  bases_S20291C4, 23,
  &(vtc_S20291C4[0]), // expected_vtbl_contents
  &(vtt_S20291C4[0]), // expected_vtt_contents
  ABISELECT(20160,16616), // object size
  NSPAIRA(_ZTI8S20291C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20291C4),135, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20291C4),77, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C15_nt  : S20291C9_nt , S20291C10_nt {
  int s20291c15f0:13;
  __tsi64 s20291c15f1;
  int s20291c15f2;
  void *s20291c15f3[2];
  __tsi64 s20291c15f4;
  ::S20291C8_nt s20291c15f5;
  virtual  ~S20291C15_nt(); // _ZN12S20291C15_ntD2Ev
  virtual void  v15(); // _ZN12S20291C15_nt3v15Ev
  virtual void  v16(); // _ZN12S20291C15_nt3v16Ev
  S20291C15_nt(); // tgen
};
//SIG(-1 S20291C15_nt) 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}


 S20291C15_nt ::~S20291C15_nt(){ note_dtor("S20291C15_nt", this);}
void  S20291C15_nt ::v15(){vfunc_called(this, "_ZN12S20291C15_nt3v15Ev");}
void  S20291C15_nt ::v16(){vfunc_called(this, "_ZN12S20291C15_nt3v16Ev");}
S20291C15_nt ::S20291C15_nt(){ note_ctor("S20291C15_nt", this);} // tgen

//skip512 S20291C15_nt

#else // __cplusplus

extern void _ZN12S20291C15_ntC1Ev();
extern void _ZN12S20291C15_ntD2Ev();
Name_Map name_map_S20291C15_nt[] = {
  NSPAIR(_ZN12S20291C15_ntC1Ev),
  NSPAIR(_ZN12S20291C15_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
static Base_Class bases_S20291C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C3_nt,    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_S20291C7_nt,    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_S20291C9_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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C10_nt,    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 _ZTI12S20291C15_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C15_ntD1Ev();
extern void _ZN12S20291C15_ntD0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev)();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn8464_N12S20291C15_ntD1Ev,_ZThn6964_N12S20291C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev)();
extern void ABISELECT(_ZThn8464_N12S20291C15_ntD0Ev,_ZThn6964_N12S20291C15_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C15_nt[] = {
  ABISELECT(8464,6964),
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8464,-6964),
  0,
  ABISELECT(-8464,-6964),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-8760,-7208),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-9224,-7608),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV12S20291C15_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C15_nt[] = {
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-7696,-6340),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn8000_N12S20291C10_ntD1Ev,_ZThn6584_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn8000_N12S20291C10_ntD0Ev,_ZThn6584_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8000,-6584),
  0,
  ABISELECT(-8000,-6584),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(-8296,-6828),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(-8760,-7228),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-7544,-6216),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  ABISELECT(-7376,-6080),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C15_nt[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C15_nt[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C15_nt[] = {
  {&(_ZTV12S20291C15_nt[7]),  7,60},
  {&(_tg__ZTV11S20291C9_nt__12S20291C15_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C15_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C15_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__12S20291C15_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt__12S20291C15_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt__12S20291C15_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt__12S20291C15_nt[3]),  3,3},
  {&(_ZTV12S20291C15_nt[25]),  25,60},
  {&(_ZTV12S20291C15_nt[31]),  31,60},
  {&(_ZTV12S20291C15_nt[34]),  34,60},
  {&(_ZTV12S20291C15_nt[38]),  38,60},
  {&(_ZTV12S20291C15_nt[18]),  18,60},
  {&(_ZTV12S20291C15_nt[48]),  48,60},
  {&(_ZTV12S20291C15_nt[54]),  54,60},
  {&(_ZTV12S20291C15_nt[59]),  59,60},
  {&(_tg__ZTV11S20291C3_nt__12S20291C15_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C15_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C15_nt[];
VTBL_ENTRY *P__ZTI12S20291C15_nt = _ZTI12S20291C15_nt; 
extern  VTBL_ENTRY _ZTV12S20291C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C15_nt[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N12S20291C10_ntD0Ev,_ZThn6584_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N12S20291C10_ntD1Ev,_ZThn6584_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N12S20291C15_ntD0Ev,_ZThn6964_N12S20291C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N12S20291C15_ntD1Ev,_ZThn6964_N12S20291C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C15_nt = {  "S20291C15_nt", // class name
  bases_S20291C15_nt, 11,
  &(vtc_S20291C15_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C15_nt[0]), // expected_vtt_contents
  ABISELECT(12592,10360), // object size
  NSPAIRA(_ZTI12S20291C15_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S20291C15_nt),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C15_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C16_nt  : virtual S20291C2_nt , virtual S20291C9_nt , S20291C6_nt , S20291C5_nt {
  ::S20291C10_nt s20291c16f0;
  short s20291c16f1;
  int s20291c16f2:8;
  virtual void  v17(); // _ZN12S20291C16_nt3v17Ev
  virtual void  v18(); // _ZN12S20291C16_nt3v18Ev
  ~S20291C16_nt(); // tgen
  S20291C16_nt(); // tgen
};
//SIG(-1 S20291C16_nt) 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  S20291C16_nt ::v17(){vfunc_called(this, "_ZN12S20291C16_nt3v17Ev");}
void  S20291C16_nt ::v18(){vfunc_called(this, "_ZN12S20291C16_nt3v18Ev");}
S20291C16_nt ::~S20291C16_nt(){ note_dtor("S20291C16_nt", this);} // tgen
S20291C16_nt ::S20291C16_nt(){ note_ctor("S20291C16_nt", this);} // tgen

//skip512 S20291C16_nt

#else // __cplusplus

extern void _ZN12S20291C16_ntC1Ev();
extern void _ZN12S20291C16_ntD1Ev();
Name_Map name_map_S20291C16_nt[] = {
  NSPAIR(_ZN12S20291C16_ntC1Ev),
  NSPAIR(_ZN12S20291C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
static Base_Class bases_S20291C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    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_S20291C2_nt,    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_S20291C8_nt,    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_S20291C3_nt,    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_S20291C7_nt,    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_S20291C9_nt,    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_S20291C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C7_nt,    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_S20291C8_nt,    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_S20291C2_nt,    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_S20291C6_nt,    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_S20291C2_nt,    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_S20291C9_nt,    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_S20291C10_nt,    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_S20291C5_nt,    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 _ZTI12S20291C16_nt[];
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C16_ntD1Ev();
extern void _ZN12S20291C16_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn27840_N12S20291C16_ntD1Ev,_ZThn22868_N12S20291C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev)();
extern void ABISELECT(_ZThn27840_N12S20291C16_ntD0Ev,_ZThn22868_N12S20291C16_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C16_nt[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev),
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV12S20291C16_nt[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn23248_N12S20291C10_ntD1Ev,_ZThn19092_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn23248_N12S20291C10_ntD0Ev,_ZThn19092_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn23712_N11S20291C5_ntD1Ev,_ZThn19472_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn23712_N11S20291C5_ntD0Ev,_ZThn19472_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C16_nt[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C16_nt[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C16_nt[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C16_nt[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTT_ENTRY vtt_S20291C16_nt[] = {
  {&(_ZTV12S20291C16_nt[8]),  8,89},
  {&(_tg__ZTV11S20291C5_nt__12S20291C16_nt[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__A1__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__12S20291C16_nt[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__12S20291C16_nt[6]),  6,8},
  {&(_ZTV12S20291C16_nt[44]),  44,89},
  {&(_ZTV12S20291C16_nt[52]),  52,89},
  {&(_ZTV12S20291C16_nt[58]),  58,89},
  {&(_ZTV12S20291C16_nt[64]),  64,89},
  {&(_ZTV12S20291C16_nt[67]),  67,89},
  {&(_ZTV12S20291C16_nt[29]),  29,89},
  {&(_ZTV12S20291C16_nt[77]),  77,89},
  {&(_ZTV12S20291C16_nt[83]),  83,89},
  {&(_ZTV12S20291C16_nt[88]),  88,89},
  {&(_ZTV12S20291C16_nt[39]),  39,89},
  {&(_tg__ZTV11S20291C9_nt__12S20291C16_nt[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__12S20291C16_nt[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__12S20291C16_nt[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C16_nt[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__12S20291C16_nt[3]),  3,4},
};
extern VTBL_ENTRY _ZTI12S20291C16_nt[];
VTBL_ENTRY *P__ZTI12S20291C16_nt = _ZTI12S20291C16_nt; 
extern  VTBL_ENTRY _ZTV12S20291C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C16_nt[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N11S20291C5_ntD0Ev,_ZThn19472_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N11S20291C5_ntD1Ev,_ZThn19472_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N12S20291C10_ntD0Ev,_ZThn19092_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N12S20291C10_ntD1Ev,_ZThn19092_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N12S20291C16_ntD0Ev,_ZThn22868_N12S20291C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N12S20291C16_ntD1Ev,_ZThn22868_N12S20291C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C16_nt = {  "S20291C16_nt", // class name
  bases_S20291C16_nt, 18,
  &(vtc_S20291C16_nt[0]), // expected_vtbl_contents
  &(vtt_S20291C16_nt[0]), // expected_vtt_contents
  ABISELECT(31968,26264), // object size
  NSPAIRA(_ZTI12S20291C16_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S20291C16_nt),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20291C16_nt),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20291C1  : virtual S20291C2_nt , virtual S20291C3_nt , virtual S20291C4 , S20291C15_nt , virtual S20291C16_nt {
  __tsi64 s20291c1f0[4];
  int s20291c1f1[2];
  ::S20291C13_nt s20291c1f2;
  int s20291c1f3;
  short s20291c1f4;
  int s20291c1f5[4];
  virtual  ~S20291C1(); // _ZN8S20291C1D2Ev
  virtual void  v1(); // _ZN8S20291C12v1Ev
  virtual void  v2(); // _ZN8S20291C12v2Ev
  virtual void  v3(); // _ZN8S20291C12v3Ev
  virtual void  v4(); // _ZN8S20291C12v4Ev
  virtual void  v5(); // _ZN8S20291C12v5Ev
  S20291C1(); // tgen
};
//SIG(1 S20291C1) C1{ VBC2{ v6 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ VBC2 Fp FC2 Fi:3} VBC4{ VBC5{ VBC6{ BC7{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} BC8{ v8 v9 v10 Fi[2] FL[2] FC2[3]} BC2 vd v11 FL[2] Fp[8] FC9{ BC2 VBC8 VBC3 VBC7 FC7 Fs Fi[2]} Fp Fi FC9 Fi} VBC2 VBC3 BC9 BC10{ VBC7 VBC6 VBC2 VBC3 FL:44 Fp Fi FC9 FL[2] Fi[3] FC6 Fc:7 FC11{ BC7 vd v13 FC3 Fi Fp Fi}} v12 FC6 FL Fc:7} VBC12{ BC2 VBC7 VBC13{ VBC7 BC8 VBC5 Fc:8 Fi} BC9 BC11 vd v14 Fi FC9 Fi Fs FL:8 Fi} BC3 BC13 Fc FC14{} Fp} BC15{ BC9 BC10 vd v15 v16 Fi:13 FL Fi Fp[2] FL FC8} VBC16{ VBC2 VBC9 BC6 BC5 v17 v18 FC10 Fs Fi:8} vd v1 v2 v3 v4 v5 FL[4] Fi[2] FC13 Fi Fs Fi[4]}


 S20291C1 ::~S20291C1(){ note_dtor("S20291C1", this);}
void  S20291C1 ::v1(){vfunc_called(this, "_ZN8S20291C12v1Ev");}
void  S20291C1 ::v2(){vfunc_called(this, "_ZN8S20291C12v2Ev");}
void  S20291C1 ::v3(){vfunc_called(this, "_ZN8S20291C12v3Ev");}
void  S20291C1 ::v4(){vfunc_called(this, "_ZN8S20291C12v4Ev");}
void  S20291C1 ::v5(){vfunc_called(this, "_ZN8S20291C12v5Ev");}
S20291C1 ::S20291C1(){ note_ctor("S20291C1", this);} // tgen

static void Test_S20291C1()
{
  extern Class_Descriptor cd_S20291C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4442,14613)];
    init_test(&cd_S20291C1, buf);
    S20291C1 *dp, &lv = *(dp=new (buf) S20291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(71056,58448), "sizeof(S20291C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20291C1)");
    /*is_ambiguous_... S20291C1::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C3_nt*)(S20291C4*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C5_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24136,19868), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    check_base_class_offset(lv, (S20291C3_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(24280,19992), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*), ABISELECT(36408,29960), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*), ABISELECT(36872,30360), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(36112,29716), "S20291C1");
    check_base_class_offset(lv, (S20291C6_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(36112,29716), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(40232,33112), "S20291C1");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*), ABISELECT(40232,33112), "S20291C1");
    check_base_class_offset(lv, (S20291C8_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40232,33112), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C12_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(40704,33512), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C15_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C15_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*), ABISELECT(40704,33512), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C10_nt::S20291C7_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(40704,33512), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C5_nt */ AMB_check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*), ABISELECT(25568,21060), "S20291C1");
    check_base_class_offset(lv, (S20291C5_nt*)(S20291C4*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C5_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(25104,20680), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C12_nt*), ABISELECT(41008,33756), "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*), ABISELECT(43824,36076), "S20291C1");
    check_base_class_offset(lv, (S20291C13_nt*)(S20291C12_nt*), ABISELECT(43824,36076), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C12_nt*), ABISELECT(41152,33880), "S20291C1");
    /*is_ambiguous_... S20291C12_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C12_nt*), ABISELECT(41152,33880), "S20291C1");
    check_base_class_offset(lv, (S20291C7_nt*)(S20291C11_nt*)(S20291C12_nt*), ABISELECT(41616,34260), "S20291C1");
    check_base_class_offset(lv, (S20291C11_nt*)(S20291C12_nt*), ABISELECT(41616,34260), "S20291C1");
    check_base_class_offset(lv, (S20291C12_nt*)(S20291C4*), ABISELECT(41008,33756), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C3_nt */ AMB_check_base_class_offset(lv, (S20291C3_nt*)(S20291C4*), ABISELECT(24448,20128), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C13_nt*)(S20291C4*), ABISELECT(24616,20264), "S20291C1");
    /*is_ambiguous_... S20291C4::S20291C13_nt */ AMB_check_base_class_offset(lv, (S20291C13_nt*)(S20291C4*), ABISELECT(24616,20264), "S20291C1");
    check_base_class_offset(lv, (S20291C4*), ABISELECT(24448,20128), "S20291C1");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C15_nt*), 0, "S20291C1");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C15_nt*), 0, "S20291C1");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C15_nt*), ABISELECT(464,380), "S20291C1");
    check_base_class_offset(lv, (S20291C15_nt*), 0, "S20291C1");
    /*is_ambiguous_... S20291C1::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*), ABISELECT(70592,58068), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C9_nt */ AMB_check_base_class_offset(lv, (S20291C9_nt*)(S20291C16_nt*), ABISELECT(70592,58068), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C7_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C8_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(44600,36728), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C6_nt*)(S20291C16_nt*), ABISELECT(45064,37128), "S20291C1");
    /*is_ambiguous_... S20291C16_nt::S20291C6_nt */ AMB_check_base_class_offset(lv, (S20291C6_nt*)(S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    /*is_ambiguous_... S20291C9_nt::S20291C2_nt */ AMB_check_base_class_offset(lv, (S20291C2_nt*)(S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C9_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C10_nt*)(S20291C5_nt*)(S20291C16_nt*), ABISELECT(48896,40260), "S20291C1");
    check_base_class_offset(lv, (S20291C5_nt*)(S20291C16_nt*), ABISELECT(48432,39880), "S20291C1");
    check_base_class_offset(lv, (S20291C16_nt*), ABISELECT(44304,36484), "S20291C1");
    check_field_offset(lv, s20291c1f0, ABISELECT(7376,6060), "S20291C1.s20291c1f0");
    check_field_offset(lv, s20291c1f1, ABISELECT(7408,6092), "S20291C1.s20291c1f1");
    check_field_offset(lv, s20291c1f2, ABISELECT(7424,6100), "S20291C1.s20291c1f2");
    check_field_offset(lv, s20291c1f3, ABISELECT(24112,19844), "S20291C1.s20291c1f3");
    check_field_offset(lv, s20291c1f4, ABISELECT(24116,19848), "S20291C1.s20291c1f4");
    check_field_offset(lv, s20291c1f5, ABISELECT(24120,19852), "S20291C1.s20291c1f5");
    test_class_info(&lv, &cd_S20291C1);
    dp->~S20291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20291C1(Test_S20291C1, "S20291C1", ABISELECT(71056,58448));

#else // __cplusplus

extern void _ZN8S20291C1C1Ev();
extern void _ZN8S20291C1D2Ev();
Name_Map name_map_S20291C1[] = {
  NSPAIR(_ZN8S20291C1C1Ev),
  NSPAIR(_ZN8S20291C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C11_nt;
extern VTBL_ENTRY _ZTI12S20291C11_nt[];
extern  VTBL_ENTRY _ZTV12S20291C11_nt[];
extern Class_Descriptor cd_S20291C12_nt;
extern VTBL_ENTRY _ZTI12S20291C12_nt[];
extern  VTBL_ENTRY _ZTV12S20291C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C12_nt[];
extern Class_Descriptor cd_S20291C3_nt;
extern VTBL_ENTRY _ZTI11S20291C3_nt[];
extern  VTBL_ENTRY _ZTV11S20291C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C3_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C13_nt;
extern VTBL_ENTRY _ZTI12S20291C13_nt[];
extern  VTBL_ENTRY _ZTV12S20291C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C13_nt[];
extern Class_Descriptor cd_S20291C4;
extern VTBL_ENTRY _ZTI8S20291C4[];
extern  VTBL_ENTRY _ZTV8S20291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C4[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C15_nt;
extern VTBL_ENTRY _ZTI12S20291C15_nt[];
extern  VTBL_ENTRY _ZTV12S20291C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C15_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C7_nt;
extern VTBL_ENTRY _ZTI11S20291C7_nt[];
extern  VTBL_ENTRY _ZTV11S20291C7_nt[];
extern Class_Descriptor cd_S20291C8_nt;
extern VTBL_ENTRY _ZTI11S20291C8_nt[];
extern  VTBL_ENTRY _ZTV11S20291C8_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C6_nt;
extern VTBL_ENTRY _ZTI11S20291C6_nt[];
extern  VTBL_ENTRY _ZTV11S20291C6_nt[];
extern Class_Descriptor cd_S20291C2_nt;
extern VTBL_ENTRY _ZTI11S20291C2_nt[];
extern  VTBL_ENTRY _ZTV11S20291C2_nt[];
extern Class_Descriptor cd_S20291C9_nt;
extern VTBL_ENTRY _ZTI11S20291C9_nt[];
extern  VTBL_ENTRY _ZTV11S20291C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C9_nt[];
extern Class_Descriptor cd_S20291C10_nt;
extern VTBL_ENTRY _ZTI12S20291C10_nt[];
extern  VTBL_ENTRY _ZTV12S20291C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C10_nt[];
extern Class_Descriptor cd_S20291C5_nt;
extern VTBL_ENTRY _ZTI11S20291C5_nt[];
extern  VTBL_ENTRY _ZTV11S20291C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20291C5_nt[];
extern Class_Descriptor cd_S20291C16_nt;
extern VTBL_ENTRY _ZTI12S20291C16_nt[];
extern  VTBL_ENTRY _ZTV12S20291C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20291C16_nt[];
static Base_Class bases_S20291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C2_nt,    ABISELECT(24136,19868), //bcp->offset
    31, //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_S20291C3_nt,    ABISELECT(24280,19992), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C7_nt,    ABISELECT(36112,29716), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    ABISELECT(36408,29960), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(36872,30360), //bcp->offset
    107, //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
    5, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(36112,29716), //bcp->offset
    89, //bcp->virtual_function_table_offset
    9, //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
    10, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(25104,20680), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    ABISELECT(40232,33112), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(40704,33512), //bcp->offset
    118, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20291C9_nt,    ABISELECT(25104,20680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(25568,21060), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(25104,20680), //bcp->offset
    67, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(41008,33756), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C8_nt,    ABISELECT(43824,36076), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C13_nt,    ABISELECT(43824,36076), //bcp->offset
    153, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20291C2_nt,    ABISELECT(41152,33880), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C9_nt,    ABISELECT(41152,33880), //bcp->offset
    140, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C7_nt,    ABISELECT(41616,34260), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C11_nt,    ABISELECT(41616,34260), //bcp->offset
    147, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20291C12_nt,    ABISELECT(41008,33756), //bcp->offset
    122, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20291C3_nt,    ABISELECT(24448,20128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(24616,20264), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20291C13_nt,    ABISELECT(24616,20264), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20291C4,    ABISELECT(24448,20128), //bcp->offset
    38, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20291C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    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
    37, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(464,380), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20291C15_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
    39, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20291C2_nt,    ABISELECT(70592,58068), //bcp->offset
    -1, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(70592,58068), //bcp->offset
    221, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20291C7_nt,    ABISELECT(44304,36484), //bcp->offset
    -1, //bcp->virtual_function_table_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
    33, //immediately_derived
  0, 0},
  {&cd_S20291C8_nt,    ABISELECT(44600,36728), //bcp->offset
    194, //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
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(45064,37128), //bcp->offset
    199, //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
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20291C6_nt,    ABISELECT(44304,36484), //bcp->offset
    -1, //bcp->virtual_function_table_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
    38, //immediately_derived
  0, 0},
  {&cd_S20291C2_nt,    ABISELECT(48432,39880), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S20291C9_nt,    ABISELECT(48432,39880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20291C10_nt,    ABISELECT(48896,40260), //bcp->offset
    213, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20291C5_nt,    ABISELECT(48432,39880), //bcp->offset
    202, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20291C16_nt,    ABISELECT(44304,36484), //bcp->offset
    170, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20291C1[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN8S20291C1D1Ev();
extern void _ZN8S20291C1D0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
extern void _ZN8S20291C12v1Ev();
extern void _ZN8S20291C12v2Ev();
extern void _ZN8S20291C12v3Ev();
extern void _ZN8S20291C12v4Ev();
extern void _ZN8S20291C12v5Ev();
extern void ABISELECT(_ZThn464_N8S20291C1D1Ev,_ZThn380_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S20291C1D0Ev,_ZThn380_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn24448_N8S20291C1D1Ev,_ZThn20128_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn24448_N8S20291C1D0Ev,_ZThn20128_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTvn168_n88_N8S20291C1D1Ev,_ZTvn136_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn168_n88_N8S20291C1D0Ev,_ZTvn136_n44_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn25104_N8S20291C1D1Ev,_ZThn20680_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn25104_N8S20291C1D0Ev,_ZThn20680_N8S20291C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20291C1D1Ev,_ZTvn380_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C1D0Ev,_ZTvn380_n40_N8S20291C1D0Ev)();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn36112_N8S20291C1D1Ev,_ZThn29716_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn36112_N8S20291C1D0Ev,_ZThn29716_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn41008_N8S20291C1D1Ev,_ZThn33756_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn41008_N8S20291C1D0Ev,_ZThn33756_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C1D1Ev,_ZTvn504_n44_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C1D0Ev,_ZTvn504_n44_N8S20291C1D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn43824_N8S20291C1D1Ev,_ZThn36076_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn43824_N8S20291C1D0Ev,_ZThn36076_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZThn44304_N8S20291C1D1Ev,_ZThn36484_N8S20291C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZThn44304_N8S20291C1D0Ev,_ZThn36484_N8S20291C1D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S20291C1D1Ev,_ZTvn3396_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S20291C1D0Ev,_ZTvn3396_n40_N8S20291C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20291C1D1Ev,_ZTvn3776_n40_N8S20291C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20291C1D0Ev,_ZTvn3776_n40_N8S20291C1D0Ev)();
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S20291C1[] = {
  ABISELECT(70592,58068),
  ABISELECT(44304,36484),
  ABISELECT(43824,36076),
  ABISELECT(41008,33756),
  ABISELECT(25104,20680),
  ABISELECT(24448,20128),
  ABISELECT(36112,29716),
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S20291C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C1D0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20291C12v5Ev,
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20291C1D1Ev,_ZThn380_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20291C1D0Ev,_ZThn380_N8S20291C1D0Ev),
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  ABISELECT(168,136),
  ABISELECT(168,136),
  ABISELECT(168,136),
  ABISELECT(-24448,-20128),
  ABISELECT(19376,15948),
  ABISELECT(16560,13628),
  ABISELECT(16256,13384),
  ABISELECT(15784,12984),
  ABISELECT(-168,-136),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(-312,-260),
  ABISELECT(-24448,-20128),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev),
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  ABISELECT(-24616,-20264),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20291C1D1Ev,_ZTvn136_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20291C1D0Ev,_ZTvn136_n44_N8S20291C1D0Ev),
  ABISELECT(-25104,-20680),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-25104,-20680),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev),
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-25568,-21060),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C1D1Ev,_ZTvn380_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C1D0Ev,_ZTvn380_n40_N8S20291C1D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36112,-29716),
  0,
  ABISELECT(-36112,-29716),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  ABISELECT(-36408,-29960),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-36872,-30360),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-41008,-33756),
  0,
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-41008,-33756),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-41152,-33880),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-41616,-34260),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C1D1Ev,_ZTvn504_n44_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C1D0Ev,_ZTvn504_n44_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
  ABISELECT(-43824,-36076),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-43824,-36076),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev),
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-44304,-36484),
  0,
  ABISELECT(-8192,-6768),
  ABISELECT(-3600,-2972),
  ABISELECT(-20024,-16492),
  ABISELECT(-4072,-3372),
  ABISELECT(26288,21584),
  ABISELECT(-20168,-16616),
  ABISELECT(-44304,-36484),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
  ABISELECT(-44600,-36728),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  ABISELECT(-45064,-37128),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  ABISELECT(-48432,-39880),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20291C1D1Ev,_ZTvn3396_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20291C1D0Ev,_ZTvn3396_n40_N8S20291C1D0Ev),
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-48896,-40260),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20291C1D1Ev,_ZTvn3776_n40_N8S20291C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20291C1D0Ev,_ZTvn3776_n40_N8S20291C1D0Ev),
  0,
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  ABISELECT(-70592,-58068),
  (VTBL_ENTRY)&(_ZTI8S20291C1[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV8S20291C1[];
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C15_ntD1Ev();
extern void _ZN12S20291C15_ntD0Ev();
extern void _ZN12S20291C15_nt3v15Ev();
extern void _ZN12S20291C15_nt3v16Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C15_nt__8S20291C1[] = {
  ABISELECT(36112,29716),
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S20291C15_nt3v16Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  ABISELECT(40704,33512),
  ABISELECT(24136,19868),
  ABISELECT(24280,19992),
  ABISELECT(40232,33112),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(-40240,-33132),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn35648_N12S20291C10_ntD1Ev,_ZThn29336_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn35648_N12S20291C10_ntD0Ev,_ZThn29336_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-35648,-29336),
  0,
  ABISELECT(-35648,-29336),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-35944,-29580),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-36408,-29980),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(-23672,-19488),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-23816,-19612),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__12S20291C15_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-33112),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-24280,-19992),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C15_nt__8S20291C1[] = {
  0,
  ABISELECT(-24136,-19868),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C15_nt__8S20291C1[] = {
  0,
  ABISELECT(-40704,-33512),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(23816,19612),
  ABISELECT(23672,19488),
  ABISELECT(35648,29336),
  ABISELECT(40240,33132),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD1Ev,_ZThn380_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N12S20291C15_ntD0Ev,_ZThn380_N12S20291C15_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev)();
extern void ABISELECT(_ZThn36112_N12S20291C15_ntD1Ev,_ZThn29716_N12S20291C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev)();
extern void ABISELECT(_ZThn36112_N12S20291C15_ntD0Ev,_ZThn29716_N12S20291C15_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36112,-29716),
  0,
  ABISELECT(-36112,-29716),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-36408,-29960),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A2__12S20291C15_nt__8S20291C1[] = {
  ABISELECT(-36872,-30360),
  (VTBL_ENTRY)&(_ZTI12S20291C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C1[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN8S20291C4D1Ev();
extern void _ZN8S20291C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20291C4__8S20291C1[] = {
  ABISELECT(19376,15948),
  ABISELECT(16560,13628),
  ABISELECT(16256,13384),
  ABISELECT(15784,12984),
  ABISELECT(-168,-136),
  ABISELECT(11664,9588),
  ABISELECT(656,552),
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN8S20291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20291C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__11S20291C3_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI11S20291C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(-16088,-13248),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-488,-416),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-488,-416),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11496,-9452),
  0,
  ABISELECT(-11496,-9452),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-11792,-9696),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-12256,-10096),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  ABISELECT(480,396),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(336,272),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15616,-12848),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-952,-796),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-656,-552),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(-656,-552),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11664,-9588),
  0,
  ABISELECT(-11664,-9588),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-11960,-9832),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-12424,-10232),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15784,-12984),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__8S20291C4__8S20291C1[] = {
  0,
  ABISELECT(-16256,-13384),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-1120,-932),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D1Ev,_ZTvn380_n40_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20291C4D0Ev,_ZTvn380_n40_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn16560_N8S20291C4D1Ev,_ZThn13628_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn16560_N8S20291C4D0Ev,_ZThn13628_N8S20291C4D0Ev)() __attribute__((weak));
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-16560,-13628),
  0,
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  ABISELECT(-16560,-13628),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn19376_N8S20291C4D1Ev,_ZThn15948_N8S20291C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev)();
extern void ABISELECT(_ZThn19376_N8S20291C4D0Ev,_ZThn15948_N8S20291C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-19376,-15948),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-19376,-15948),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-16704,-13752),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev)();
extern void _ZN12S20291C11_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C11_nt12S20291C12_nt__8S20291C4__8S20291C1[] = {
  ABISELECT(-17168,-14132),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D1Ev,_ZTvn504_n44_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20291C4D0Ev,_ZTvn504_n44_N8S20291C4D0Ev),
  (VTBL_ENTRY)&_ZN12S20291C11_nt3v13Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__A__8S20291C4__8S20291C1[] = {
  ABISELECT(15616,12848),
  ABISELECT(-336,-272),
  ABISELECT(-480,-396),
  ABISELECT(11496,9452),
  ABISELECT(488,416),
  ABISELECT(16088,13248),
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S20291C4[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D1Ev,_ZThn136_N8S20291C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20291C4D0Ev,_ZThn136_N8S20291C4D0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__8S20291C1[] = {
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(824,688),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(968,812),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15600,-12832),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15136,-12452),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(1432,1192),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(1288,1068),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev)() __attribute__((weak));
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(968,812),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(824,688),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C1[] = {
  0,
  ABISELECT(-15600,-12832),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN12S20291C12_ntD1Ev();
extern void _ZN12S20291C12_ntD0Ev();
extern void _ZN12S20291C12_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-776,-644),
  ABISELECT(-16728,-13764),
  ABISELECT(-16872,-13888),
  ABISELECT(-4896,-4040),
  ABISELECT(-15904,-13076),
  ABISELECT(2816,2320),
  ABISELECT(-304,-244),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S20291C12_nt3v14Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(920,768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(16872,13888),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(17016,14012),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(448,368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev)();
extern void ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-2816,-2320),
  0,
  0,
  0,
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(15904,13076),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(15904,13076),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD1Ev,_ZTv0_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C12_ntD0Ev,_ZTv0_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4896,4040),
  0,
  ABISELECT(4896,4040),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD1Ev,_ZTv0_n16_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C12_ntD0Ev,_ZTv0_n16_N12S20291C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(4600,3796),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(4136,3396),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C1[] = {
  0,
  ABISELECT(16872,13888),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(16728,13764),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(15440,12696),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD1Ev,_ZTvn380_n40_N12S20291C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C12_ntD0Ev,_ZTvn380_n40_N12S20291C12_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C1[] = {
  ABISELECT(-448,-368),
  ABISELECT(-17016,-14012),
  ABISELECT(-16872,-13888),
  ABISELECT(-920,-768),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI12S20291C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
extern void _ZN12S20291C13_ntD1Ev();
extern void _ZN12S20291C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-3592,-2964),
  ABISELECT(-19544,-16084),
  ABISELECT(-19688,-16208),
  ABISELECT(-7712,-6360),
  ABISELECT(-18720,-15396),
  ABISELECT(-3120,-2564),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C13_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C1[] = {
  0,
  ABISELECT(3120,2564),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(18720,15396),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(15600,12832),
  ABISELECT(-968,-812),
  ABISELECT(-824,-688),
  ABISELECT(15128,12432),
  ABISELECT(18720,15396),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(7712,6360),
  0,
  ABISELECT(7712,6360),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(7416,6116),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(6952,5716),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C1[] = {
  0,
  ABISELECT(19688,16208),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(19544,16084),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(3592,2964),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev)();
extern void ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C1[] = {
  ABISELECT(-1288,-1068),
  ABISELECT(-1432,-1192),
  ABISELECT(10544,8656),
  ABISELECT(15136,12452),
  ABISELECT(18256,15016),
  (VTBL_ENTRY)&(_ZTI12S20291C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD1Ev,_ZTvn380_n40_N12S20291C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N12S20291C13_ntD0Ev,_ZTvn380_n40_N12S20291C13_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void _ZN12S20291C16_ntD1Ev();
extern void _ZN12S20291C16_ntD0Ev();
extern void _ZN11S20291C6_nt3v11Ev();
extern void _ZN12S20291C16_nt3v17Ev();
extern void _ZN12S20291C16_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-8192,-6768),
  ABISELECT(-3600,-2972),
  ABISELECT(-20024,-16492),
  ABISELECT(-4072,-3372),
  ABISELECT(26288,21584),
  ABISELECT(-20168,-16616),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S20291C16_nt3v18Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void _ZN11S20291C5_ntD1Ev();
extern void _ZN11S20291C5_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_ntD0Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,6768),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24152,19888),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  ABISELECT(24296,20012),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[] = {
  0,
  ABISELECT(7728,6368),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN12S20291C10_ntD1Ev();
extern void _ZN12S20291C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  0,
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S20291C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20291C10_ntD0Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(8192,6748),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(12784,10544),
  0,
  ABISELECT(12784,10544),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(12488,10300),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(12024,9900),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  0,
  ABISELECT(24760,20392),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24616,20268),
  (VTBL_ENTRY)&(_ZTI12S20291C10_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(12320,10164),
  0,
  ABISELECT(12320,10164),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(12024,9920),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(11560,9520),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(24296,20012),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(24152,19888),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,6768),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  0,
  ABISELECT(7728,6368),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev)();
extern void ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI11S20291C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD1Ev,_ZThn380_N11S20291C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N11S20291C5_ntD0Ev,_ZThn380_N11S20291C5_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(20168,16616),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(4072,3372),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(20024,16492),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__12S20291C16_nt__8S20291C1[] = {
  0,
  ABISELECT(3600,2972),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
extern void _ZN11S20291C5_nt3v12Ev();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20291C5_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-12320,-10164),
  ABISELECT(-7728,-6368),
  ABISELECT(-24296,-20012),
  ABISELECT(-24152,-19888),
  ABISELECT(-8200,-6768),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20291C5_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD1Ev,_ZThn3396_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N12S20291C16_ntD0Ev,_ZThn3396_N12S20291C16_ntD0Ev),
};
extern void _ZN11S20291C7_nt2v7Ev();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev)();
extern void _ZN11S20291C6_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C6_nt__A1__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8192,6768),
  0,
  ABISELECT(8192,6768),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD1Ev,_ZTv0_n16_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S20291C16_ntD0Ev,_ZTv0_n16_N12S20291C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S20291C6_nt3v11Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt11S20291C6_nt__A2__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(7896,6524),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt11S20291C6_nt__A3__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(7432,6124),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev)();
extern void ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt__8S20291C1[] = {
  ABISELECT(-24616,-20268),
  ABISELECT(-24760,-20392),
  ABISELECT(-12784,-10544),
  ABISELECT(-8192,-6748),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI12S20291C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD1Ev,_ZThn3776_N12S20291C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N12S20291C16_ntD0Ev,_ZThn3776_N12S20291C16_ntD0Ev),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C9_nt__A3__8S20291C1[] = {
  ABISELECT(-29888,-24556),
  ABISELECT(-46456,-38200),
  ABISELECT(-46312,-38076),
  ABISELECT(-30360,-24956),
  0,
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C8_nt2v8Ev();
extern void _ZN11S20291C8_nt2v9Ev();
extern void _ZN11S20291C8_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C8_nt__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  0,
  0,
  ABISELECT(30360,24956),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20291C8_nt3v10Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20291C3_nt__11S20291C9_nt__A3__8S20291C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(46312,38076),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
};
extern void _ZN11S20291C2_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  ABISELECT(46456,38200),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C2_nt2v6Ev,
};
extern void _ZN11S20291C7_nt2v7Ev();
static  VTBL_ENTRY _tg__ZTV11S20291C7_nt__11S20291C9_nt__A3__8S20291C1[] = {
  0,
  ABISELECT(29888,24556),
  (VTBL_ENTRY)&(_ZTI11S20291C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20291C7_nt2v7Ev,
};
static  VTT_ENTRY vtt_S20291C1[] = {
  {&(_ZTV8S20291C1[13]),  13,229},
  {&(_tg__ZTV12S20291C15_nt__8S20291C1[7]),  7,12},
  {&(_tg__ZTV11S20291C9_nt12S20291C15_nt__A2__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C15_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt12S20291C15_nt__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt12S20291C15_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__12S20291C15_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C15_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C15_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C15_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__12S20291C15_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C6_nt__12S20291C15_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C15_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A2__12S20291C15_nt__8S20291C1[2]),  2,3},
  {&(_ZTV8S20291C1[34]),  34,229},
  {&(_ZTV8S20291C1[38]),  38,229},
  {&(_ZTV8S20291C1[52]),  52,229},
  {&(_ZTV8S20291C1[77]),  77,229},
  {&(_ZTV8S20291C1[98]),  98,229},
  {&(_ZTV8S20291C1[104]),  104,229},
  {&(_ZTV8S20291C1[109]),  109,229},
  {&(_ZTV8S20291C1[115]),  115,229},
  {&(_ZTV8S20291C1[121]),  121,229},
  {&(_ZTV8S20291C1[87]),  87,229},
  {&(_ZTV8S20291C1[136]),  136,229},
  {&(_ZTV8S20291C1[165]),  165,229},
  {&(_ZTV8S20291C1[146]),  146,229},
  {&(_ZTV8S20291C1[149]),  149,229},
  {&(_ZTV8S20291C1[62]),  62,229},
  {&(_ZTV8S20291C1[29]),  29,229},
  {&(_ZTV8S20291C1[188]),  188,229},
  {&(_ZTV8S20291C1[228]),  228,229},
  {&(_ZTV8S20291C1[196]),  196,229},
  {&(_ZTV8S20291C1[201]),  201,229},
  {&(_ZTV8S20291C1[209]),  209,229},
  {&(_ZTV8S20291C1[219]),  219,229},
  {&(_tg__ZTV11S20291C3_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV8S20291C4__8S20291C1[10]),  10,12},
  {&(_tg__ZTV11S20291C3_nt8S20291C4__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__11S20291C3_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt8S20291C4__A1__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt8S20291C4__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt8S20291C4__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C5_nt__8S20291C4__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__8S20291C4__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__8S20291C4__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__8S20291C4__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__8S20291C4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__8S20291C4__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__8S20291C4__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__8S20291C4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C4__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C12_nt__8S20291C4__8S20291C1[14]),  14,18},
  {&(_tg__ZTV12S20291C13_nt__8S20291C4__8S20291C1[12]),  12,17},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C4__8S20291C1[6]),  6,7},
  {&(_tg__ZTV12S20291C11_nt12S20291C12_nt__8S20291C4__8S20291C1[2]),  2,6},
  {&(_tg__ZTV12S20291C13_nt__A__8S20291C4__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C5_nt__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C12_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C9_nt12S20291C12_nt__A1__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt12S20291C12_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__12S20291C12_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C13_nt__12S20291C12_nt__8S20291C1[12]),  12,17},
  {&(_tg__ZTV11S20291C5_nt__12S20291C12_nt__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C12_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A1__12S20291C12_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A2__12S20291C12_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C12_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C12_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C12_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A1__12S20291C12_nt__8S20291C1[6]),  6,7},
  {&(_tg__ZTV12S20291C13_nt__8S20291C1[8]),  8,13},
  {&(_tg__ZTV11S20291C7_nt__12S20291C13_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C13_nt__8S20291C1[10]),  10,14},
  {&(_tg__ZTV11S20291C6_nt__12S20291C13_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A1__12S20291C13_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C13_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C13_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C13_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A2__12S20291C13_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C13_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV12S20291C16_nt__8S20291C1[8]),  8,14},
  {&(_tg__ZTV11S20291C5_nt12S20291C16_nt__A1__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt11S20291C5_nt12S20291C16_nt__A4__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C7_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__12S20291C10_nt11S20291C5_nt12S20291C16_nt__A2__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[2]),  2,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C3_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C8_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C7_nt__A1__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[3]),  3,4},
  {&(_tg__ZTV12S20291C10_nt__11S20291C5_nt12S20291C16_nt__A1__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C2_nt__12S20291C16_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C9_nt__12S20291C16_nt__8S20291C1[7]),  7,8},
  {&(_tg__ZTV11S20291C8_nt__12S20291C16_nt__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__12S20291C16_nt__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C7_nt__12S20291C16_nt__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C5_nt__12S20291C16_nt__8S20291C1[7]),  7,11},
  {&(_tg__ZTV11S20291C6_nt__A1__12S20291C16_nt__8S20291C1[9]),  9,13},
  {&(_tg__ZTV11S20291C8_nt11S20291C6_nt__A2__12S20291C16_nt__8S20291C1[2]),  2,5},
  {&(_tg__ZTV11S20291C2_nt11S20291C6_nt__A3__12S20291C16_nt__8S20291C1[2]),  2,3},
  {&(_tg__ZTV12S20291C10_nt11S20291C5_nt__12S20291C16_nt__8S20291C1[6]),  6,8},
  {&(_tg__ZTV11S20291C9_nt__A3__8S20291C1[6]),  6,7},
  {&(_tg__ZTV11S20291C8_nt__11S20291C9_nt__A3__8S20291C1[5]),  5,8},
  {&(_tg__ZTV11S20291C3_nt__11S20291C9_nt__A3__8S20291C1[3]),  3,3},
  {&(_tg__ZTV11S20291C2_nt__A1__11S20291C9_nt__A3__8S20291C1[3]),  3,4},
  {&(_tg__ZTV11S20291C7_nt__11S20291C9_nt__A3__8S20291C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20291C1[];
extern  VTBL_ENTRY _ZTV8S20291C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20291C1[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD0Ev,_ZTv0_n48_N12S20291C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD0Ev,_ZThn2320_N12S20291C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N12S20291C12_ntD1Ev,_ZTv0_n48_N12S20291C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N12S20291C12_ntD1Ev,_ZThn2320_N12S20291C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD0Ev,_ZTv0_n16_N11S20291C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD0Ev,_ZThn9036_N11S20291C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S20291C5_ntD1Ev,_ZTv0_n16_N11S20291C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N11S20291C5_ntD1Ev,_ZThn9036_N11S20291C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D0Ev,_ZTv0_n48_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20291C4D0Ev,_ZThn15948_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C4D1Ev,_ZTv0_n48_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20291C4D1Ev,_ZThn15948_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D0Ev,_ZTv0_n44_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20291C4D0Ev,_ZThn13628_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C4D1Ev,_ZTv0_n44_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20291C4D1Ev,_ZThn13628_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D0Ev,_ZTv0_n16_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D0Ev,_ZThn9588_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C4D1Ev,_ZTv0_n16_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20291C4D1Ev,_ZThn9588_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D0Ev,_ZTv0_n40_N8S20291C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D0Ev,_ZThn552_N8S20291C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C4D1Ev,_ZTv0_n40_N8S20291C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20291C4D1Ev,_ZThn552_N8S20291C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD0Ev,_ZTv0_n16_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD0Ev,_ZThn9452_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C13_ntD1Ev,_ZTv0_n16_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N12S20291C13_ntD1Ev,_ZThn9452_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD0Ev,_ZTv0_n40_N12S20291C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD0Ev,_ZThn416_N12S20291C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S20291C13_ntD1Ev,_ZTv0_n40_N12S20291C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N12S20291C13_ntD1Ev,_ZThn416_N12S20291C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD0Ev,_ZTv0_n16_N12S20291C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N12S20291C15_ntD0Ev,_ZThn29716_N12S20291C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C15_ntD1Ev,_ZTv0_n16_N12S20291C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N12S20291C15_ntD1Ev,_ZThn29716_N12S20291C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD0Ev,_ZTv0_n16_N12S20291C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD0Ev,_ZThn8656_N12S20291C10_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N12S20291C10_ntD0Ev,_ZThn29336_N12S20291C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S20291C10_ntD1Ev,_ZTv0_n16_N12S20291C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N12S20291C10_ntD1Ev,_ZThn8656_N12S20291C10_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N12S20291C10_ntD1Ev,_ZThn29336_N12S20291C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C1D0Ev,_ZTv0_n48_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20291C1D0Ev,_ZThn36076_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20291C1D1Ev,_ZTv0_n48_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20291C1D1Ev,_ZThn36076_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C1D0Ev,_ZTv0_n16_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20291C1D0Ev,_ZThn29716_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20291C1D1Ev,_ZTv0_n16_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20291C1D1Ev,_ZThn29716_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C1D0Ev,_ZTv0_n40_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20291C1D0Ev,_ZThn36484_N8S20291C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20291C1D0Ev,_ZThn20680_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20291C1D1Ev,_ZTv0_n40_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20291C1D1Ev,_ZThn36484_N8S20291C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20291C1D1Ev,_ZThn20680_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C1D0Ev,_ZTv0_n44_N8S20291C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20291C1D0Ev,_ZThn33756_N8S20291C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20291C1D0Ev,_ZThn20128_N8S20291C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20291C1D1Ev,_ZTv0_n44_N8S20291C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20291C1D1Ev,_ZThn33756_N8S20291C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20291C1D1Ev,_ZThn20128_N8S20291C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20291C1 = {  "S20291C1", // class name
  bases_S20291C1, 39,
  &(vtc_S20291C1[0]), // expected_vtbl_contents
  &(vtt_S20291C1[0]), // expected_vtt_contents
  ABISELECT(71056,58448), // object size
  NSPAIRA(_ZTI8S20291C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20291C1),229, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20291C1),158, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C9_nt  {
  void  mf7856c9(); // _ZN10S7856C9_nt8mf7856c9Ev
};
//SIG(-1 S7856C9_nt) C1{ m}


void  S7856C9_nt ::mf7856c9(){}

//skip512 S7856C9_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S7856C9_nt[];
VTBL_ENTRY *P__ZTI10S7856C9_nt = _ZTI10S7856C9_nt; 
Class_Descriptor cd_S7856C9_nt = {  "S7856C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S7856C9_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  S7856C12  {
  void  mf7856c12(); // _ZN8S7856C129mf7856c12Ev
};
//SIG(-1 S7856C12) C1{ m}


void  S7856C12 ::mf7856c12(){}

static void Test_S7856C12()
{
  {
    init_simple_test("S7856C12");
    S7856C12 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C12)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C12)");
  }
}
static Arrange_To_Call_Me vS7856C12(Test_S7856C12, "S7856C12", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S7856C12[];
VTBL_ENTRY *P__ZTI8S7856C12 = _ZTI8S7856C12; 
Class_Descriptor cd_S7856C12 = {  "S7856C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S7856C12),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  S7856C11  : virtual S77C13_nt , S7856C9_nt , virtual S7856C12 {
  ~S7856C11(); // tgen
  S7856C11(); // tgen
};
//SIG(-1 S7856C11) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7856C11 ::~S7856C11(){ note_dtor("S7856C11", this);} // tgen
S7856C11 ::S7856C11(){ note_ctor("S7856C11", this);} // tgen

static void Test_S7856C11()
{
  extern Class_Descriptor cd_S7856C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7856C11, buf);
    S7856C11 *dp, &lv = *(dp=new (buf) S7856C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7856C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C11)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C11");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C11");
    check_base_class_offset(lv, (S7856C12*), 0, "S7856C11");
    test_class_info(&lv, &cd_S7856C11);
    dp->~S7856C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C11(Test_S7856C11, "S7856C11", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7856C11C1Ev();
extern void _ZN8S7856C11D1Ev();
Name_Map name_map_S7856C11[] = {
  NSPAIR(_ZN8S7856C11C1Ev),
  NSPAIR(_ZN8S7856C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7856C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7856C11[];
static  VTBL_ENTRY vtc_S7856C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern VTBL_ENTRY _ZTV8S7856C11[];
static  VTT_ENTRY vtt_S7856C11[] = {
  {&(_ZTV8S7856C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
Class_Descriptor cd_S7856C11 = {  "S7856C11", // class name
  bases_S7856C11, 3,
  &(vtc_S7856C11[0]), // expected_vtbl_contents
  &(vtt_S7856C11[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7856C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C11),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  S7856C10  : S77C13_nt , virtual S7856C11 , virtual S7856C9_nt {
  ~S7856C10(); // tgen
  S7856C10(); // tgen
};
//SIG(-1 S7856C10) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7856C10 ::~S7856C10(){ note_dtor("S7856C10", this);} // tgen
S7856C10 ::S7856C10(){ note_ctor("S7856C10", this);} // tgen

static void Test_S7856C10()
{
  extern Class_Descriptor cd_S7856C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7856C10, buf);
    S7856C10 *dp, &lv = *(dp=new (buf) S7856C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7856C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C10)");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C10");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(8,4), "S7856C10");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C10");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C10");
    check_base_class_offset(lv, (S7856C11*), 0, "S7856C10");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C10");
    test_class_info(&lv, &cd_S7856C10);
    dp->~S7856C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C10(Test_S7856C10, "S7856C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7856C10C1Ev();
extern void _ZN8S7856C10D1Ev();
Name_Map name_map_S7856C10[] = {
  NSPAIR(_ZN8S7856C10C1Ev),
  NSPAIR(_ZN8S7856C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S77C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    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},
  {&cd_S7856C9_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 _ZTI8S7856C10[];
static  VTBL_ENTRY vtc_S7856C10[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern VTBL_ENTRY _ZTV8S7856C10[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C10[] = {
  {&(_ZTV8S7856C10[6]),  6,6},
  {&(_ZTV8S7856C10[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
Class_Descriptor cd_S7856C10 = {  "S7856C10", // class name
  bases_S7856C10, 6,
  &(vtc_S7856C10[0]), // expected_vtbl_contents
  &(vtt_S7856C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7856C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C10),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C10),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  S7856C13  : S7856C9_nt , virtual S77C13_nt , virtual S7856C12 , S7856C11 , virtual S7856C10 {
  virtual  ~S7856C13(); // _ZN8S7856C13D2Ev
  S7856C13(); // tgen
};
//SIG(-1 S7856C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S7856C13 ::~S7856C13(){ note_dtor("S7856C13", this);}
S7856C13 ::S7856C13(){ note_ctor("S7856C13", this);} // tgen

static void Test_S7856C13()
{
  extern Class_Descriptor cd_S7856C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7856C13, buf);
    S7856C13 *dp, &lv = *(dp=new (buf) S7856C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7856C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C13)");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C13");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C13");
    check_base_class_offset(lv, (S7856C12*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), 0, "S7856C13");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C13");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(16,8), "S7856C13");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(16,8), "S7856C13");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(24,12), "S7856C13");
    check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C13");
    test_class_info(&lv, &cd_S7856C13);
    dp->~S7856C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C13(Test_S7856C13, "S7856C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7856C13C1Ev();
extern void _ZN8S7856C13D2Ev();
Name_Map name_map_S7856C13[] = {
  NSPAIR(_ZN8S7856C13C1Ev),
  NSPAIR(_ZN8S7856C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
static Base_Class bases_S7856C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    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_S77C13_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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C13[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY vtc_S7856C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern VTBL_ENTRY _ZTV8S7856C13[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__A__8S7856C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C13[] = {
  {&(_ZTV8S7856C13[7]),  7,15},
  {&(_tg__ZTV8S7856C11__A__8S7856C13[4]),  4,4},
  {&(_ZTV8S7856C13[15]),  15,15},
  {&(_ZTV8S7856C13[15]),  15,15},
  {&(_tg__ZTV8S7856C10__8S7856C13[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
Class_Descriptor cd_S7856C13 = {  "S7856C13", // class name
  bases_S7856C13, 10,
  &(vtc_S7856C13[0]), // expected_vtbl_contents
  &(vtt_S7856C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7856C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C13),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  S7856C7  : virtual S77C13_nt , virtual S7856C9_nt , virtual S7856C10 , S7856C12 , S7856C13 {
  virtual  ~S7856C7(); // _ZN7S7856C7D2Ev
  S7856C7(); // tgen
};
//SIG(-1 S7856C7) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S7856C7 ::~S7856C7(){ note_dtor("S7856C7", this);}
S7856C7 ::S7856C7(){ note_ctor("S7856C7", this);} // tgen

static void Test_S7856C7()
{
  extern Class_Descriptor cd_S7856C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7856C7, buf);
    S7856C7 *dp, &lv = *(dp=new (buf) S7856C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7856C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C7)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(9,5), "S7856C7");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(9,5), "S7856C7");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(24,12), "S7856C7");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(24,12), "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C7");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(16,8), "S7856C7");
    check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C7");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(16,8), "S7856C7");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(8,4), "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), 0, "S7856C7");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), 0, "S7856C7");
    check_base_class_offset(lv, (S7856C13*), 0, "S7856C7");
    test_class_info(&lv, &cd_S7856C7);
    dp->~S7856C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C7(Test_S7856C7, "S7856C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7856C7C1Ev();
extern void _ZN7S7856C7D2Ev();
Name_Map name_map_S7856C7[] = {
  NSPAIR(_ZN7S7856C7C1Ev),
  NSPAIR(_ZN7S7856C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
static Base_Class bases_S7856C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C7[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY vtc_S7856C7[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern VTBL_ENTRY _ZTV7S7856C7[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__7S7856C7[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A1__7S7856C7[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__7S7856C7[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C7[] = {
  {&(_ZTV7S7856C7[7]),  7,15},
  {&(_tg__ZTV8S7856C13__7S7856C7[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A1__7S7856C7[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__7S7856C7[6]),  6,6},
  {&(_ZTV7S7856C7[15]),  15,15},
  {&(_ZTV7S7856C7[15]),  15,15},
  {&(_tg__ZTV8S7856C10__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
Class_Descriptor cd_S7856C7 = {  "S7856C7", // class name
  bases_S7856C7, 12,
  &(vtc_S7856C7[0]), // expected_vtbl_contents
  &(vtt_S7856C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7856C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7856C7),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C7),10, //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  S7856C14  : S7856C12 , S7856C9_nt , S7856C11 {
  int s7856c14f0;
  ~S7856C14(); // tgen
  S7856C14(); // tgen
};
//SIG(-1 S7856C14) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S7856C14 ::~S7856C14(){ note_dtor("S7856C14", this);} // tgen
S7856C14 ::S7856C14(){ note_ctor("S7856C14", this);} // tgen

static void Test_S7856C14()
{
  extern Class_Descriptor cd_S7856C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7856C14, buf);
    S7856C14 *dp, &lv = *(dp=new (buf) S7856C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7856C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C14)");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C14");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(8,4), "S7856C14");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C14");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C14");
    check_base_class_offset(lv, (S7856C11*), 0, "S7856C14");
    check_field_offset(lv, s7856c14f0, ABISELECT(8,4), "S7856C14.s7856c14f0");
    test_class_info(&lv, &cd_S7856C14);
    dp->~S7856C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C14(Test_S7856C14, "S7856C14", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7856C14C1Ev();
extern void _ZN8S7856C14D1Ev();
Name_Map name_map_S7856C14[] = {
  NSPAIR(_ZN8S7856C14C1Ev),
  NSPAIR(_ZN8S7856C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
static Base_Class bases_S7856C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C9_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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S7856C11,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C14[];
static  VTBL_ENTRY vtc_S7856C14[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
extern VTBL_ENTRY _ZTV8S7856C14[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C14[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C14[] = {
  {&(_ZTV8S7856C14[4]),  4,4},
  {&(_tg__ZTV8S7856C11__8S7856C14[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
Class_Descriptor cd_S7856C14 = {  "S7856C14", // class name
  bases_S7856C14, 6,
  &(vtc_S7856C14[0]), // expected_vtbl_contents
  &(vtt_S7856C14[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7856C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C14),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C14),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  S7856C6  : virtual S7856C7 , virtual S7856C14 , virtual S7856C13 {
  int s7856c6f0[2];
  virtual  ~S7856C6(); // _ZN7S7856C6D2Ev
  S7856C6(); // tgen
};
//SIG(-1 S7856C6) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S7856C6 ::~S7856C6(){ note_dtor("S7856C6", this);}
S7856C6 ::S7856C6(){ note_ctor("S7856C6", this);} // tgen

static void Test_S7856C6()
{
  extern Class_Descriptor cd_S7856C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7856C6, buf);
    S7856C6 *dp, &lv = *(dp=new (buf) S7856C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7856C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C6)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(25,17), "S7856C6");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C6");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C6");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(24,16), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C6");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(16,12), "S7856C6");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C6");
    check_base_class_offset(lv, (S7856C14*), ABISELECT(32,20), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(56,32), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C6");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), ABISELECT(48,28), "S7856C6");
    check_field_offset(lv, s7856c6f0, ABISELECT(8,4), "S7856C6.s7856c6f0");
    test_class_info(&lv, &cd_S7856C6);
    dp->~S7856C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C6(Test_S7856C6, "S7856C6", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7856C6C1Ev();
extern void _ZN7S7856C6D2Ev();
Name_Map name_map_S7856C6[] = {
  NSPAIR(_ZN7S7856C6C1Ev),
  NSPAIR(_ZN7S7856C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
static Base_Class bases_S7856C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C6[];
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C6[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C6[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C6[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C6[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTT_ENTRY vtt_S7856C6[] = {
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[20]),  20,36},
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[10]),  10,36},
  {&(_ZTV7S7856C6[26]),  26,36},
  {&(_ZTV7S7856C6[34]),  34,36},
  {&(_tg__ZTV7S7856C7__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C6[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C6[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C6 = {  "S7856C6", // class name
  bases_S7856C6, 22,
  &(vtc_S7856C6[0]), // expected_vtbl_contents
  &(vtt_S7856C6[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7856C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7856C6),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C6),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C15  {
  void  mf7856c15(); // _ZN8S7856C159mf7856c15Ev
};
//SIG(-1 S7856C15) C1{ m}


void  S7856C15 ::mf7856c15(){}

static void Test_S7856C15()
{
  {
    init_simple_test("S7856C15");
    S7856C15 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C15)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C15)");
  }
}
static Arrange_To_Call_Me vS7856C15(Test_S7856C15, "S7856C15", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S7856C15[];
VTBL_ENTRY *P__ZTI8S7856C15 = _ZTI8S7856C15; 
Class_Descriptor cd_S7856C15 = {  "S7856C15", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S7856C15),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  S7856C17_nt  : virtual S7856C9_nt {
  ~S7856C17_nt(); // tgen
  S7856C17_nt(); // tgen
};
//SIG(-1 S7856C17_nt) C1{ VBC2{ m}}


S7856C17_nt ::~S7856C17_nt(){ note_dtor("S7856C17_nt", this);} // tgen
S7856C17_nt ::S7856C17_nt(){ note_ctor("S7856C17_nt", this);} // tgen

//skip512 S7856C17_nt

#else // __cplusplus

extern void _ZN11S7856C17_ntC1Ev();
extern void _ZN11S7856C17_ntD1Ev();
Name_Map name_map_S7856C17_nt[] = {
  NSPAIR(_ZN11S7856C17_ntC1Ev),
  NSPAIR(_ZN11S7856C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI11S7856C17_nt[];
static  VTBL_ENTRY vtc_S7856C17_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern VTBL_ENTRY _ZTV11S7856C17_nt[];
static  VTT_ENTRY vtt_S7856C17_nt[] = {
  {&(_ZTV11S7856C17_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
VTBL_ENTRY *P__ZTI11S7856C17_nt = _ZTI11S7856C17_nt; 
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
Class_Descriptor cd_S7856C17_nt = {  "S7856C17_nt", // class name
  bases_S7856C17_nt, 1,
  &(vtc_S7856C17_nt[0]), // expected_vtbl_contents
  &(vtt_S7856C17_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S7856C17_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S7856C17_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S7856C17_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  S7856C16  : virtual S7856C11 , virtual S7856C17_nt , virtual S7856C14 , S7856C12 , virtual S7856C7 {
  int s7856c16f0;
  virtual  ~S7856C16(); // _ZN8S7856C16D2Ev
  S7856C16(); // tgen
};
//SIG(-1 S7856C16) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S7856C16 ::~S7856C16(){ note_dtor("S7856C16", this);}
S7856C16 ::S7856C16(){ note_ctor("S7856C16", this);} // tgen

static void Test_S7856C16()
{
  extern Class_Descriptor cd_S7856C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7856C16, buf);
    S7856C16 *dp, &lv = *(dp=new (buf) S7856C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7856C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C16)");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C16");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C16");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C16");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(12,8), "S7856C16");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C16");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C16");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C16");
    check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C16");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(24,16), "S7856C16");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C16");
    check_base_class_offset(lv, (S7856C14*), ABISELECT(16,12), "S7856C16");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C16");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C16");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C16");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(40,24), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C16");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(32,20), "S7856C16");
    check_field_offset(lv, s7856c16f0, ABISELECT(8,4), "S7856C16.s7856c16f0");
    test_class_info(&lv, &cd_S7856C16);
    dp->~S7856C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C16(Test_S7856C16, "S7856C16", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7856C16C1Ev();
extern void _ZN8S7856C16D2Ev();
Name_Map name_map_S7856C16[] = {
  NSPAIR(_ZN8S7856C16C1Ev),
  NSPAIR(_ZN8S7856C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
static Base_Class bases_S7856C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C16[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern VTBL_ENTRY _ZTV8S7856C16[];
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C16[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C16[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTT_ENTRY vtt_S7856C16[] = {
  {&(_ZTV8S7856C16[10]),  10,32},
  {&(_ZTV8S7856C16[32]),  32,32},
  {&(_ZTV8S7856C16[10]),  10,32},
  {&(_ZTV8S7856C16[16]),  16,32},
  {&(_ZTV8S7856C16[24]),  24,32},
  {&(_ZTV8S7856C16[32]),  32,32},
  {&(_tg__ZTV8S7856C11__8S7856C16[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C16[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C16[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C16[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C16[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C16[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C16[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C16[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C16 = {  "S7856C16", // class name
  bases_S7856C16, 20,
  &(vtc_S7856C16[0]), // expected_vtbl_contents
  &(vtt_S7856C16[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7856C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C16),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C16),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C18  : virtual S7856C13 , S7856C14 , S7856C10 , S7856C12 {
  virtual  ~S7856C18(); // _ZN8S7856C18D2Ev
  S7856C18(); // tgen
};
//SIG(-1 S7856C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S7856C18 ::~S7856C18(){ note_dtor("S7856C18", this);}
S7856C18 ::S7856C18(){ note_ctor("S7856C18", this);} // tgen

static void Test_S7856C18()
{
  extern Class_Descriptor cd_S7856C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7856C18, buf);
    S7856C18 *dp, &lv = *(dp=new (buf) S7856C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7856C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C18)");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(32,16), "S7856C18");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C18");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(33,17), "S7856C18");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(33,17), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(40,20), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C18");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(40,20), "S7856C18");
    check_base_class_offset(lv, (S7856C13*), ABISELECT(24,12), "S7856C18");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), 0, "S7856C18");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(8,4), "S7856C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), 0, "S7856C18");
    check_base_class_offset(lv, (S7856C14*), 0, "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(16,8), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), ABISELECT(16,8), "S7856C18");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7856C18");
    test_class_info(&lv, &cd_S7856C18);
    dp->~S7856C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C18(Test_S7856C18, "S7856C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7856C18C1Ev();
extern void _ZN8S7856C18D2Ev();
Name_Map name_map_S7856C18[] = {
  NSPAIR(_ZN8S7856C18C1Ev),
  NSPAIR(_ZN8S7856C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7856C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    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
    9, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C14,    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},
  {&cd_S77C13_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C18[];
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C18D1Ev,_ZThn12_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C18D0Ev,_ZThn12_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern VTBL_ENTRY _ZTV8S7856C18[];
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A__8S7856C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__8S7856C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTT_ENTRY vtt_S7856C18[] = {
  {&(_ZTV8S7856C18[8]),  8,32},
  {&(_tg__ZTV8S7856C14__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A__8S7856C18[4]),  4,4},
  {&(_ZTV8S7856C18[24]),  24,32},
  {&(_ZTV8S7856C18[32]),  32,32},
  {&(_ZTV8S7856C18[32]),  32,32},
  {&(_ZTV8S7856C18[16]),  16,32},
  {&(_tg__ZTV8S7856C13__8S7856C18[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C18[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C18D0Ev,_ZThn12_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C18D1Ev,_ZThn12_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C18 = {  "S7856C18", // class name
  bases_S7856C18, 19,
  &(vtc_S7856C18[0]), // expected_vtbl_contents
  &(vtt_S7856C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7856C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C5  : virtual S7856C6 , virtual S7856C15 , virtual S7856C16 , S7856C18 {
  virtual  ~S7856C5(); // _ZN7S7856C5D2Ev
  S7856C5(); // tgen
};
//SIG(-1 S7856C5) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S7856C5 ::~S7856C5(){ note_dtor("S7856C5", this);}
S7856C5 ::S7856C5(){ note_ctor("S7856C5", this);} // tgen

static void Test_S7856C5()
{
  extern Class_Descriptor cd_S7856C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7856C5, buf);
    S7856C5 *dp, &lv = *(dp=new (buf) S7856C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7856C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C5)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C5");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C5");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(57,33), "S7856C5");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(57,33), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(32,16), "S7856C5");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(48,28), "S7856C5");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(48,28), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(72,40), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(64,36), "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(64,36), "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(64,36), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,48), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C5");
    /*is_ambiguous_... S7856C5::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C5");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(80,44), "S7856C5");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(80,44), "S7856C5");
    check_base_class_offset(lv, (S7856C6*), ABISELECT(32,16), "S7856C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(96,52), "S7856C5");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(96,52), "S7856C5");
    check_base_class_offset(lv, (S7856C16*), ABISELECT(96,52), "S7856C5");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(8,4), "S7856C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C5");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*), 0, "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(16,8), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(16,8), "S7856C5");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(24,12), "S7856C5");
    check_base_class_offset(lv, (S7856C18*), 0, "S7856C5");
    test_class_info(&lv, &cd_S7856C5);
    dp->~S7856C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C5(Test_S7856C5, "S7856C5", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7856C5C1Ev();
extern void _ZN7S7856C5D2Ev();
Name_Map name_map_S7856C5[] = {
  NSPAIR(_ZN7S7856C5C1Ev),
  NSPAIR(_ZN7S7856C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static Base_Class bases_S7856C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    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
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C17_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C5[];
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C5[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C5[];
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__7S7856C5[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A1__7S7856C5[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A4__7S7856C5[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__7S7856C5[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__7S7856C5[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__7S7856C5[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C5[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C5[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C5[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C5[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C5[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C5[] = {
  {&(_ZTV7S7856C5[14]),  14,72},
  {&(_tg__ZTV8S7856C18__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A4__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__7S7856C5[6]),  6,6},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[43]),  43,72},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[33]),  33,72},
  {&(_ZTV7S7856C5[49]),  49,72},
  {&(_ZTV7S7856C5[57]),  57,72},
  {&(_ZTV7S7856C5[70]),  70,72},
  {&(_ZTV7S7856C5[70]),  70,72},
  {&(_ZTV7S7856C5[22]),  22,72},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C5[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C5[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C5[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C5[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C5[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C5[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C5[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C5[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C5 = {  "S7856C5", // class name
  bases_S7856C5, 36,
  &(vtc_S7856C5[0]), // expected_vtbl_contents
  &(vtt_S7856C5[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7856C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C5),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C5),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C19  : S7856C15 , virtual S77C13_nt , S7856C6 , virtual S7856C18 {
  virtual  ~S7856C19(); // _ZN8S7856C19D2Ev
  virtual void  v1(); // _ZN8S7856C192v1Ev
  S7856C19(); // tgen
};
//SIG(-1 S7856C19) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


 S7856C19 ::~S7856C19(){ note_dtor("S7856C19", this);}
void  S7856C19 ::v1(){vfunc_called(this, "_ZN8S7856C192v1Ev");}
S7856C19 ::S7856C19(){ note_ctor("S7856C19", this);} // tgen

static void Test_S7856C19()
{
  extern Class_Descriptor cd_S7856C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7856C19, buf);
    S7856C19 *dp, &lv = *(dp=new (buf) S7856C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7856C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C19)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(25,17), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C19");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C19");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(24,16), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(16,12), "S7856C19");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(16,12), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C19");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(32,20), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(56,32), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C19");
    /*is_ambiguous_... S7856C19::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(48,28), "S7856C19");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(48,28), "S7856C19");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(48,28), "S7856C19");
    check_base_class_offset(lv, (S7856C6*), 0, "S7856C19");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(72,40), "S7856C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(64,36), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(80,44), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(80,44), "S7856C19");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(88,48), "S7856C19");
    check_base_class_offset(lv, (S7856C18*), ABISELECT(64,36), "S7856C19");
    test_class_info(&lv, &cd_S7856C19);
    dp->~S7856C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C19(Test_S7856C19, "S7856C19", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S7856C19C1Ev();
extern void _ZN8S7856C19D2Ev();
Name_Map name_map_S7856C19[] = {
  NSPAIR(_ZN8S7856C19C1Ev),
  NSPAIR(_ZN8S7856C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
static Base_Class bases_S7856C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S77C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(80,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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C19[];
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C19D1Ev,_ZThn12_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn16_N8S7856C19D0Ev,_ZThn12_N8S7856C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn36_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn36_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C19[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern VTBL_ENTRY _ZTV8S7856C19[];
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C19[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C19[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C19[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C19[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C19[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C19[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C19[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C19[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A1__8S7856C19[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A4__8S7856C19[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C19[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C19[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__8S7856C19[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__8S7856C19[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__8S7856C19[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C19[] = {
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C19[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C19[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C19[8]),  8,10},
  {&(_ZTV8S7856C19[22]),  22,55},
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_ZTV8S7856C19[11]),  11,55},
  {&(_ZTV8S7856C19[28]),  28,55},
  {&(_ZTV8S7856C19[36]),  36,55},
  {&(_ZTV8S7856C19[47]),  47,55},
  {&(_ZTV8S7856C19[55]),  55,55},
  {&(_tg__ZTV7S7856C7__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C19[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C18__8S7856C19[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A4__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C19[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__8S7856C19[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C19[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__8S7856C19[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn36_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn36_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7856C19D0Ev,_ZThn12_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7856C19D1Ev,_ZThn12_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C19 = {  "S7856C19", // class name
  bases_S7856C19, 33,
  &(vtc_S7856C19[0]), // expected_vtbl_contents
  &(vtt_S7856C19[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S7856C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C19),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C19),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C4  : virtual S7856C5 , S77C13_nt , S7856C10 , S7856C19 {
  virtual  ~S7856C4(); // _ZN7S7856C4D2Ev
  S7856C4(); // tgen
};
//SIG(-1 S7856C4) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


 S7856C4 ::~S7856C4(){ note_dtor("S7856C4", this);}
S7856C4 ::S7856C4(){ note_ctor("S7856C4", this);} // tgen

static void Test_S7856C4()
{
  extern Class_Descriptor cd_S7856C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7856C4, buf);
    S7856C4 *dp, &lv = *(dp=new (buf) S7856C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7856C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C4)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(81,49), "S7856C4");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(81,49), "S7856C4");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(56,32), "S7856C4");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(80,48), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(72,44), "S7856C4");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*), ABISELECT(72,44), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(96,56), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(88,52), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(88,52), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*), ABISELECT(88,52), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(112,64), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(104,60), "S7856C4");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*), ABISELECT(104,60), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(104,60), "S7856C4");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,32), "S7856C4");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(120,68), "S7856C4");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(120,68), "S7856C4");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(120,68), "S7856C4");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(32,20), "S7856C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,24), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,24), "S7856C4");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C4");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(24,16), "S7856C4");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(24,16), "S7856C4");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), ABISELECT(8,4), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), 0, "S7856C4");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*), ABISELECT(8,4), "S7856C4");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*), ABISELECT(8,4), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(144,80), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(136,76), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(152,84), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(152,84), "S7856C4");
    /*is_ambiguous_... S7856C4::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(160,88), "S7856C4");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*), ABISELECT(136,76), "S7856C4");
    check_base_class_offset(lv, (S7856C19*), ABISELECT(8,4), "S7856C4");
    test_class_info(&lv, &cd_S7856C4);
    dp->~S7856C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C4(Test_S7856C4, "S7856C4", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S7856C4C1Ev();
extern void _ZN7S7856C4D2Ev();
Name_Map name_map_S7856C4[] = {
  NSPAIR(_ZN7S7856C4C1Ev),
  NSPAIR(_ZN7S7856C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
static Base_Class bases_S7856C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C10,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C4[];
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C4[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern VTBL_ENTRY _ZTV7S7856C4[];
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__7S7856C4[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C19__A1__7S7856C4[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C19__7S7856C4[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C19__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C19__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C19__7S7856C4[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C19__7S7856C4[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C19__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C4[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C4[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C4[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C4[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C4[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C4[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C4[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C4[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C4[] = {
  {&(_ZTV7S7856C4[16]),  16,122},
  {&(_tg__ZTV8S7856C10__A__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C19__7S7856C4[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C19__A1__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C19__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C19__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C19__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C19__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C19__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C19__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C19__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C19__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C19__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C19__7S7856C4[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C19__7S7856C4[6]),  6,6},
  {&(_ZTV7S7856C4[47]),  47,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[76]),  76,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[66]),  66,122},
  {&(_ZTV7S7856C4[82]),  82,122},
  {&(_ZTV7S7856C4[90]),  90,122},
  {&(_ZTV7S7856C4[103]),  103,122},
  {&(_ZTV7S7856C4[103]),  103,122},
  {&(_ZTV7S7856C4[55]),  55,122},
  {&(_ZTV7S7856C4[29]),  29,122},
  {&(_ZTV7S7856C4[114]),  114,122},
  {&(_ZTV7S7856C4[122]),  122,122},
  {&(_tg__ZTV7S7856C5__7S7856C4[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C4[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C4[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C4[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C4[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C4[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C4[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C4[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C4[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C4[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C4[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C4[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C4 = {  "S7856C4", // class name
  bases_S7856C4, 52,
  &(vtc_S7856C4[0]), // expected_vtbl_contents
  &(vtt_S7856C4[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S7856C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C4),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C4),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C21  : S7856C9_nt , S7856C17_nt {
  virtual  ~S7856C21(); // _ZN8S7856C21D2Ev
  S7856C21(); // tgen
};
//SIG(-1 S7856C21) C1{ BC2{ m} BC3{ VBC2} vd}


 S7856C21 ::~S7856C21(){ note_dtor("S7856C21", this);}
S7856C21 ::S7856C21(){ note_ctor("S7856C21", this);} // tgen

static void Test_S7856C21()
{
  extern Class_Descriptor cd_S7856C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7856C21, buf);
    S7856C21 *dp, &lv = *(dp=new (buf) S7856C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7856C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C21)");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(8,4), "S7856C21");
    check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C21");
    test_class_info(&lv, &cd_S7856C21);
    dp->~S7856C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C21(Test_S7856C21, "S7856C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7856C21C1Ev();
extern void _ZN8S7856C21D2Ev();
Name_Map name_map_S7856C21[] = {
  NSPAIR(_ZN8S7856C21C1Ev),
  NSPAIR(_ZN8S7856C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
static Base_Class bases_S7856C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C9_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, 1},
  {&cd_S7856C17_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},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C21[];
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY vtc_S7856C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
extern VTBL_ENTRY _ZTV8S7856C21[];
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C21[] = {
  {&(_ZTV8S7856C21[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt__8S7856C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
Class_Descriptor cd_S7856C21 = {  "S7856C21", // class name
  bases_S7856C21, 3,
  &(vtc_S7856C21[0]), // expected_vtbl_contents
  &(vtt_S7856C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7856C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C21),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  S7856C20  : S7856C17_nt , virtual S7856C12 , S7856C5 , S7856C21 {
  virtual  ~S7856C20(); // _ZN8S7856C20D2Ev
  S7856C20(); // tgen
};
//SIG(-1 S7856C20) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


 S7856C20 ::~S7856C20(){ note_dtor("S7856C20", this);}
S7856C20 ::S7856C20(){ note_ctor("S7856C20", this);} // tgen

static void Test_S7856C20()
{
  extern Class_Descriptor cd_S7856C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7856C20, buf);
    S7856C20 *dp, &lv = *(dp=new (buf) S7856C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7856C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C20)");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C20");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(48,24), "S7856C20");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(64,36), "S7856C20");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(88,48), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(80,44), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(80,44), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(80,44), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(104,56), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(96,52), "S7856C20");
    /*is_ambiguous_... S7856C20::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(96,52), "S7856C20");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(96,52), "S7856C20");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C20");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(48,24), "S7856C20");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C20");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(112,60), "S7856C20");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(112,60), "S7856C20");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(112,60), "S7856C20");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(16,8), "S7856C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C20");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C20");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C20");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(8,4), "S7856C20");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*), ABISELECT(40,20), "S7856C20");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*), ABISELECT(40,20), "S7856C20");
    check_base_class_offset(lv, (S7856C21*), ABISELECT(40,20), "S7856C20");
    test_class_info(&lv, &cd_S7856C20);
    dp->~S7856C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C20(Test_S7856C20, "S7856C20", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S7856C20C1Ev();
extern void _ZN8S7856C20D2Ev();
Name_Map name_map_S7856C20[] = {
  NSPAIR(_ZN8S7856C20C1Ev),
  NSPAIR(_ZN8S7856C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
static Base_Class bases_S7856C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C17_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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7856C17_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C20[];
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C20D1Ev,_ZThn24_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C20D0Ev,_ZThn24_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C20D1Ev,_ZThn36_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C20D0Ev,_ZThn36_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C20D1Ev,_ZThn52_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C20D0Ev,_ZThn52_N8S7856C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C20D1Ev,_ZThn60_N8S7856C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C20D0Ev,_ZThn60_N8S7856C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C20[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C20[];
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__A__8S7856C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C18D1Ev,_ZThn48_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C18D0Ev,_ZThn48_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7856C5D1Ev,_ZThn20_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7856C5D0Ev,_ZThn20_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C20[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn48_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn48_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C21__A2__8S7856C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C20[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C20[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__A1__8S7856C20[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C20[] = {
  {&(_ZTV8S7856C20[14]),  14,93},
  {&(_tg__ZTV11S7856C17_nt__A__8S7856C20[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C20[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C21__A2__8S7856C20[3]),  3,3},
  {&(_ZTV8S7856C20[30]),  30,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[64]),  64,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[54]),  54,93},
  {&(_ZTV8S7856C20[70]),  70,93},
  {&(_ZTV8S7856C20[78]),  78,93},
  {&(_ZTV8S7856C20[91]),  91,93},
  {&(_ZTV8S7856C20[91]),  91,93},
  {&(_ZTV8S7856C20[38]),  38,93},
  {&(_ZTV8S7856C20[41]),  41,93},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C20[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C20[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C20[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C20[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C20[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C20[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C20[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__A1__8S7856C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn48_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn48_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7856C5D0Ev,_ZThn20_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7856C5D1Ev,_ZThn20_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C18D0Ev,_ZThn48_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C18D1Ev,_ZThn48_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C20D0Ev,_ZThn52_N8S7856C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C20D0Ev,_ZThn36_N8S7856C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C20D1Ev,_ZThn52_N8S7856C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C20D1Ev,_ZThn36_N8S7856C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C20D0Ev,_ZThn60_N8S7856C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C20D0Ev,_ZThn24_N8S7856C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C20D1Ev,_ZThn60_N8S7856C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C20D1Ev,_ZThn24_N8S7856C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C20 = {  "S7856C20", // class name
  bases_S7856C20, 41,
  &(vtc_S7856C20[0]), // expected_vtbl_contents
  &(vtt_S7856C20[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S7856C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C20),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C20),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C22  : S7856C10 , virtual S7856C6 , S7856C5 , virtual S7856C4 {
  char s7856c22f0;
  virtual  ~S7856C22(); // _ZN8S7856C22D2Ev
  S7856C22(); // tgen
};
//SIG(-1 S7856C22) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


 S7856C22 ::~S7856C22(){ note_dtor("S7856C22", this);}
S7856C22 ::S7856C22(){ note_ctor("S7856C22", this);} // tgen

static void Test_S7856C22()
{
  extern Class_Descriptor cd_S7856C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7856C22, buf);
    S7856C22 *dp, &lv = *(dp=new (buf) S7856C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7856C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C22)");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C22");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(34,18), "S7856C22");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(34,18), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(40,20), "S7856C22");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(40,20), "S7856C22");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(56,32), "S7856C22");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(56,32), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(80,44), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(72,40), "S7856C22");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(72,40), "S7856C22");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(72,40), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(96,52), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(88,48), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(40,20), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C22");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(16,8), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*), ABISELECT(8,4), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(144,80), "S7856C22");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(144,80), "S7856C22");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(120,64), "S7856C22");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(120,64), "S7856C22");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(176,96), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(192,104), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(192,104), "S7856C22");
    /*is_ambiguous_... S7856C22::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(200,108), "S7856C22");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(176,96), "S7856C22");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C22");
    check_base_class_offset(lv, (S7856C4*), ABISELECT(120,64), "S7856C22");
    check_field_offset(lv, s7856c22f0, ABISELECT(33,17), "S7856C22.s7856c22f0");
    test_class_info(&lv, &cd_S7856C22);
    dp->~S7856C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C22(Test_S7856C22, "S7856C22", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN8S7856C22C1Ev();
extern void _ZN8S7856C22D2Ev();
Name_Map name_map_S7856C22[] = {
  NSPAIR(_ZN8S7856C22C1Ev),
  NSPAIR(_ZN8S7856C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
static Base_Class bases_S7856C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C10,    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
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7856C17_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    35, //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
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    42, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    47, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(128,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
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,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
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C22[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn32_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn32_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn80_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn80_N8S7856C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn176_N8S7856C22D1Ev,_ZThn96_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn176_N8S7856C22D0Ev,_ZThn96_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C22[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern VTBL_ENTRY _ZTV8S7856C22[];
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C22[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A2__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C22[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C22[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C22[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C22[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C22[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A4__8S7856C22[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C22[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C22[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C22[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C22[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C22[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C22[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C22[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C22[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A1__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C22[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A3__8S7856C22[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C22[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C22[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C22[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C22[] = {
  {&(_ZTV8S7856C22[17]),  17,165},
  {&(_tg__ZTV8S7856C10__A__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A__8S7856C22[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C22[6]),  6,6},
  {&(_ZTV8S7856C22[17]),  17,165},
  {&(_ZTV8S7856C22[52]),  52,165},
  {&(_ZTV8S7856C22[62]),  62,165},
  {&(_ZTV8S7856C22[52]),  52,165},
  {&(_ZTV8S7856C22[68]),  68,165},
  {&(_ZTV8S7856C22[76]),  76,165},
  {&(_ZTV8S7856C22[33]),  33,165},
  {&(_ZTV8S7856C22[89]),  89,165},
  {&(_ZTV8S7856C22[89]),  89,165},
  {&(_ZTV8S7856C22[41]),  41,165},
  {&(_ZTV8S7856C22[109]),  109,165},
  {&(_ZTV8S7856C22[140]),  140,165},
  {&(_ZTV8S7856C22[148]),  148,165},
  {&(_ZTV8S7856C22[122]),  122,165},
  {&(_ZTV8S7856C22[157]),  157,165},
  {&(_ZTV8S7856C22[165]),  165,165},
  {&(_tg__ZTV8S7856C11__8S7856C22[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C22[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C11__7S7856C6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C11__8S7856C16__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C22[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C22[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C22[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C22[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C22[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C22[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C22[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C22[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C22[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C22[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C22[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A3__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A2__8S7856C22[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A2__8S7856C22[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C22[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C22[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C22D0Ev,_ZThn96_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C22D1Ev,_ZThn96_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn80_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn80_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn32_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn32_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C22 = {  "S7856C22", // class name
  bases_S7856C22, 65,
  &(vtc_S7856C22[0]), // expected_vtbl_contents
  &(vtt_S7856C22[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI8S7856C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7856C22),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C22),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C24  {
  void  mf7856c24(); // _ZN8S7856C249mf7856c24Ev
};
//SIG(-1 S7856C24) C1{ m}


void  S7856C24 ::mf7856c24(){}

static void Test_S7856C24()
{
  {
    init_simple_test("S7856C24");
    S7856C24 lv;
    check2(sizeof(lv), 1, "sizeof(S7856C24)");
    check2(__alignof__(lv), 1, "__alignof__(S7856C24)");
  }
}
static Arrange_To_Call_Me vS7856C24(Test_S7856C24, "S7856C24", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S7856C24[];
VTBL_ENTRY *P__ZTI8S7856C24 = _ZTI8S7856C24; 
Class_Descriptor cd_S7856C24 = {  "S7856C24", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S7856C24),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  S7856C26  : virtual S7856C9_nt {
  ~S7856C26(); // tgen
  S7856C26(); // tgen
};
//SIG(-1 S7856C26) C1{ VBC2{ m}}


S7856C26 ::~S7856C26(){ note_dtor("S7856C26", this);} // tgen
S7856C26 ::S7856C26(){ note_ctor("S7856C26", this);} // tgen

static void Test_S7856C26()
{
  extern Class_Descriptor cd_S7856C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7856C26, buf);
    S7856C26 *dp, &lv = *(dp=new (buf) S7856C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7856C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C26)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C26");
    test_class_info(&lv, &cd_S7856C26);
    dp->~S7856C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C26(Test_S7856C26, "S7856C26", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7856C26C1Ev();
extern void _ZN8S7856C26D1Ev();
Name_Map name_map_S7856C26[] = {
  NSPAIR(_ZN8S7856C26C1Ev),
  NSPAIR(_ZN8S7856C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7856C26[];
static  VTBL_ENTRY vtc_S7856C26[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern VTBL_ENTRY _ZTV8S7856C26[];
static  VTT_ENTRY vtt_S7856C26[] = {
  {&(_ZTV8S7856C26[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
Class_Descriptor cd_S7856C26 = {  "S7856C26", // class name
  bases_S7856C26, 1,
  &(vtc_S7856C26[0]), // expected_vtbl_contents
  &(vtt_S7856C26[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7856C26),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7856C26),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C26),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  S7856C29  : virtual S7856C7 , virtual S7856C5 {
  virtual  ~S7856C29(); // _ZN8S7856C29D2Ev
  S7856C29(); // tgen
};
//SIG(-1 S7856C29) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S7856C29 ::~S7856C29(){ note_dtor("S7856C29", this);}
S7856C29 ::S7856C29(){ note_ctor("S7856C29", this);} // tgen

static void Test_S7856C29()
{
  extern Class_Descriptor cd_S7856C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S7856C29, buf);
    S7856C29 *dp, &lv = *(dp=new (buf) S7856C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S7856C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C29)");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(17,9), "S7856C29");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(17,9), "S7856C29");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(17,9), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C29");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), 0, "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), 0, "S7856C29");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(16,8), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(8,4), "S7856C29");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(8,4), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(80,44), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(72,40), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(72,40), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(72,40), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(96,52), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C29");
    /*is_ambiguous_... S7856C29::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(88,48), "S7856C29");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(88,48), "S7856C29");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C29");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,28), "S7856C29");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C29");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(104,56), "S7856C29");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(104,56), "S7856C29");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(104,56), "S7856C29");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(32,16), "S7856C29");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,20), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(40,20), "S7856C29");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C29");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(24,12), "S7856C29");
    check_base_class_offset(lv, (S7856C5*), ABISELECT(24,12), "S7856C29");
    test_class_info(&lv, &cd_S7856C29);
    dp->~S7856C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C29(Test_S7856C29, "S7856C29", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S7856C29C1Ev();
extern void _ZN8S7856C29D2Ev();
Name_Map name_map_S7856C29[] = {
  NSPAIR(_ZN8S7856C29C1Ev),
  NSPAIR(_ZN8S7856C29D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static Base_Class bases_S7856C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C29[];
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C29D1Ev,_ZThn56_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C29D0Ev,_ZThn56_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C29[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C29[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C29[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C29[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C29[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C29[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C29[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C29[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C29[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C29[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C29[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C29[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C29[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C29[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C29[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C29[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C29[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C29[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C29[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C29[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C29[] = {
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[25]),  25,90},
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[15]),  15,90},
  {&(_ZTV8S7856C29[42]),  42,90},
  {&(_ZTV8S7856C29[61]),  61,90},
  {&(_ZTV8S7856C29[67]),  67,90},
  {&(_ZTV8S7856C29[75]),  75,90},
  {&(_ZTV8S7856C29[88]),  88,90},
  {&(_ZTV8S7856C29[88]),  88,90},
  {&(_ZTV8S7856C29[50]),  50,90},
  {&(_tg__ZTV7S7856C7__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C29[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C29[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C29[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C29[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C29[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C29[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C29[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C29[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C29[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C29[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C29[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C29[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C29[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C29D0Ev,_ZThn56_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C29D1Ev,_ZThn56_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C29 = {  "S7856C29", // class name
  bases_S7856C29, 37,
  &(vtc_S7856C29[0]), // expected_vtbl_contents
  &(vtt_S7856C29[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S7856C29),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C29),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C29),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C28  : S7856C7 , virtual S7856C14 , virtual S7856C29 , S7856C21 , S7856C24 {
  int s7856c28f0;
  ~S7856C28(); // tgen
  S7856C28(); // tgen
};
//SIG(-1 S7856C28) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S7856C28 ::~S7856C28(){ note_dtor("S7856C28", this);} // tgen
S7856C28 ::S7856C28(){ note_ctor("S7856C28", this);} // tgen

static void Test_S7856C28()
{
  extern Class_Descriptor cd_S7856C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S7856C28, buf);
    S7856C28 *dp, &lv = *(dp=new (buf) S7856C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S7856C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C28)");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C28");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(28,16), "S7856C28");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(28,16), "S7856C28");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(28,16), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(8,4), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*), 0, "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(40,24), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*), ABISELECT(32,20), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(32,20), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(32,20), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(56,32), "S7856C28");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(56,32), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(128,72), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(120,68), "S7856C28");
    /*is_ambiguous_... S7856C28::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(120,68), "S7856C28");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(120,68), "S7856C28");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(120,68), "S7856C28");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(104,56), "S7856C28");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C28");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(136,76), "S7856C28");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(136,76), "S7856C28");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(136,76), "S7856C28");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C28");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C28");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C28");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(72,40), "S7856C28");
    check_base_class_offset(lv, (S7856C29*), ABISELECT(48,28), "S7856C28");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C21*), ABISELECT(16,8), "S7856C28");
    check_base_class_offset(lv, (S7856C24*), 0, "S7856C28");
    check_field_offset(lv, s7856c28f0, ABISELECT(24,12), "S7856C28.s7856c28f0");
    test_class_info(&lv, &cd_S7856C28);
    dp->~S7856C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C28(Test_S7856C28, "S7856C28", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S7856C28C1Ev();
extern void _ZN8S7856C28D1Ev();
Name_Map name_map_S7856C28[] = {
  NSPAIR(_ZN8S7856C28C1Ev),
  NSPAIR(_ZN8S7856C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    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
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7856C29,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S7856C28[];
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C28D1Ev,_ZThn32_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C28D0Ev,_ZThn32_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C28[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C28[];
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A__8S7856C28[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C28[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C28[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C21__A1__8S7856C28[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C28[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C28[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C28[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C28[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C28[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C28[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C28[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C28[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C28[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C28[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C28[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C28[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C28[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C28[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C28[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C28[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C28[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C28[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C28[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C28[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C28[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C28[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C28[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C28[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C28[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C28[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTT_ENTRY vtt_S7856C28[] = {
  {&(_ZTV8S7856C28[16]),  16,114},
  {&(_tg__ZTV7S7856C7__A__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C28[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C21__A1__8S7856C28[3]),  3,3},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[27]),  27,114},
  {&(_ZTV8S7856C28[43]),  43,114},
  {&(_ZTV8S7856C28[53]),  53,114},
  {&(_ZTV8S7856C28[70]),  70,114},
  {&(_ZTV8S7856C28[89]),  89,114},
  {&(_ZTV8S7856C28[99]),  99,114},
  {&(_ZTV8S7856C28[112]),  112,114},
  {&(_ZTV8S7856C28[112]),  112,114},
  {&(_ZTV8S7856C28[78]),  78,114},
  {&(_ZTV8S7856C28[21]),  21,114},
  {&(_tg__ZTV8S7856C10__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C28[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C7__A1__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C5__8S7856C28[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C28[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C28[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C28[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C28[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C28[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C28[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C28[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C28[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C28[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C28[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C28[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C28[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D0Ev,_ZThn48_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn28_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C29D1Ev,_ZThn48_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn28_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D0Ev,_ZThn12_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7856C29D1Ev,_ZThn12_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C28D0Ev,_ZThn32_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C28D1Ev,_ZThn32_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C28 = {  "S7856C28", // class name
  bases_S7856C28, 48,
  &(vtc_S7856C28[0]), // expected_vtbl_contents
  &(vtt_S7856C28[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S7856C28),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C28),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C28),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C27  : S7856C16 , S7856C28 , virtual S7856C24 {
  ~S7856C27(); // tgen
  S7856C27(); // tgen
};
//SIG(-1 S7856C27) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC12{ BC9 VBC8 VBC13{ VBC9 VBC14{ VBC15{ VBC9 VBC8 VBC11 vd Fi[2]} VBC16{ m} VBC2 BC17{ VBC11 BC8 BC10 BC6 vd} vd} vd} BC18{ BC5 BC7 vd} BC19{ m} Fi} VBC19}


S7856C27 ::~S7856C27(){ note_dtor("S7856C27", this);} // tgen
S7856C27 ::S7856C27(){ note_ctor("S7856C27", this);} // tgen

static void Test_S7856C27()
{
  extern Class_Descriptor cd_S7856C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7856C27, buf);
    S7856C27 *dp, &lv = *(dp=new (buf) S7856C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7856C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C27)");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C27");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), ABISELECT(44,24), "S7856C27");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(44,24), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C27");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(56,32), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*), ABISELECT(48,28), "S7856C27");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(48,28), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C27");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(64,36), "S7856C27");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(64,36), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*), 0, "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(24,12), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(144,80), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(136,76), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(136,76), "S7856C27");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(136,76), "S7856C27");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(136,76), "S7856C27");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(120,64), "S7856C27");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(152,84), "S7856C27");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(152,84), "S7856C27");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C27");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C27");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C27");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(88,48), "S7856C27");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*), ABISELECT(80,44), "S7856C27");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*), ABISELECT(32,16), "S7856C27");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*), ABISELECT(16,8), "S7856C27");
    check_base_class_offset(lv, (S7856C28*), ABISELECT(16,8), "S7856C27");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7856C27");
    test_class_info(&lv, &cd_S7856C27);
    dp->~S7856C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C27(Test_S7856C27, "S7856C27", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S7856C27C1Ev();
extern void _ZN8S7856C27D1Ev();
Name_Map name_map_S7856C27[] = {
  NSPAIR(_ZN8S7856C27C1Ev),
  NSPAIR(_ZN8S7856C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    ABISELECT(80,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
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(80,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_S7856C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(64,36), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C16,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    24, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    29, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(136,76), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(120,64), //bcp->offset
    97, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7856C12,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(152,84), //bcp->offset
    120, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    38, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(104,56), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(88,48), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S7856C29,    ABISELECT(80,44), //bcp->offset
    56, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(32,16), //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
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(32,16), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    50, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7856C27[];
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C27D1Ev,_ZThn36_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C27D0Ev,_ZThn36_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C27D1Ev,_ZThn44_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C27D0Ev,_ZThn44_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn88_N8S7856C27D1Ev,_ZThn48_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn88_N8S7856C27D0Ev,_ZThn48_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C27D1Ev,_ZThn64_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C27D0Ev,_ZThn64_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C27D1Ev,_ZThn76_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C27D0Ev,_ZThn76_N8S7856C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C27D1Ev,_ZThn84_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C27D0Ev,_ZThn84_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C27[] = {
  0,
  ABISELECT(152,84),
  0,
  ABISELECT(136,76),
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  ABISELECT(-120,-64),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C27[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A__8S7856C27[] = {
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__A__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C16D1Ev,_ZThn36_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C16D0Ev,_ZThn36_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__A__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C28__A3__8S7856C27[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C28__A1__8S7856C27[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C28D1Ev,_ZThn36_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C28D0Ev,_ZThn36_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C28__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C28__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C28__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C28__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C28__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C28__8S7856C27[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C28__8S7856C27[] = {
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C28__8S7856C27[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C28__8S7856C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C27[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C27[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C27[] = {
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27[] = {
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C27[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C27[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C29D1Ev,_ZThn20_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C29D0Ev,_ZThn20_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C27[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn32_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn32_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C27[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C29__8S7856C27[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27[] = {
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C27[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C27[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C27[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C27[] = {
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C5__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C27[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C27[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C5__8S7856C27[] = {
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C27[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C27[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C6__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C27[] = {
  ABISELECT(-16,-12),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27[] = {
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C27[] = {
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C16__A1__8S7856C27[] = {
  0,
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__A1__8S7856C27[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__A1__8S7856C27[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTT_ENTRY vtt_S7856C27[] = {
  {&(_ZTV8S7856C27[17]),  17,133},
  {&(_tg__ZTV8S7856C16__A__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C16__A__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__A__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__A__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__A__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C28__A1__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C28__A1__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C28__A3__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C28__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C28__A1__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV8S7856C14__8S7856C28__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C28__8S7856C27[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C28__8S7856C27[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C28__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C28__8S7856C27[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C28__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C28__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__8S7856C28__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C28__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C28__8S7856C27[3]),  3,5},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[17]),  17,133},
  {&(_ZTV8S7856C27[46]),  46,133},
  {&(_ZTV8S7856C27[54]),  54,133},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[35]),  35,133},
  {&(_ZTV8S7856C27[72]),  72,133},
  {&(_ZTV8S7856C27[89]),  89,133},
  {&(_ZTV8S7856C27[108]),  108,133},
  {&(_ZTV8S7856C27[118]),  118,133},
  {&(_ZTV8S7856C27[131]),  131,133},
  {&(_ZTV8S7856C27[97]),  97,133},
  {&(_ZTV8S7856C27[40]),  40,133},
  {&(_tg__ZTV8S7856C11__8S7856C27[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C27[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C27[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__8S7856C29__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C5__8S7856C27[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C27[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C27[11]),  11,13},
  {&(_tg__ZTV11S7856C17_nt__7S7856C5__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C27[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C27[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C6__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C27[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C27[6]),  6,6},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C16__A1__8S7856C27[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C16__A1__8S7856C27[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__A1__8S7856C27[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__A1__8S7856C27[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D0Ev,_ZThn28_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C18D1Ev,_ZThn28_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D0Ev,_ZThn32_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C29D1Ev,_ZThn32_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D0Ev,_ZThn40_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C29D0Ev,_ZThn20_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C29D1Ev,_ZThn40_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C29D1Ev,_ZThn20_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D0Ev,_ZThn4_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7856C29D1Ev,_ZThn4_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D0Ev,_ZThn76_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D0Ev,_ZThn56_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C28D1Ev,_ZThn76_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C28D1Ev,_ZThn56_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D0Ev,_ZThn40_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C28D1Ev,_ZThn40_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D0Ev,_ZThn68_N8S7856C28D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D0Ev,_ZThn28_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C28D1Ev,_ZThn68_N8S7856C28D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C28D1Ev,_ZThn28_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C28D0Ev,_ZThn36_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C28D1Ev,_ZThn36_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C16D0Ev,_ZThn36_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C16D1Ev,_ZThn36_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C27D0Ev,_ZThn84_N8S7856C27D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C27D0Ev,_ZThn64_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C27D1Ev,_ZThn84_N8S7856C27D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C27D1Ev,_ZThn64_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C27D0Ev,_ZThn48_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7856C27D1Ev,_ZThn48_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C27D0Ev,_ZThn44_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C27D1Ev,_ZThn44_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C27D0Ev,_ZThn76_N8S7856C27D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C27D0Ev,_ZThn36_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C27D1Ev,_ZThn76_N8S7856C27D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C27D1Ev,_ZThn36_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C27 = {  "S7856C27", // class name
  bases_S7856C27, 52,
  &(vtc_S7856C27[0]), // expected_vtbl_contents
  &(vtt_S7856C27[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S7856C27),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C27),133, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C27),101, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C25  : S7856C13 , S7856C26 , S7856C4 , virtual S7856C27 , S7856C5 {
  ~S7856C25(); // tgen
  S7856C25(); // tgen
};
//SIG(-1 S7856C25) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ VBC3} BC9{ VBC10{ VBC11{ VBC12{ VBC4 VBC3 VBC7 BC5 BC2 vd} VBC13{ BC5 BC3 BC6 Fi} VBC2 vd Fi[2]} VBC14{ m} VBC15{ VBC6 VBC16{ VBC3} VBC13 BC5 VBC12 vd Fi} BC17{ VBC2 BC13 BC7 BC5 vd} vd} BC4 BC7 BC18{ BC14 VBC4 BC11 VBC17 vd v1} vd} VBC19{ BC15 BC20{ BC12 VBC13 VBC21{ VBC12 VBC10 vd} BC22{ BC3 BC16 vd} BC23{ m} Fi} VBC23} BC10}


S7856C25 ::~S7856C25(){ note_dtor("S7856C25", this);} // tgen
S7856C25 ::S7856C25(){ note_ctor("S7856C25", this);} // tgen

static void Test_S7856C25()
{
  extern Class_Descriptor cd_S7856C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,38)];
    init_test(&cd_S7856C25, buf);
    S7856C25 *dp, &lv = *(dp=new (buf) S7856C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,148), "sizeof(S7856C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C25)");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(8,4), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(73,41), "S7856C25");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(73,41), "S7856C25");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(73,41), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), 0, "S7856C25");
    check_base_class_offset(lv, (S7856C26*), ABISELECT(16,8), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(136,76), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(128,72), "S7856C25");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(128,72), "S7856C25");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(128,72), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(152,84), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(144,80), "S7856C25");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(144,80), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(168,92), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(112,60), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(176,96), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C25");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(80,44), "S7856C25");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(80,44), "S7856C25");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(24,12), "S7856C25");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(24,12), "S7856C25");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(200,108), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(216,116), "S7856C25");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(192,104), "S7856C25");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(32,16), "S7856C25");
    check_base_class_offset(lv, (S7856C4*), ABISELECT(24,12), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(248,132), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(272,144), "S7856C25");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(256,136), "S7856C25");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(240,128), "S7856C25");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C25");
    check_base_class_offset(lv, (S7856C27*), ABISELECT(224,120), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(56,32), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(64,36), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(64,36), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(48,28), "S7856C25");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*), ABISELECT(48,28), "S7856C25");
    test_class_info(&lv, &cd_S7856C25);
    dp->~S7856C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C25(Test_S7856C25, "S7856C25", ABISELECT(280,148));

#else // __cplusplus

extern void _ZN8S7856C25C1Ev();
extern void _ZN8S7856C25D1Ev();
Name_Map name_map_S7856C25[] = {
  NSPAIR(_ZN8S7856C25C1Ev),
  NSPAIR(_ZN8S7856C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
static Base_Class bases_S7856C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    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
    31, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C10,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    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
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C26,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(128,72), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(144,80), //bcp->offset
    124, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(160,88), //bcp->offset
    128, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(112,60), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C17_nt,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(176,96), //bcp->offset
    138, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(96,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
    38, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(96,52), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(80,44), //bcp->offset
    78, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C10,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    56, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    50, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(208,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
    53, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(208,112), //bcp->offset
    162, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    55, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(192,104), //bcp->offset
    151, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(32,16), //bcp->offset
    42, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    59, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    65, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,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
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    63, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(272,144), //bcp->offset
    211, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    71, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    69, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(256,136), //bcp->offset
    206, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    71, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(240,128), //bcp->offset
    188, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 1},
  {&cd_S7856C27,    ABISELECT(224,120), //bcp->offset
    168, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    80, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,36), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    82, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(48,28), //bcp->offset
    56, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C25[];
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C25D1Ev,_ZThn44_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C25D0Ev,_ZThn44_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C25D1Ev,_ZThn60_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C25D0Ev,_ZThn60_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C25D1Ev,_ZThn88_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C25D0Ev,_ZThn88_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn176_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn176_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C25D1Ev,_ZThn104_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C25D0Ev,_ZThn104_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn224_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn224_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn272_N8S7856C25D1Ev,_ZThn144_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn272_N8S7856C25D0Ev,_ZThn144_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C25[] = {
  0,
  ABISELECT(272,144),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(73,41),
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
  ABISELECT(57,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(168,92),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-24,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(104,60),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(64,32),
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-80,-44),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-160,-88),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
  ABISELECT(-192,-104),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
  ABISELECT(-183,-95),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
  ABISELECT(-272,-144),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern VTBL_ENTRY _ZTV8S7856C25[];
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C25[] = {
  ABISELECT(73,41),
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C25[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C25[] = {
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C25[] = {
  ABISELECT(168,92),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-24,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(104,60),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__8S7856C25[] = {
  ABISELECT(49,29),
  ABISELECT(88,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-96,-56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C6D1Ev,_ZThn72_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C6D0Ev,_ZThn72_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-96,-56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C19D1Ev,_ZThn88_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C19D0Ev,_ZThn88_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-160,-88),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C25[] = {
  ABISELECT(-56,-32),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C4D1Ev,_ZThn48_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C4D0Ev,_ZThn48_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C25[] = {
  ABISELECT(-88,-48),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C25[] = {
  ABISELECT(-104,-60),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-136,-76),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C4D1Ev,_ZThn84_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C4D0Ev,_ZThn84_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C25[] = {
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C25[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(41,25),
  ABISELECT(80,44),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C4D1Ev,_ZThn92_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C4D0Ev,_ZThn92_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C25[] = {
  ABISELECT(-168,-92),
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C25[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(64,32),
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(25,13),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A8__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C18D1Ev,_ZThn60_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C18D0Ev,_ZThn60_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C5D1Ev,_ZThn68_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C5D0Ev,_ZThn68_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[] = {
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C25[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C25[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C25[] = {
  ABISELECT(-80,-44),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C25[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C25[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C25[] = {
  ABISELECT(-16,-12),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C25[] = {
  ABISELECT(-48,-28),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C25[] = {
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C25[] = {
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C25[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A3__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C25[] = {
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C25[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C25[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C25[] = {
  ABISELECT(48,24),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C25[] = {
  ABISELECT(-103,-55),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-119,-63),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__8S7856C25[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C25[] = {
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(32,16),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C25[] = {
  ABISELECT(-135,-71),
  ABISELECT(-96,-52),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C25[] = {
  ABISELECT(-224,-120),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-112,-60),
  ABISELECT(-96,-48),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-151,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-103,-55),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[] = {
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C25[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C25[] = {
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(128,68),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(112,56),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(80,40),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(64,32),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__8S7856C25[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__8S7856C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-128),
  ABISELECT(-80,-40),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(32,16),
  ABISELECT(-96,-48),
  ABISELECT(-167,-87),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__8S7856C25[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__8S7856C25[] = {
  ABISELECT(144,76),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__8S7856C25[] = {
  ABISELECT(64,32),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C25[] = {
  ABISELECT(-183,-95),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C25[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-272,-144),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-160,-84),
  ABISELECT(-144,-72),
  ABISELECT(-199,-103),
  ABISELECT(-160,-84),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C25[] = {
  ABISELECT(144,72),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C25[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-39,-19),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C25[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C25[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C25[] = {
  ABISELECT(112,56),
  ABISELECT(-87,-47),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C25[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-64,-36),
  ABISELECT(-103,-55),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C25[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,8),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
static  VTT_ENTRY vtt_S7856C25[] = {
  {&(_ZTV8S7856C25[19]),  19,229},
  {&(_tg__ZTV8S7856C13__A__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C26__8S7856C25[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C25[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C25[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C25[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C25[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C25[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A__8S7856C25[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A2__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A8__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__A__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A__8S7856C25[6]),  6,6},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[24]),  24,229},
  {&(_ZTV8S7856C25[40]),  40,229},
  {&(_ZTV8S7856C25[93]),  93,229},
  {&(_ZTV8S7856C25[112]),  112,229},
  {&(_ZTV8S7856C25[122]),  122,229},
  {&(_ZTV8S7856C25[128]),  128,229},
  {&(_ZTV8S7856C25[136]),  136,229},
  {&(_ZTV8S7856C25[149]),  149,229},
  {&(_ZTV8S7856C25[149]),  149,229},
  {&(_ZTV8S7856C25[101]),  101,229},
  {&(_ZTV8S7856C25[53]),  53,229},
  {&(_ZTV8S7856C25[160]),  160,229},
  {&(_ZTV8S7856C25[168]),  168,229},
  {&(_ZTV8S7856C25[186]),  186,229},
  {&(_ZTV8S7856C25[204]),  204,229},
  {&(_ZTV8S7856C25[227]),  227,229},
  {&(_ZTV8S7856C25[209]),  209,229},
  {&(_ZTV8S7856C25[70]),  70,229},
  {&(_ZTV8S7856C25[78]),  78,229},
  {&(_tg__ZTV8S7856C10__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C25[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C25[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C25[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C25[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C25[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__8S7856C25[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C25[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C25[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__8S7856C25[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__8S7856C25[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C25[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C25[3]),  3,5},
  {&(_tg__ZTV8S7856C29__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C25[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C25[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C25[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C25[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C25[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C25[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C5D0Ev,_ZThn68_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn32_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C5D1Ev,_ZThn68_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn32_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C18D0Ev,_ZThn60_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C18D1Ev,_ZThn60_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C4D0Ev,_ZThn92_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C4D1Ev,_ZThn92_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C4D0Ev,_ZThn84_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C4D0Ev,_ZThn48_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C4D1Ev,_ZThn84_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C4D1Ev,_ZThn48_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C19D0Ev,_ZThn88_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C19D1Ev,_ZThn88_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C6D0Ev,_ZThn72_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C6D1Ev,_ZThn72_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7856C25D0Ev,_ZThn144_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7856C25D1Ev,_ZThn144_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C25D0Ev,_ZThn104_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C25D1Ev,_ZThn104_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C25D0Ev,_ZThn88_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C25D1Ev,_ZThn88_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C25D0Ev,_ZThn60_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C25D1Ev,_ZThn60_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C25D0Ev,_ZThn44_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C25D1Ev,_ZThn44_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C25 = {  "S7856C25", // class name
  bases_S7856C25, 84,
  &(vtc_S7856C25[0]), // expected_vtbl_contents
  &(vtt_S7856C25[0]), // expected_vtt_contents
  ABISELECT(280,148), // object size
  NSPAIRA(_ZTI8S7856C25),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C25),229, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C25),186, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C23  : virtual S7856C14 , virtual S7856C24 , S7856C25 , S7856C13 , virtual S7856C22 {
  ::S7856C13 s7856c23f0;
  int s7856c23f1:26;
  ~S7856C23(); // tgen
  S7856C23(); // tgen
};
//SIG(-1 S7856C23) C1{ VBC2{ BC3{ m} BC4{ m} BC5{ VBC6{ m} BC4 VBC3} Fi} VBC7{ m} BC8{ BC9{ BC4 VBC6 VBC3 BC5 VBC10{ BC6 VBC5 VBC4} vd} BC11{ VBC4} BC12{ VBC13{ VBC14{ VBC15{ VBC6 VBC4 VBC10 BC3 BC9 vd} VBC2 VBC9 vd Fi[2]} VBC16{ m} VBC17{ VBC5 VBC18{ VBC4} VBC2 BC3 VBC15 vd Fi} BC19{ VBC9 BC2 BC10 BC3 vd} vd} BC6 BC10 BC20{ BC16 VBC6 BC14 VBC19 vd v1} vd} VBC21{ BC17 BC22{ BC15 VBC2 VBC23{ VBC15 VBC13 vd} BC24{ BC4 BC18 vd} BC7 Fi} VBC7} BC13} BC9 VBC25{ BC10 VBC14 BC13 VBC12 vd Fc} FC9 Fi:26}


S7856C23 ::~S7856C23(){ note_dtor("S7856C23", this);} // tgen
S7856C23 ::S7856C23(){ note_ctor("S7856C23", this);} // tgen

static void Test_S7856C23()
{
  extern Class_Descriptor cd_S7856C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,55)];
    init_test(&cd_S7856C23, buf);
    S7856C23 *dp, &lv = *(dp=new (buf) S7856C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,216), "sizeof(S7856C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C23)");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(144,76), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(136,72), "S7856C23");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(136,72), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*), ABISELECT(8,4), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(148,80), "S7856C23");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(148,80), "S7856C23");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(148,80), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*), 0, "S7856C23");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*), ABISELECT(16,8), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(208,116), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(200,112), "S7856C23");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(200,112), "S7856C23");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(200,112), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(224,124), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(216,120), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(184,100), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(232,128), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C23");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*), ABISELECT(152,84), "S7856C23");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(152,84), "S7856C23");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(256,140), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(264,144), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(264,144), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(272,148), "S7856C23");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(248,136), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(248,136), "S7856C23");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*), ABISELECT(32,16), "S7856C23");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*), ABISELECT(24,12), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(304,164), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(328,176), "S7856C23");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(312,168), "S7856C23");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(296,160), "S7856C23");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*), ABISELECT(280,152), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(56,32), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(64,36), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(64,36), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(72,40), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*), ABISELECT(48,28), "S7856C23");
    check_base_class_offset(lv, (S7856C25*), 0, "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,48), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*), ABISELECT(80,44), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(352,188), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(360,192), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(360,192), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(368,196), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(376,200), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(376,200), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    /*is_ambiguous_... S7856C23::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(384,204), "S7856C23");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(376,200), "S7856C23");
    check_base_class_offset(lv, (S7856C22*), ABISELECT(336,180), "S7856C23");
    check_field_offset(lv, s7856c23f0, ABISELECT(96,52), "S7856C23.s7856c23f0");
    set_bf_and_test(lv, s7856c23f1, ABISELECT(128,68), 0, 26, 1, "S7856C23");
    set_bf_and_test(lv, s7856c23f1, ABISELECT(128,68), 0, 26, hide_sll(1LL<<25), "S7856C23");
    test_class_info(&lv, &cd_S7856C23);
    dp->~S7856C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C23(Test_S7856C23, "S7856C23", ABISELECT(400,216));

#else // __cplusplus

extern void _ZN8S7856C23C1Ev();
extern void _ZN8S7856C23D1Ev();
Name_Map name_map_S7856C23[] = {
  NSPAIR(_ZN8S7856C23C1Ev),
  NSPAIR(_ZN8S7856C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static Base_Class bases_S7856C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,72), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(148,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
    15, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7856C13,    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
    43, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(208,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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(200,112), //bcp->offset
    129, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(224,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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(216,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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(216,120), //bcp->offset
    139, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(184,100), //bcp->offset
    116, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(232,128), //bcp->offset
    149, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(168,92), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    41, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(152,84), //bcp->offset
    93, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    57, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,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
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,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
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(264,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
    54, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(264,144), //bcp->offset
    173, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,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
    56, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(248,136), //bcp->offset
    162, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(32,16), //bcp->offset
    44, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(24,12), //bcp->offset
    26, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(280,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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(280,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(296,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
    66, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(304,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
    65, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(296,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
    64, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(296,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(328,176), //bcp->offset
    222, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(312,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
    70, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(312,168), //bcp->offset
    217, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(296,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
    72, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(296,160), //bcp->offset
    199, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(280,152), //bcp->offset
    179, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    84, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    80, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,36), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    82, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(48,28), //bcp->offset
    58, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_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
    88, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    87, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(80,44), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    ABISELECT(336,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
    90, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(344,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
    95, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,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
    95, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,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
    94, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    225, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    224, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    97, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(360,192), //bcp->offset
    276, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(368,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
    99, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    223, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(344,184), //bcp->offset
    260, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    222, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(384,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
    107, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    103, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(376,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(384,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
    106, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(384,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    261, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(384,204), //bcp->offset
    302, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    260, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(376,200), //bcp->offset
    282, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    257, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C22,    ABISELECT(336,180), //bcp->offset
    240, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    219, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C23[];
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C23D1Ev,_ZThn84_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C23D0Ev,_ZThn84_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn200_N8S7856C23D1Ev,_ZThn112_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn200_N8S7856C23D0Ev,_ZThn112_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C23D1Ev,_ZThn120_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C23D0Ev,_ZThn120_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn232_N8S7856C23D1Ev,_ZThn128_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn232_N8S7856C23D0Ev,_ZThn128_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn248_N8S7856C23D1Ev,_ZThn136_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn248_N8S7856C23D0Ev,_ZThn136_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn280_N8S7856C23D1Ev,_ZThn152_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn280_N8S7856C23D0Ev,_ZThn152_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn328_N8S7856C23D1Ev,_ZThn176_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn328_N8S7856C23D0Ev,_ZThn176_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn336_N8S7856C23D1Ev,_ZThn180_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn336_N8S7856C23D0Ev,_ZThn180_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn376_N8S7856C23D1Ev,_ZThn200_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn376_N8S7856C23D0Ev,_ZThn200_N8S7856C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY vtc_S7856C23[] = {
  ABISELECT(376,200),
  ABISELECT(336,180),
  0,
  ABISELECT(328,176),
  ABISELECT(280,152),
  ABISELECT(248,136),
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(136,72),
  ABISELECT(200,112),
  ABISELECT(184,100),
  ABISELECT(152,84),
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
  ABISELECT(132,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(68,36),
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-152,-84),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
  ABISELECT(-216,-120),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
  ABISELECT(-248,-136),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
  ABISELECT(-164,-88),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
  ABISELECT(-336,-180),
  ABISELECT(-88,-44),
  ABISELECT(-184,-96),
  ABISELECT(40,20),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-336,-180),
  ABISELECT(-120,-60),
  ABISELECT(-200,-108),
  ABISELECT(-152,-80),
  ABISELECT(-136,-68),
  ABISELECT(-152,-80),
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  ABISELECT(8,4),
  ABISELECT(-376,-200),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern VTBL_ENTRY _ZTV8S7856C23[];
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C25__8S7856C23[] = {
  0,
  ABISELECT(328,176),
  ABISELECT(280,152),
  ABISELECT(248,136),
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  ABISELECT(216,120),
  ABISELECT(136,72),
  ABISELECT(200,112),
  ABISELECT(184,100),
  ABISELECT(152,84),
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C25__8S7856C23[] = {
  ABISELECT(148,80),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C25__A1__8S7856C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23[] = {
  ABISELECT(132,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C25__A2__8S7856C23[] = {
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C25__A2__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C6D1Ev,_ZThn96_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C6D0Ev,_ZThn96_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-168,-96),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C6D1Ev,_ZThn104_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C6D0Ev,_ZThn104_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[] = {
  ABISELECT(-184,-104),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C19D1Ev,_ZThn96_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C19D0Ev,_ZThn96_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-168,-96),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C19D1Ev,_ZThn104_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C19D0Ev,_ZThn104_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-184,-104),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C19D1Ev,_ZThn120_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C19D0Ev,_ZThn120_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S7856C4D1Ev,_ZThn72_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S7856C4D0Ev,_ZThn72_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-128,-72),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C4D1Ev,_ZThn88_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C4D0Ev,_ZThn88_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-160,-88),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7856C4D1Ev,_ZThn100_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7856C4D0Ev,_ZThn100_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S7856C4D1Ev,_ZThn108_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S7856C4D0Ev,_ZThn108_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-192,-108),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7856C4D1Ev,_ZThn116_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7856C4D0Ev,_ZThn116_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-208,-116),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn224_N7S7856C4D1Ev,_ZThn124_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn224_N7S7856C4D0Ev,_ZThn124_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-224,-124),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C25__A3__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C25__A8__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C18D1Ev,_ZThn92_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C18D0Ev,_ZThn92_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(-168,-92),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C25__A2__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C5D1Ev,_ZThn84_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C5D0Ev,_ZThn84_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C5D1Ev,_ZThn92_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C5D0Ev,_ZThn92_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-168,-92),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C5D1Ev,_ZThn100_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C5D0Ev,_ZThn100_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C25__A1__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn100_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn100_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C25__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C25__8S7856C23[] = {
  ABISELECT(132,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C25__8S7856C23[] = {
  ABISELECT(224,124),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-24,-12),
  ABISELECT(192,108),
  ABISELECT(112,60),
  ABISELECT(160,88),
  ABISELECT(176,100),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(160,88),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C25D1Ev,_ZThn84_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C25D0Ev,_ZThn84_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C25__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn200_N8S7856C25D1Ev,_ZThn112_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn200_N8S7856C25D0Ev,_ZThn112_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C25__8S7856C23[] = {
  ABISELECT(-200,-112),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C25__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn216_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn216_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C25__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn232_N8S7856C25D1Ev,_ZThn128_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn232_N8S7856C25D0Ev,_ZThn128_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C25__8S7856C23[] = {
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C25__8S7856C23[] = {
  ABISELECT(216,120),
  ABISELECT(184,104),
  ABISELECT(104,56),
  ABISELECT(152,84),
  ABISELECT(168,96),
  ABISELECT(116,64),
  ABISELECT(152,84),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn248_N8S7856C25D1Ev,_ZThn136_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn248_N8S7856C25D0Ev,_ZThn136_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C25__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C25__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn280_N8S7856C25D1Ev,_ZThn152_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn280_N8S7856C25D0Ev,_ZThn152_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn328_N8S7856C25D1Ev,_ZThn176_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn328_N8S7856C25D0Ev,_ZThn176_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C25__8S7856C23[] = {
  ABISELECT(-328,-176),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C25__8S7856C23[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-48,-28),
  ABISELECT(88,44),
  ABISELECT(152,84),
  ABISELECT(136,72),
  ABISELECT(100,52),
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(168,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25__8S7856C23[] = {
  ABISELECT(84,44),
  ABISELECT(120,64),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23[] = {
  ABISELECT(68,36),
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A9__8S7856C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A2__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__8S7856C23[] = {
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C23[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__8S7856C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__8S7856C23[] = {
  ABISELECT(-64,-36),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__8S7856C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C23[] = {
  ABISELECT(-32,-20),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23[] = {
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C23[] = {
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C23[] = {
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23[] = {
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A4__8S7856C23[] = {
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C23[] = {
  ABISELECT(32,16),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C23[] = {
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C23[] = {
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(32,16),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23[] = {
  ABISELECT(-280,-152),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-64,-32),
  ABISELECT(-96,-52),
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-80,-40),
  ABISELECT(-144,-80),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  ABISELECT(-280,-152),
  ABISELECT(-96,-52),
  ABISELECT(-132,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-84,-48),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[] = {
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C23[] = {
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C23[] = {
  ABISELECT(-164,-88),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(112,60),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(96,48),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(64,32),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__8S7856C23[] = {
  ABISELECT(96,52),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[] = {
  ABISELECT(48,24),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__8S7856C23[] = {
  ABISELECT(80,40),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__8S7856C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-296,-160),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-144,-76),
  ABISELECT(-96,-48),
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-148,-80),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-296,-160),
  ABISELECT(-296,-160),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__8S7856C23[] = {
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__8S7856C23[] = {
  ABISELECT(128,68),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__8S7856C23[] = {
  ABISELECT(64,32),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C23[] = {
  ABISELECT(-164,-88),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-328,-176),
  ABISELECT(-112,-56),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-176,-92),
  ABISELECT(-144,-76),
  ABISELECT(-128,-64),
  ABISELECT(-180,-96),
  ABISELECT(-144,-76),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__8S7856C23[] = {
  ABISELECT(144,76),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__8S7856C23[] = {
  ABISELECT(176,92),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__8S7856C23[] = {
  ABISELECT(112,56),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__8S7856C23[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23[] = {
  ABISELECT(-88,-44),
  ABISELECT(-184,-96),
  ABISELECT(40,20),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-336,-180),
  ABISELECT(-120,-60),
  ABISELECT(-200,-108),
  ABISELECT(-152,-80),
  ABISELECT(-136,-68),
  ABISELECT(-152,-80),
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A5__8S7856C23[] = {
  ABISELECT(-188,-100),
  ABISELECT(-152,-80),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A5__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__8S7856C23[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A10__8S7856C23[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(160,84),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(144,72),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(112,56),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__8S7856C23[] = {
  ABISELECT(152,80),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__8S7856C23[] = {
  ABISELECT(136,68),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(200,108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__8S7856C23[] = {
  ABISELECT(120,60),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__8S7856C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-344,-184),
  ABISELECT(-208,-112),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-196,-104),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-128,-64),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__8S7856C23[] = {
  ABISELECT(104,52),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C23[] = {
  ABISELECT(-212,-112),
  ABISELECT(-176,-92),
  ABISELECT(-360,-192),
  ABISELECT(-360,-192),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__8S7856C23[] = {
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__8S7856C23[] = {
  ABISELECT(184,96),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__8S7856C23[] = {
  ABISELECT(88,44),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  ABISELECT(-376,-200),
  ABISELECT(-160,-80),
  ABISELECT(-240,-128),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-192,-100),
  ABISELECT(-224,-116),
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A7__8S7856C23[] = {
  ABISELECT(-228,-120),
  ABISELECT(-192,-100),
  ABISELECT(-376,-200),
  ABISELECT(-376,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A7__8S7856C23[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(184,92),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(248,132),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A2__8S7856C23[] = {
  ABISELECT(168,84),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(184,92),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(184,92),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(248,132),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(168,84),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(136,68),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(224,116),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-152,-84),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  ABISELECT(32,16),
  -4,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(192,100),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  0,
  ABISELECT(16,12),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(176,88),
  ABISELECT(-52,-32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-200,-112),
  ABISELECT(-200,-112),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(160,80),
  ABISELECT(-68,-40),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-216,-120),
  ABISELECT(-216,-120),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(144,72),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-96,-56),
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-136,-68),
  ABISELECT(-168,-84),
  ABISELECT(-248,-132),
  ABISELECT(-200,-104),
  ABISELECT(-184,-92),
  ABISELECT(-236,-124),
  ABISELECT(-200,-104),
  ABISELECT(-384,-204),
  ABISELECT(-384,-204),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(128,64),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  ABISELECT(-248,-136),
  ABISELECT(-248,-136),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__A1__8S7856C23[] = {
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTT_ENTRY vtt_S7856C23[] = {
  {&(_ZTV8S7856C23[21]),  21,316},
  {&(_tg__ZTV8S7856C25__8S7856C23[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C25__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C25__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C25__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C25__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C25__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C25__A8__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C25__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C25__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C25__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C25__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C25__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C25__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C25__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C25__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C25__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C25__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C25__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C25__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C25__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C25__8S7856C23[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C25__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C25__8S7856C23[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C25__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C25__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A9__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A__8S7856C23[6]),  6,6},
  {&(_ZTV8S7856C23[93]),  93,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[26]),  26,316},
  {&(_ZTV8S7856C23[42]),  42,316},
  {&(_ZTV8S7856C23[108]),  108,316},
  {&(_ZTV8S7856C23[127]),  127,316},
  {&(_ZTV8S7856C23[137]),  137,316},
  {&(_ZTV8S7856C23[147]),  147,316},
  {&(_ZTV8S7856C23[160]),  160,316},
  {&(_ZTV8S7856C23[160]),  160,316},
  {&(_ZTV8S7856C23[116]),  116,316},
  {&(_ZTV8S7856C23[55]),  55,316},
  {&(_ZTV8S7856C23[171]),  171,316},
  {&(_ZTV8S7856C23[179]),  179,316},
  {&(_ZTV8S7856C23[197]),  197,316},
  {&(_ZTV8S7856C23[215]),  215,316},
  {&(_ZTV8S7856C23[238]),  238,316},
  {&(_ZTV8S7856C23[220]),  220,316},
  {&(_ZTV8S7856C23[72]),  72,316},
  {&(_ZTV8S7856C23[80]),  80,316},
  {&(_ZTV8S7856C23[87]),  87,316},
  {&(_ZTV8S7856C23[258]),  258,316},
  {&(_ZTV8S7856C23[274]),  274,316},
  {&(_ZTV8S7856C23[282]),  282,316},
  {&(_ZTV8S7856C23[300]),  300,316},
  {&(_ZTV8S7856C23[313]),  313,316},
  {&(_tg__ZTV8S7856C14__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C5__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C23[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C23[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__8S7856C23[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__8S7856C23[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A7__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A1__8S7856C23[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__8S7856C23[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__8S7856C23[3]),  3,5},
  {&(_tg__ZTV8S7856C29__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C22__8S7856C23[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A5__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A5__8S7856C23[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A3__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A10__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__8S7856C23[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__8S7856C23[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__8S7856C23[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A7__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A7__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A2__8S7856C23[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A2__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A2__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A2__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__A1__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__A1__8S7856C23[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__A1__8S7856C23[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__A1__8S7856C23[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__A1__8S7856C23[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__A1__8S7856C23[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__A1__8S7856C23[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__A1__8S7856C23[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__A1__8S7856C23[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D0Ev,_ZThn20_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7856C22D1Ev,_ZThn20_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C25D0Ev,_ZThn176_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C25D1Ev,_ZThn176_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C25D0Ev,_ZThn152_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C25D1Ev,_ZThn152_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C25D0Ev,_ZThn136_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C25D1Ev,_ZThn136_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C25D0Ev,_ZThn120_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C25D0Ev,_ZThn112_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C25D1Ev,_ZThn120_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C25D1Ev,_ZThn112_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C25D0Ev,_ZThn84_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C25D1Ev,_ZThn84_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C25D0Ev,_ZThn128_N8S7856C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn100_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C25D1Ev,_ZThn128_N8S7856C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn100_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C5D0Ev,_ZThn92_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C5D0Ev,_ZThn84_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C5D1Ev,_ZThn92_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C5D1Ev,_ZThn84_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C5D0Ev,_ZThn100_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C5D1Ev,_ZThn100_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C18D0Ev,_ZThn92_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C18D1Ev,_ZThn92_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7856C4D0Ev,_ZThn124_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7856C4D1Ev,_ZThn124_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7856C4D0Ev,_ZThn108_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7856C4D0Ev,_ZThn100_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7856C4D1Ev,_ZThn108_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7856C4D1Ev,_ZThn100_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7856C4D0Ev,_ZThn116_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C4D0Ev,_ZThn88_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7856C4D1Ev,_ZThn116_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C4D1Ev,_ZThn88_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C4D0Ev,_ZThn72_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7856C4D1Ev,_ZThn72_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C19D0Ev,_ZThn120_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C19D1Ev,_ZThn120_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C19D0Ev,_ZThn104_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C19D0Ev,_ZThn96_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C19D1Ev,_ZThn104_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C19D1Ev,_ZThn96_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D0Ev,_ZThn20_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C6D0Ev,_ZThn104_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C6D0Ev,_ZThn96_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C6D1Ev,_ZThn20_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C6D1Ev,_ZThn104_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C6D1Ev,_ZThn96_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7856C23D0Ev,_ZThn200_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7856C23D1Ev,_ZThn200_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C23D0Ev,_ZThn176_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S7856C23D1Ev,_ZThn176_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C23D0Ev,_ZThn180_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C23D0Ev,_ZThn152_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C23D1Ev,_ZThn180_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S7856C23D1Ev,_ZThn152_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C23D0Ev,_ZThn136_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7856C23D1Ev,_ZThn136_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C23D0Ev,_ZThn120_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C23D0Ev,_ZThn112_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S7856C23D1Ev,_ZThn120_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7856C23D1Ev,_ZThn112_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C23D0Ev,_ZThn128_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7856C23D1Ev,_ZThn128_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C23D0Ev,_ZThn84_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C23D1Ev,_ZThn84_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C23 = {  "S7856C23", // class name
  bases_S7856C23, 109,
  &(vtc_S7856C23[0]), // expected_vtbl_contents
  &(vtt_S7856C23[0]), // expected_vtt_contents
  ABISELECT(400,216), // object size
  NSPAIRA(_ZTI8S7856C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7856C23),316, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C23),286, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C3  : virtual S7856C4 , virtual S7856C20 , S7856C22 , virtual S7856C23 {
  void *s7856c3f0;
  virtual  ~S7856C3(); // _ZN7S7856C3D2Ev
  S7856C3(); // tgen
};
//SIG(-1 S7856C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ m} VBC8{ BC6 VBC9{ VBC6 BC7 VBC10{ m}} VBC7} BC10 BC11{ BC7 VBC6 VBC10 BC9 VBC8 vd} vd} VBC12{ BC10 BC7 BC9 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC9 VBC15{ VBC7} VBC12 BC10 VBC5 vd Fi} BC16{ VBC11 BC12 BC8 BC10 vd} vd} BC6 BC8 BC17{ BC13 VBC6 BC4 VBC16 vd v1} vd} VBC18{ BC15 VBC10 BC3 BC19{ BC7 BC15 vd} vd} BC20{ BC8 VBC4 BC3 VBC2 vd Fc} VBC21{ VBC12 VBC22{ m} BC23{ BC11 BC24{ VBC7} BC2 VBC25{ BC14 BC26{ BC5 VBC12 VBC27{ VBC5 VBC3 vd} BC19 BC22 Fi} VBC22} BC3} BC11 VBC20 FC11 Fi:26} vd Fp}


 S7856C3 ::~S7856C3(){ note_dtor("S7856C3", this);}
S7856C3 ::S7856C3(){ note_ctor("S7856C3", this);} // tgen

static void Test_S7856C3()
{
  extern Class_Descriptor cd_S7856C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,66)];
    init_test(&cd_S7856C3, buf);
    S7856C3 *dp, &lv = *(dp=new (buf) S7856C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,260), "sizeof(S7856C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C3)");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(129,73), "S7856C3");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(129,73), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(128,72), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(120,68), "S7856C3");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(120,68), "S7856C3");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(120,68), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(144,80), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(136,76), "S7856C3");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(136,76), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(160,88), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(152,84), "S7856C3");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(152,84), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(104,56), "S7856C3");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C3");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(168,92), "S7856C3");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(168,92), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(80,44), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(88,48), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(96,52), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(72,40), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(72,40), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(72,40), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(200,108), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(200,108), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(208,112), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(184,100), "S7856C3");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(184,100), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(56,28), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(48,24), "S7856C3");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(216,116), "S7856C3");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(232,124), "S7856C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(240,128), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(240,128), "S7856C3");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(248,132), "S7856C3");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(224,120), "S7856C3");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(256,136), "S7856C3");
    check_base_class_offset(lv, (S7856C20*), ABISELECT(216,116), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(16,8), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(32,16), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*), 0, "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(272,144), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(280,148), "S7856C3");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(296,156), "S7856C3");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(288,152), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(424,224), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), ABISELECT(448,236), "S7856C3");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(432,228), "S7856C3");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(416,220), "S7856C3");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(400,212), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(320,172), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(328,176), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(328,176), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C3");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(264,140), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(352,188), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(456,240), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(456,240), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(472,248), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(480,252), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(480,252), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(488,256), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(464,244), "S7856C3");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(456,240), "S7856C3");
    check_base_class_offset(lv, (S7856C23*), ABISELECT(264,140), "S7856C3");
    check_field_offset(lv, s7856c3f0, ABISELECT(40,20), "S7856C3.s7856c3f0");
    test_class_info(&lv, &cd_S7856C3);
    dp->~S7856C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C3(Test_S7856C3, "S7856C3", ABISELECT(496,260));

#else // __cplusplus

extern void _ZN7S7856C3C1Ev();
extern void _ZN7S7856C3D2Ev();
Name_Map name_map_S7856C3[] = {
  NSPAIR(_ZN7S7856C3C1Ev),
  NSPAIR(_ZN7S7856C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
static Base_Class bases_S7856C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    ABISELECT(129,73), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(120,68), //bcp->offset
    117, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(136,76), //bcp->offset
    127, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(152,84), //bcp->offset
    131, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(104,56), //bcp->offset
    104, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(168,92), //bcp->offset
    141, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(88,48), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(72,40), //bcp->offset
    81, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_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
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(200,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
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(200,108), //bcp->offset
    165, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,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
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(184,100), //bcp->offset
    154, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(56,28), //bcp->offset
    67, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(48,24), //bcp->offset
    47, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C17_nt,    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
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(232,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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(240,128), //bcp->offset
    204, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(224,120), //bcp->offset
    188, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(256,136), //bcp->offset
    210, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(216,116), //bcp->offset
    171, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    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
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    25, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(272,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
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(264,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
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(280,148), //bcp->offset
    240, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(288,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
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(296,156), //bcp->offset
    261, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(288,152), //bcp->offset
    243, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(400,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
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(400,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    304, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    313, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    312, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(416,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    311, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    ABISELECT(448,236), //bcp->offset
    349, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    345, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(432,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(432,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    319, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(432,228), //bcp->offset
    344, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    318, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(416,220), //bcp->offset
    326, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    310, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(400,212), //bcp->offset
    306, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    303, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(312,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
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(320,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
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,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
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    235, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(328,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
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(328,176), //bcp->offset
    291, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(336,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
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    233, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(312,168), //bcp->offset
    275, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(264,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,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
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,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
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    273, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(344,184), //bcp->offset
    297, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(456,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
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(456,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    357, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(472,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    362, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    361, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(480,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
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(480,252), //bcp->offset
    403, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    363, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(488,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(464,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    360, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(464,244), //bcp->offset
    387, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    359, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(456,240), //bcp->offset
    367, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    356, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(264,140), //bcp->offset
    215, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C3[];
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C3D1Ev,_ZThn240_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C3D0Ev,_ZThn240_N7S7856C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY vtc_S7856C3[] = {
  ABISELECT(456,240),
  ABISELECT(448,236),
  ABISELECT(400,212),
  0,
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-216,-116),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(192,100),
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
  ABISELECT(-400,-212),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
  ABISELECT(-432,-228),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
  ABISELECT(-448,-236),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
  ABISELECT(-456,-240),
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-464,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-480,-252),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern VTBL_ENTRY _ZTV7S7856C3[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A__7S7856C3[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A5__7S7856C3[] = {
  0,
  ABISELECT(104,56),
  0,
  ABISELECT(129,73),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A5__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A7__7S7856C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-144,-80),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-112,-64),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-144,-80),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A__7S7856C3[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-8,-4),
  ABISELECT(121,69),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(105,61),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C3[] = {
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C3[] = {
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C3[] = {
  ABISELECT(48,24),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C3[] = {
  ABISELECT(-168,-92),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C3[] = {
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(32,16),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-216,-116),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C3[] = {
  ABISELECT(-216,-116),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C3[] = {
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(72,36),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(104,52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(72,36),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3[] = {
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C3[] = {
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C3[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-224,-120),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-224,-120),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C3[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C3[] = {
  ABISELECT(64,32),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C3[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C3[] = {
  ABISELECT(-240,-128),
  ABISELECT(-136,-72),
  ABISELECT(-240,-128),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C3[] = {
  ABISELECT(-256,-136),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3[] = {
  ABISELECT(-216,-116),
  ABISELECT(192,100),
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(184,96),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-264,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-264,-140),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[] = {
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(176,88),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(176,88),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(168,84),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(136,68),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(104,52),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C3[] = {
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(80,40),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-136,-72),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C3[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-280,-148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-288,-152),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-288,-152),
  ABISELECT(-184,-96),
  ABISELECT(-288,-152),
  ABISELECT(-159,-79),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C3[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C3[] = {
  ABISELECT(144,72),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C3[] = {
  ABISELECT(112,56),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C3[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-296,-156),
  ABISELECT(-192,-100),
  ABISELECT(-296,-156),
  ABISELECT(-167,-83),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(80,40),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-136,-72),
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-312,-168),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-312,-168),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-312,-168),
  ABISELECT(-183,-95),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C3[] = {
  ABISELECT(-328,-176),
  ABISELECT(-224,-120),
  ABISELECT(-328,-176),
  ABISELECT(-199,-103),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C3[] = {
  ABISELECT(-344,-184),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-344,-184),
  ABISELECT(-215,-111),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(48,24),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-400,-212),
  ABISELECT(-271,-139),
  ABISELECT(-296,-156),
  ABISELECT(-400,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-168,-92),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C3[] = {
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3[] = {
  ABISELECT(-432,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C3[] = {
  ABISELECT(-432,-228),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(264,136),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C3[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C3[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-416,-220),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(32,16),
  ABISELECT(-280,-144),
  ABISELECT(-416,-220),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-416,-220),
  ABISELECT(-287,-147),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C3[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C3[] = {
  ABISELECT(248,128),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C3[] = {
  ABISELECT(-432,-228),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3[] = {
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-448,-236),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-376,-196),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-448,-236),
  ABISELECT(-344,-180),
  ABISELECT(-448,-236),
  ABISELECT(-319,-163),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C3[] = {
  ABISELECT(328,168),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C3[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C3[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C3[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-272,-140),
  ABISELECT(-384,-200),
  ABISELECT(-408,-216),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-456,-240),
  ABISELECT(-304,-156),
  ABISELECT(-320,-164),
  ABISELECT(-352,-184),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C3[] = {
  ABISELECT(-456,-240),
  ABISELECT(-352,-184),
  ABISELECT(-456,-240),
  ABISELECT(-327,-167),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C3[] = {
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[] = {
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(312,160),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(360,188),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(344,176),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(344,176),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(312,160),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(296,152),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-104,-56),
  ABISELECT(25,17),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(336,172),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(9,5),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-7,-3),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(304,156),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-152,-84),
  ABISELECT(-23,-11),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-296,-152),
  ABISELECT(-296,-152),
  ABISELECT(-464,-244),
  ABISELECT(-328,-168),
  ABISELECT(-344,-176),
  ABISELECT(-360,-188),
  ABISELECT(-464,-244),
  ABISELECT(-360,-188),
  ABISELECT(-360,-188),
  ABISELECT(-312,-160),
  ABISELECT(-464,-244),
  ABISELECT(-335,-171),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-92),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-168,-92),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-480,-252),
  ABISELECT(-376,-196),
  ABISELECT(-480,-252),
  ABISELECT(-351,-179),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(8,4),
  ABISELECT(408,216),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-48,-24),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  ABISELECT(56,32),
  ABISELECT(-48,-24),
  ABISELECT(81,49),
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(384,200),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-72,-40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(57,33),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(41,25),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(-56,-28),
  ABISELECT(73,45),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(272,140),
  ABISELECT(-184,-100),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-184,-100),
  ABISELECT(-55,-27),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C3[] = {
  ABISELECT(-200,-108),
  ABISELECT(-96,-52),
  ABISELECT(-200,-108),
  ABISELECT(-71,-35),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTT_ENTRY vtt_S7856C3[] = {
  {&(_ZTV7S7856C3[23]),  23,409},
  {&(_tg__ZTV8S7856C22__A__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A7__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A2__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A__7S7856C3[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A__7S7856C3[6]),  6,6},
  {&(_ZTV7S7856C3[65]),  65,409},
  {&(_ZTV7S7856C3[96]),  96,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[125]),  125,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[115]),  115,409},
  {&(_ZTV7S7856C3[131]),  131,409},
  {&(_ZTV7S7856C3[139]),  139,409},
  {&(_ZTV7S7856C3[152]),  152,409},
  {&(_ZTV7S7856C3[152]),  152,409},
  {&(_ZTV7S7856C3[104]),  104,409},
  {&(_ZTV7S7856C3[78]),  78,409},
  {&(_ZTV7S7856C3[163]),  163,409},
  {&(_ZTV7S7856C3[171]),  171,409},
  {&(_ZTV7S7856C3[186]),  186,409},
  {&(_ZTV7S7856C3[202]),  202,409},
  {&(_ZTV7S7856C3[210]),  210,409},
  {&(_ZTV7S7856C3[213]),  213,409},
  {&(_ZTV7S7856C3[39]),  39,409},
  {&(_ZTV7S7856C3[47]),  47,409},
  {&(_ZTV7S7856C3[238]),  238,409},
  {&(_ZTV7S7856C3[243]),  243,409},
  {&(_ZTV7S7856C3[259]),  259,409},
  {&(_ZTV7S7856C3[272]),  272,409},
  {&(_ZTV7S7856C3[324]),  324,409},
  {&(_ZTV7S7856C3[342]),  342,409},
  {&(_ZTV7S7856C3[365]),  365,409},
  {&(_ZTV7S7856C3[347]),  347,409},
  {&(_ZTV7S7856C3[289]),  289,409},
  {&(_ZTV7S7856C3[297]),  297,409},
  {&(_ZTV7S7856C3[304]),  304,409},
  {&(_ZTV7S7856C3[385]),  385,409},
  {&(_ZTV7S7856C3[401]),  401,409},
  {&(_ZTV7S7856C3[409]),  409,409},
  {&(_tg__ZTV7S7856C4__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C3[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C3[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C3[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C3[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C3[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C3[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C3[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C3[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C3[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C3[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C3[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C3[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C3[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C3[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C3[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C3[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C3[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C3[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C3[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C3[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C3[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C3[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C3[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C3[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C3[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D0Ev,_ZThn24_N8S7856C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C27D1Ev,_ZThn24_N8S7856C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D0Ev,_ZThn16_N8S7856C28D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C28D1Ev,_ZThn16_N8S7856C28D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C23D0Ev,_ZThn100_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C23D1Ev,_ZThn100_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D0Ev,_ZThn96_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C25D1Ev,_ZThn96_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C3D0Ev,_ZThn240_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C3D1Ev,_ZThn240_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C3 = {  "S7856C3", // class name
  bases_S7856C3, 138,
  &(vtc_S7856C3[0]), // expected_vtbl_contents
  &(vtt_S7856C3[0]), // expected_vtt_contents
  ABISELECT(496,260), // object size
  NSPAIRA(_ZTI7S7856C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7856C3),409, //virtual function table var
  23, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C3),393, //virtual table table var
  73, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C31  : virtual S7856C11 , S7856C22 {
  void *s7856c31f0;
  ~S7856C31(); // tgen
  S7856C31(); // tgen
};
//SIG(-1 S7856C31) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ BC7{ BC3 VBC2 VBC4} VBC8{ VBC9{ VBC3 VBC4 VBC7 BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC7 vd} vd} VBC11{ BC5 BC4 BC2 Fi} VBC10 vd Fi[2]} BC12{ VBC8 VBC13{ m} VBC14{ VBC2 VBC15{ VBC4} VBC11 BC5 VBC9 vd Fi} BC16{ VBC10 BC11 BC7 BC5 vd} vd} VBC17{ VBC12 BC3 BC7 BC18{ BC13 VBC3 BC8 VBC16 vd v1} vd} vd Fc} Fp}


S7856C31 ::~S7856C31(){ note_dtor("S7856C31", this);} // tgen
S7856C31 ::S7856C31(){ note_ctor("S7856C31", this);} // tgen

static void Test_S7856C31()
{
  extern Class_Descriptor cd_S7856C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,31)];
    init_test(&cd_S7856C31, buf);
    S7856C31 *dp, &lv = *(dp=new (buf) S7856C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,120), "sizeof(S7856C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C31)");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C31");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), 0, "S7856C31");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(48,24), "S7856C31");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), ABISELECT(48,24), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(56,28), "S7856C31");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(56,28), "S7856C31");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(80,44), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(72,40), "S7856C31");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(72,40), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(96,52), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(88,48), "S7856C31");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(88,48), "S7856C31");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(88,48), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(112,60), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(104,56), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(56,28), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C31");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(120,64), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(16,8), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(24,12), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(32,16), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(8,4), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(168,92), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(176,96), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(160,88), "S7856C31");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(160,88), "S7856C31");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(136,72), "S7856C31");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(136,72), "S7856C31");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(200,108), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(192,104), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(208,112), "S7856C31");
    /*is_ambiguous_... S7856C31::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(216,116), "S7856C31");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(192,104), "S7856C31");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(144,76), "S7856C31");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(136,72), "S7856C31");
    check_base_class_offset(lv, (S7856C22*), 0, "S7856C31");
    check_field_offset(lv, s7856c31f0, ABISELECT(40,20), "S7856C31.s7856c31f0");
    test_class_info(&lv, &cd_S7856C31);
    dp->~S7856C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C31(Test_S7856C31, "S7856C31", ABISELECT(224,120));

#else // __cplusplus

extern void _ZN8S7856C31C1Ev();
extern void _ZN8S7856C31D1Ev();
Name_Map name_map_S7856C31[] = {
  NSPAIR(_ZN8S7856C31C1Ev),
  NSPAIR(_ZN8S7856C31D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
static Base_Class bases_S7856C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    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
    26, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    8, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(80,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_S7856C9_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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(72,40), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(96,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_S7856C9_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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(88,48), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(104,56), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(56,28), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7856C17_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(120,64), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    45, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(176,96), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(160,88), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(208,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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(208,112), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(192,104), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(144,76), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(136,72), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7856C31[];
extern void _ZN8S7856C31D1Ev();
extern void _ZN8S7856C31D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C31D1Ev,_ZThn28_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C31D0Ev,_ZThn28_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C31D1Ev,_ZThn56_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C31D0Ev,_ZThn56_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C31D1Ev,_ZThn64_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C31D0Ev,_ZThn64_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C31D1Ev,_ZThn72_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C31D0Ev,_ZThn72_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn88_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn88_N8S7856C31D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C31D1Ev,_ZThn104_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C31D0Ev,_ZThn104_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C31[] = {
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(120,64),
  0,
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&_ZN8S7856C31D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C31D0Ev,
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
  ABISELECT(8,4),
  ABISELECT(-136,-72),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-160,-88),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern VTBL_ENTRY _ZTV8S7856C31[];
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C31[] = {
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(120,64),
  0,
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__8S7856C31[] = {
  ABISELECT(48,24),
  0,
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A4__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C18D1Ev,_ZThn52_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C18D0Ev,_ZThn52_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-96,-52),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn24_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn24_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C58S7856C22__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-96,-52),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn28_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn28_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__8S7856C31[] = {
  ABISELECT(-56,-28),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__8S7856C31[] = {
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__8S7856C31[] = {
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__8S7856C31[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(48,24),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__8S7856C31[] = {
  ABISELECT(-120,-64),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C31[] = {
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C22D1Ev,_ZThn72_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C22D0Ev,_ZThn72_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__8S7856C31[] = {
  ABISELECT(8,4),
  ABISELECT(-136,-72),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn88_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn88_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn192_N8S7856C22D1Ev,_ZThn104_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn192_N8S7856C22D0Ev,_ZThn104_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C31[] = {
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C6__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C31[] = {
  ABISELECT(-48,-28),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C31[] = {
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C7__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C10__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C31[] = {
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__8S7856C31[] = {
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C31[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C16__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C31[] = {
  ABISELECT(48,24),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C31[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-136,-72),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-48,-28),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C31[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C31[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C31[] = {
  ABISELECT(64,32),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C4__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(32,16),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C31[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C31[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C31[] = {
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-112,-64),
  ABISELECT(-160,-88),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(88,48),
  ABISELECT(-24,-16),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(-72,-40),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C5__A1__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(-120,-64),
  ABISELECT(-72,-40),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C31[] = {
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-144,-80),
  ABISELECT(-192,-104),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A3__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C31[] = {
  ABISELECT(-192,-104),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(88,48),
  ABISELECT(-56,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-28),
  ABISELECT(-104,-56),
  ABISELECT(-56,-32),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C31[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C31[] = {
  ABISELECT(-160,-88),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTT_ENTRY vtt_S7856C31[] = {
  {&(_ZTV8S7856C31[17]),  17,165},
  {&(_tg__ZTV8S7856C22__8S7856C31[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C108S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C22__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C22__8S7856C31[17]),  17,19},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__8S7856C31[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__8S7856C31[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__8S7856C31[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__8S7856C31[6]),  6,6},
  {&(_ZTV8S7856C31[17]),  17,165},
  {&(_ZTV8S7856C31[52]),  52,165},
  {&(_ZTV8S7856C31[62]),  62,165},
  {&(_ZTV8S7856C31[52]),  52,165},
  {&(_ZTV8S7856C31[68]),  68,165},
  {&(_ZTV8S7856C31[76]),  76,165},
  {&(_ZTV8S7856C31[33]),  33,165},
  {&(_ZTV8S7856C31[89]),  89,165},
  {&(_ZTV8S7856C31[89]),  89,165},
  {&(_ZTV8S7856C31[41]),  41,165},
  {&(_ZTV8S7856C31[109]),  109,165},
  {&(_ZTV8S7856C31[140]),  140,165},
  {&(_ZTV8S7856C31[148]),  148,165},
  {&(_ZTV8S7856C31[122]),  122,165},
  {&(_ZTV8S7856C31[157]),  157,165},
  {&(_ZTV8S7856C31[165]),  165,165},
  {&(_tg__ZTV8S7856C11__8S7856C31[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C31[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C11__7S7856C6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C137S7856C7__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C7__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C10__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C31[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C13__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C11__8S7856C16__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C31[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C31[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C31[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C31[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C31[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C31[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C31[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C68S7856C197S7856C4__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C197S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C31[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C31[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C31[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C31[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A5__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C187S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C11__7S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C31[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C18__A2__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A3__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A6__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A5__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A2__8S7856C31[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A2__8S7856C31[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C18__A2__8S7856C31[4]),  4,4},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A2__8S7856C31[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C31[];
extern  VTBL_ENTRY _ZTV8S7856C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C31[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D0Ev,_ZThn28_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C19D1Ev,_ZThn28_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C22D0Ev,_ZThn104_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C22D1Ev,_ZThn104_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn88_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn88_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C22D0Ev,_ZThn72_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C22D1Ev,_ZThn72_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn64_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D0Ev,_ZThn28_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn64_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C22D1Ev,_ZThn28_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn60_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn24_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn60_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn24_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C18D0Ev,_ZThn52_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C18D1Ev,_ZThn52_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C31D0Ev,_ZThn104_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7856C31D1Ev,_ZThn104_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn88_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn88_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C31D0Ev,_ZThn72_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C31D1Ev,_ZThn72_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C31D0Ev,_ZThn56_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C31D1Ev,_ZThn56_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C31D0Ev,_ZThn64_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C31D0Ev,_ZThn28_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C31D1Ev,_ZThn64_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7856C31D1Ev,_ZThn28_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C31 = {  "S7856C31", // class name
  bases_S7856C31, 66,
  &(vtc_S7856C31[0]), // expected_vtbl_contents
  &(vtt_S7856C31[0]), // expected_vtt_contents
  ABISELECT(224,120), // object size
  NSPAIRA(_ZTI8S7856C31),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C31),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C31),142, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C30  : virtual S7856C18 , S7856C31 , virtual S7856C24 {
  virtual  ~S7856C30(); // _ZN8S7856C30D2Ev
  S7856C30(); // tgen
};
//SIG(-1 S7856C30) C1{ VBC2{ VBC3{ BC4{ m} VBC5{ m} VBC6{ m} BC7{ VBC5 BC4 VBC6} VBC8{ BC5 VBC7 VBC4} vd} BC9{ BC6 BC4 BC7 Fi} BC8 BC6 vd} BC10{ VBC7 BC11{ BC8 VBC12{ VBC13{ VBC5 VBC4 VBC8 BC6 BC3 vd} VBC9 VBC3 vd Fi[2]} BC14{ VBC12 VBC15{ m} VBC16{ VBC7 VBC17{ VBC4} VBC9 BC6 VBC13 vd Fi} BC2 vd} VBC18{ VBC14 BC5 BC8 BC19{ BC15 VBC5 BC12 VBC2 vd v1} vd} vd Fc} Fp} VBC20{ m} vd}


 S7856C30 ::~S7856C30(){ note_dtor("S7856C30", this);}
S7856C30 ::S7856C30(){ note_ctor("S7856C30", this);} // tgen

static void Test_S7856C30()
{
  extern Class_Descriptor cd_S7856C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,30)];
    init_test(&cd_S7856C30, buf);
    S7856C30 *dp, &lv = *(dp=new (buf) S7856C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,116), "sizeof(S7856C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C30)");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(88,44), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), ABISELECT(89,45), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C31::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(96,48), "S7856C30");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(96,48), "S7856C30");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(80,40), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(56,28), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(64,32), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(64,32), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(72,36), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C18*), ABISELECT(48,24), "S7856C30");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(48,24), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(120,64), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(112,60), "S7856C30");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(112,60), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(136,72), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(128,68), "S7856C30");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(128,68), "S7856C30");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(128,68), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(96,48), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C31*), 0, "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(144,76), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(16,8), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(24,12), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(24,12), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(32,16), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C22::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C31*), ABISELECT(8,4), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(192,104), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(200,108), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(200,108), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(208,112), "S7856C30");
    /*is_ambiguous_... S7856C30::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(184,100), "S7856C30");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(184,100), "S7856C30");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(160,84), "S7856C30");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(160,84), "S7856C30");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(168,88), "S7856C30");
    check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C31*), ABISELECT(160,84), "S7856C30");
    check_base_class_offset(lv, (S7856C22*)(S7856C31*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C31*), 0, "S7856C30");
    check_base_class_offset(lv, (S7856C24*), 0, "S7856C30");
    test_class_info(&lv, &cd_S7856C30);
    dp->~S7856C30();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C30(Test_S7856C30, "S7856C30", ABISELECT(216,116));

#else // __cplusplus

extern void _ZN8S7856C30C1Ev();
extern void _ZN8S7856C30D2Ev();
Name_Map name_map_S7856C30[] = {
  NSPAIR(_ZN8S7856C30C1Ev),
  NSPAIR(_ZN8S7856C30D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C31;
extern VTBL_ENTRY _ZTI8S7856C31[];
extern  VTBL_ENTRY _ZTV8S7856C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C31[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S7856C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(89,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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    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
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C10,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7856C13,    ABISELECT(80,40), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(64,32), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C10,    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
    26, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(112,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(128,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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(128,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(96,48), //bcp->offset
    69, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(144,76), //bcp->offset
    96, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    42, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    42, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    41, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(24,12), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(200,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
    54, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(200,108), //bcp->offset
    160, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,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
    56, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(184,100), //bcp->offset
    143, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(168,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
    64, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(160,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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,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
    63, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(168,88), //bcp->offset
    129, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(160,84), //bcp->offset
    109, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S7856C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C31,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //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},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7856C30[];
extern void _ZN8S7856C30D1Ev();
extern void _ZN8S7856C30D0Ev();
extern void ABISELECT(_ZThn8_N8S7856C30D1Ev,_ZThn4_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C30D0Ev,_ZThn4_N8S7856C30D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C30D1Ev,_ZThn24_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C30D0Ev,_ZThn24_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C30D1Ev,_ZThn40_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C30D0Ev,_ZThn40_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C30D1Ev,_ZThn48_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C30D0Ev,_ZThn48_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C30D1Ev,_ZThn60_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C30D0Ev,_ZThn60_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C30D1Ev,_ZThn76_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C30D0Ev,_ZThn76_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C30D1Ev,_ZThn84_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C30D0Ev,_ZThn84_N8S7856C30D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7856C30D1Ev,_ZTvn4_n68_N8S7856C30D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C30D0Ev,_ZTvn4_n68_N8S7856C30D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C30D1Ev,_ZThn100_N8S7856C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C30D0Ev,_ZThn100_N8S7856C30D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C30[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&_ZN8S7856C30D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C30D0Ev,
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C30D1Ev,_ZThn4_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C30D0Ev,_ZThn4_N8S7856C30D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev),
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C30D1Ev,_ZTvn4_n68_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C30D0Ev,_ZTvn4_n68_N8S7856C30D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev),
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C30[0]),
};
extern VTBL_ENTRY _ZTV8S7856C30[];
extern void _ZN8S7856C31D1Ev();
extern void _ZN8S7856C31D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C31__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&_ZN8S7856C31D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C31D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(184,100),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(144,76),
  0,
  ABISELECT(80,40),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,60),
  ABISELECT(96,48),
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C228S7856C31__A2__8S7856C30[] = {
  0,
  ABISELECT(96,48),
  0,
  ABISELECT(89,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C228S7856C31__A2__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C228S7856C31__A2__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C228S7856C31__A5__8S7856C30[] = {
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-104,-56),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-136,-72),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C22D1Ev,_ZThn60_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C22D0Ev,_ZThn60_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn76_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn76_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C228S7856C31__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C31D1Ev,_ZThn48_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C31D0Ev,_ZThn48_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C31__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn112_N8S7856C31D1Ev,_ZThn60_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn112_N8S7856C31D0Ev,_ZThn60_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C31__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C31__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C31__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__8S7856C31__8S7856C30[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  ABISELECT(-8,-4),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(72,36),
  ABISELECT(-8,-4),
  ABISELECT(81,41),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D1Ev,_ZThn4_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C31D0Ev,_ZThn4_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C31D1Ev,_ZThn76_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C31D0Ev,_ZThn76_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C31__8S7856C30[] = {
  ABISELECT(-144,-76),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31__8S7856C30[] = {
  ABISELECT(-24,-12),
  ABISELECT(72,36),
  ABISELECT(-24,-12),
  ABISELECT(65,33),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn84_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn84_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C31__8S7856C30[] = {
  ABISELECT(8,4),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C31D1Ev,_ZThn100_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C31D0Ev,_ZThn100_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C31__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C31__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D1Ev,_ZTvn4_n68_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C31D0Ev,_ZTvn4_n68_N8S7856C31D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C31D1Ev,_ZThn24_N8S7856C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C31D0Ev,_ZThn24_N8S7856C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C31__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C31__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C31[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A2__8S7856C30[] = {
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C18D1Ev,_ZThn16_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C18D0Ev,_ZThn16_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__8S7856C30[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__8S7856C30[] = {
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C30[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__8S7856C30[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__8S7856C30[] = {
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__A1__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C30[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C30[] = {
  ABISELECT(32,16),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C30[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C30[] = {
  ABISELECT(-112,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-160,-84),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A5__8S7856C30[] = {
  ABISELECT(-160,-84),
  ABISELECT(-64,-36),
  ABISELECT(-160,-84),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A5__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C30[] = {
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(120,64),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__8S7856C30[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__8S7856C30[] = {
  ABISELECT(64,36),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__8S7856C30[] = {
  ABISELECT(48,24),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(80,44),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__8S7856C30[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__8S7856C30[] = {
  ABISELECT(-120,-64),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-72,-40),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  ABISELECT(-79,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__8S7856C30[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  ABISELECT(41,21),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C30[] = {
  ABISELECT(-64,-32),
  ABISELECT(32,16),
  ABISELECT(-64,-32),
  ABISELECT(25,13),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-184,-100),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-88,-52),
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  ABISELECT(-104,-60),
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A6__8S7856C30[] = {
  ABISELECT(-184,-100),
  ABISELECT(-95,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C30[] = {
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(104,60),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(88,52),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-7,-3),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(72,40),
  ABISELECT(-112,-60),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-112,-60),
  ABISELECT(-23,-15),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-128,-68),
  ABISELECT(-39,-23),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(104,60),
  ABISELECT(-80,-40),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-80,-40),
  ABISELECT(9,5),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(40,24),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-144,-76),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C30[] = {
  ABISELECT(-200,-108),
  ABISELECT(-104,-60),
  ABISELECT(-200,-108),
  ABISELECT(-111,-63),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
static  VTT_ENTRY vtt_S7856C30[] = {
  {&(_ZTV8S7856C30[18]),  18,166},
  {&(_tg__ZTV8S7856C31__8S7856C30[17]),  17,19},
  {&(_tg__ZTV8S7856C228S7856C31__8S7856C30[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C228S7856C31__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C228S7856C31__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C228S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C228S7856C31__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C228S7856C31__A5__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C228S7856C31__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C228S7856C31__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C228S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C228S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C228S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C228S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C228S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C228S7856C31__8S7856C30[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C228S7856C31__8S7856C30[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C228S7856C31__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C228S7856C31__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C228S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C31__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C31__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C58S7856C22__8S7856C31__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C31__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A2__8S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C31__8S7856C30[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C31__8S7856C30[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C31__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C31__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C31__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C31__8S7856C30[6]),  6,6},
  {&(_ZTV8S7856C30[51]),  51,166},
  {&(_ZTV8S7856C30[67]),  67,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[59]),  59,166},
  {&(_ZTV8S7856C30[80]),  80,166},
  {&(_ZTV8S7856C30[90]),  90,166},
  {&(_ZTV8S7856C30[96]),  96,166},
  {&(_ZTV8S7856C30[34]),  34,166},
  {&(_ZTV8S7856C30[107]),  107,166},
  {&(_ZTV8S7856C30[107]),  107,166},
  {&(_ZTV8S7856C30[42]),  42,166},
  {&(_ZTV8S7856C30[127]),  127,166},
  {&(_ZTV8S7856C30[158]),  158,166},
  {&(_ZTV8S7856C30[166]),  166,166},
  {&(_ZTV8S7856C30[140]),  140,166},
  {&(_tg__ZTV8S7856C18__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A2__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C13__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C6__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__A1__8S7856C30[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C16__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C30[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C30[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C30[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C30[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C30[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A5__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A5__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C30[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__8S7856C30[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__8S7856C30[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__8S7856C30[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__8S7856C30[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C5__A1__8S7856C30[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__A2__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A3__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A6__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A4__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__A2__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__A2__8S7856C30[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__A1__8S7856C30[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__A1__8S7856C30[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__A1__8S7856C30[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__A1__8S7856C30[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C30[];
extern  VTBL_ENTRY _ZTV8S7856C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C30[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D0Ev,_ZTv0_n36_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C31D0Ev,_ZThn24_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C31D1Ev,_ZTv0_n36_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C31D1Ev,_ZThn24_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D0Ev,_ZTv0_n60_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C31D0Ev,_ZThn100_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C31D1Ev,_ZTv0_n60_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C31D1Ev,_ZThn100_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D0Ev,_ZTv0_n68_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D0Ev,_ZThn84_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C31D1Ev,_ZTv0_n68_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C31D1Ev,_ZThn84_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D0Ev,_ZTv0_n32_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C31D0Ev,_ZThn40_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C31D0Ev,_ZThn60_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C31D1Ev,_ZTv0_n32_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C31D1Ev,_ZThn40_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C31D1Ev,_ZThn60_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D0Ev,_ZTv0_n44_N8S7856C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C31D0Ev,_ZThn76_N8S7856C31D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C31D0Ev,_ZThn48_N8S7856C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C31D1Ev,_ZTv0_n44_N8S7856C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C31D1Ev,_ZThn76_N8S7856C31D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C31D1Ev,_ZThn48_N8S7856C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C22D0Ev,_ZThn60_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C22D1Ev,_ZThn60_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D0Ev,_ZThn76_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C22D0Ev,_ZThn48_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C22D1Ev,_ZThn76_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C22D1Ev,_ZThn48_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C5D0Ev,_ZThn36_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D0Ev,_ZThn56_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C5D1Ev,_ZThn36_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C5D1Ev,_ZThn56_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D0Ev,_ZThn72_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C5D1Ev,_ZThn72_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C18D0Ev,_ZThn16_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C18D0Ev,_ZThn36_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C18D1Ev,_ZThn16_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C18D1Ev,_ZThn36_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C30D0Ev,_ZTv0_n60_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C30D0Ev,_ZThn100_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C30D1Ev,_ZTv0_n60_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C30D1Ev,_ZThn100_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C30D0Ev,_ZTv0_n68_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C30D0Ev,_ZThn84_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C30D1Ev,_ZTv0_n68_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7856C30D1Ev,_ZThn84_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C30D0Ev,_ZTv0_n44_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C30D0Ev,_ZThn76_N8S7856C30D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C30D0Ev,_ZThn48_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C30D1Ev,_ZTv0_n44_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C30D1Ev,_ZThn76_N8S7856C30D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C30D1Ev,_ZThn48_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C30D0Ev,_ZTv0_n32_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C30D0Ev,_ZThn60_N8S7856C30D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C30D0Ev,_ZThn40_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C30D1Ev,_ZTv0_n32_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7856C30D1Ev,_ZThn60_N8S7856C30D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C30D1Ev,_ZThn40_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C30D0Ev,_ZTv0_n36_N8S7856C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C30D0Ev,_ZThn24_N8S7856C30D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C30D1Ev,_ZTv0_n36_N8S7856C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C30D1Ev,_ZThn24_N8S7856C30D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C30 = {  "S7856C30", // class name
  bases_S7856C30, 68,
  &(vtc_S7856C30[0]), // expected_vtbl_contents
  &(vtt_S7856C30[0]), // expected_vtt_contents
  ABISELECT(216,116), // object size
  NSPAIRA(_ZTI8S7856C30),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7856C30),166, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C30),159, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C2  : virtual S7856C3 {
  int s7856c2f0;
  ::S7856C30 s7856c2f1;
  virtual  ~S7856C2(); // _ZN7S7856C2D2Ev
  S7856C2(); // tgen
};
//SIG(-1 S7856C2) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} VBC19{ BC16 VBC11 BC4 BC20{ BC8 BC16 vd} vd} BC21{ BC9 VBC5 BC4 VBC3 vd Fc} VBC22{ VBC13 VBC23{ m} BC24{ BC12 BC25{ VBC8} BC3 VBC26{ BC15 BC27{ BC6 VBC13 VBC28{ VBC6 VBC4 vd} BC20 BC23 Fi} VBC23} BC4} BC12 VBC21 FC12 Fi:26} vd Fp} vd Fi FC29{ VBC17 BC30{ VBC10 BC21 Fp} VBC23 vd}}


 S7856C2 ::~S7856C2(){ note_dtor("S7856C2", this);}
S7856C2 ::S7856C2(){ note_ctor("S7856C2", this);} // tgen

static void Test_S7856C2()
{
  extern Class_Descriptor cd_S7856C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(91,96)];
    init_test(&cd_S7856C2, buf);
    S7856C2 *dp, &lv = *(dp=new (buf) S7856C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,380), "sizeof(S7856C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C2)");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C2");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(352,192), "S7856C2");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(352,192), "S7856C2");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(352,192), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(376,204), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(368,200), "S7856C2");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(368,200), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(392,212), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(384,208), "S7856C2");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(384,208), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(336,180), "S7856C2");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(336,180), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C2");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(400,216), "S7856C2");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(400,216), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(304,164), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(304,164), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(304,164), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(432,232), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(432,232), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(440,236), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(416,224), "S7856C2");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(416,224), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(288,152), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C3*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C3*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(280,148), "S7856C2");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(448,240), "S7856C2");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C2");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C2");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(456,244), "S7856C2");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(488,260), "S7856C2");
    check_base_class_offset(lv, (S7856C20*)(S7856C3*), ABISELECT(448,240), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C2");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*)(S7856C3*), ABISELECT(232,124), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(512,272), "S7856C2");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C2");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), 0, "S7856C2");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C2");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(648,344), "S7856C2");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(632,336), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(544,292), "S7856C2");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(496,264), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(576,308), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(680,360), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(680,360), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    /*is_ambiguous_... S7856C2::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(688,364), "S7856C2");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(680,360), "S7856C2");
    check_base_class_offset(lv, (S7856C23*)(S7856C3*), ABISELECT(496,264), "S7856C2");
    check_base_class_offset(lv, (S7856C3*), ABISELECT(232,124), "S7856C2");
    check_field_offset(lv, s7856c2f0, ABISELECT(8,4), "S7856C2.s7856c2f0");
    check_field_offset(lv, s7856c2f1, ABISELECT(16,8), "S7856C2.s7856c2f1");
    test_class_info(&lv, &cd_S7856C2);
    dp->~S7856C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C2(Test_S7856C2, "S7856C2", ABISELECT(720,380));

#else // __cplusplus

extern void _ZN7S7856C2C1Ev();
extern void _ZN7S7856C2D2Ev();
Name_Map name_map_S7856C2[] = {
  NSPAIR(_ZN7S7856C2C1Ev),
  NSPAIR(_ZN7S7856C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
extern Class_Descriptor cd_S7856C3;
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
static Base_Class bases_S7856C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(336,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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(336,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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(336,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(352,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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(360,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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(352,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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(352,192), //bcp->offset
    145, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(368,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(376,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(368,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_S7856C11,    ABISELECT(368,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(368,200), //bcp->offset
    155, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(392,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(384,208), //bcp->offset
    159, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(336,180), //bcp->offset
    132, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(400,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(400,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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(400,216), //bcp->offset
    169, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(304,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(304,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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(320,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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(320,172), //bcp->offset
    126, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(328,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_S7856C18,    ABISELECT(304,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(304,164), //bcp->offset
    109, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(288,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
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(280,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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(280,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(288,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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(416,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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(416,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
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    190, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(432,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
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(432,232), //bcp->offset
    193, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(440,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(416,224), //bcp->offset
    182, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(288,152), //bcp->offset
    95, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(280,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    80, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(448,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(456,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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(456,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
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(472,252), //bcp->offset
    232, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(480,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(456,244), //bcp->offset
    216, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    199, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(488,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    219, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(488,260), //bcp->offset
    238, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    218, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(448,240), //bcp->offset
    199, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    ABISELECT(232,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
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(256,136), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(264,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
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(240,128), //bcp->offset
    53, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    138, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    233, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(512,272), //bcp->offset
    268, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(520,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(520,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    239, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    242, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(528,280), //bcp->offset
    289, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    241, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(520,276), //bcp->offset
    271, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    238, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(632,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(632,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    340, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    349, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    348, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    347, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    381, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    355, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(664,352), //bcp->offset
    372, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    354, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(648,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(648,344), //bcp->offset
    354, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    346, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(632,336), //bcp->offset
    334, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    339, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    271, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    270, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(560,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
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(560,300), //bcp->offset
    319, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(568,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(544,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    269, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(544,292), //bcp->offset
    303, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    268, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    309, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(576,308), //bcp->offset
    325, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    308, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(680,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    393, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    398, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    397, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(704,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(704,372), //bcp->offset
    413, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    399, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(712,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
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    396, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(688,364), //bcp->offset
    397, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    395, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(680,360), //bcp->offset
    377, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    392, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(496,264), //bcp->offset
    243, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    231, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S7856C3,    ABISELECT(232,124), //bcp->offset
    27, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C2[];
extern void _ZN7S7856C2D1Ev();
extern void _ZN7S7856C2D0Ev();
extern void ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn232_N7S7856C2D1Ev,_ZThn124_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn232_N7S7856C2D0Ev,_ZThn124_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn280_N7S7856C2D1Ev,_ZThn148_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn280_N7S7856C2D0Ev,_ZThn148_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S7856C2D1Ev,_ZThn164_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S7856C2D0Ev,_ZThn164_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S7856C2D1Ev,_ZThn180_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S7856C2D0Ev,_ZThn180_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7856C2D1Ev,_ZThn192_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7856C2D0Ev,_ZThn192_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7856C2D1Ev,_ZThn208_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7856C2D0Ev,_ZThn208_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C2D1Ev,_ZThn216_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C2D0Ev,_ZThn216_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn416_N7S7856C2D1Ev,_ZThn224_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn416_N7S7856C2D0Ev,_ZThn224_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C2D1Ev,_ZThn240_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C2D0Ev,_ZThn240_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn496_N7S7856C2D1Ev,_ZThn264_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn496_N7S7856C2D0Ev,_ZThn264_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn632_N7S7856C2D1Ev,_ZThn336_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn632_N7S7856C2D0Ev,_ZThn336_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn680_N7S7856C2D1Ev,_ZThn360_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn680_N7S7856C2D0Ev,_ZThn360_N7S7856C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY vtc_S7856C2[] = {
  ABISELECT(680,360),
  0,
  ABISELECT(632,336),
  0,
  ABISELECT(496,264),
  ABISELECT(448,240),
  ABISELECT(416,224),
  ABISELECT(280,148),
  ABISELECT(232,124),
  0,
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&_ZN7S7856C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C2D0Ev,
  ABISELECT(-232,-124),
  ABISELECT(448,236),
  ABISELECT(-232,-124),
  ABISELECT(400,212),
  ABISELECT(-232,-124),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev),
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(8,4),
  ABISELECT(-280,-148),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-304,-164),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev),
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-448,-240),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev),
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-488,-260),
  ABISELECT(-488,-260),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev),
  ABISELECT(32,16),
  ABISELECT(-496,-264),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev),
  ABISELECT(-512,-272),
  ABISELECT(-512,-272),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev),
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev),
  ABISELECT(-664,-352),
  ABISELECT(-664,-352),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev),
  ABISELECT(-680,-360),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev),
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern VTBL_ENTRY _ZTV7S7856C2[];
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C2[] = {
  ABISELECT(448,236),
  ABISELECT(-232,-124),
  ABISELECT(400,212),
  ABISELECT(-232,-124),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-232,-124),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C2[] = {
  ABISELECT(-232,-124),
  ABISELECT(104,56),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-152,-84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-184,-100),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3__7S7856C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3__7S7856C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-152,-84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3__7S7856C2[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-184,-100),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3__7S7856C2[] = {
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C2[] = {
  ABISELECT(-488,-260),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-240,-128),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-240,-128),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C2[] = {
  ABISELECT(-256,-136),
  ABISELECT(80,44),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3__7S7856C2[] = {
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3__7S7856C2[] = {
  ABISELECT(-400,-212),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3__7S7856C2[] = {
  ABISELECT(232,124),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(232,124),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3__7S7856C2[] = {
  ABISELECT(-448,-236),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C2[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C2[] = {
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C2[] = {
  ABISELECT(-136,-76),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C2[] = {
  ABISELECT(48,24),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C2[] = {
  ABISELECT(-400,-216),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C2[] = {
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(32,16),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-448,-240),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-448,-240),
  ABISELECT(-448,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C2[] = {
  ABISELECT(-448,-240),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C2[] = {
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(72,36),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(104,52),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(72,36),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C2[] = {
  ABISELECT(-488,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C2[] = {
  ABISELECT(-488,-260),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-456,-244),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-456,-244),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C2[] = {
  ABISELECT(64,32),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C2[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C2[] = {
  ABISELECT(-472,-252),
  ABISELECT(-136,-72),
  ABISELECT(-472,-252),
  ABISELECT(-472,-252),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C2[] = {
  ABISELECT(-488,-260),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C2[] = {
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-496,-264),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[] = {
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(176,88),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(176,88),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(168,84),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(136,68),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(104,52),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C2[] = {
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(80,40),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-136,-72),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(496,264),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(496,264),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C2[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-512,-272),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-520,-276),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-520,-276),
  ABISELECT(-184,-96),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C2[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C2[] = {
  ABISELECT(144,72),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C2[] = {
  ABISELECT(112,56),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C2[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-528,-280),
  ABISELECT(-192,-100),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(80,40),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-136,-72),
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C2[] = {
  ABISELECT(496,264),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(496,264),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-544,-292),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-544,-292),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-544,-292),
  ABISELECT(-544,-292),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C2[] = {
  ABISELECT(-560,-300),
  ABISELECT(-224,-120),
  ABISELECT(-560,-300),
  ABISELECT(-560,-300),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C2[] = {
  ABISELECT(-576,-308),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-576,-308),
  ABISELECT(-576,-308),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C2[] = {
  ABISELECT(-632,-336),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-632,-336),
  ABISELECT(-632,-336),
  ABISELECT(-296,-156),
  ABISELECT(-632,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-400,-216),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C2[] = {
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2[] = {
  ABISELECT(-664,-352),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C2[] = {
  ABISELECT(-664,-352),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(648,344),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(648,344),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(296,152),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(264,136),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C2[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C2[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-648,-344),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-648,-344),
  ABISELECT(-280,-144),
  ABISELECT(-648,-344),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-648,-344),
  ABISELECT(-648,-344),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C2[] = {
  ABISELECT(632,336),
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  ABISELECT(632,336),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C2[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C2[] = {
  ABISELECT(248,128),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C2[] = {
  ABISELECT(-664,-352),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C2[] = {
  ABISELECT(400,216),
  ABISELECT(400,216),
  0,
  ABISELECT(384,208),
  ABISELECT(368,200),
  ABISELECT(336,180),
  ABISELECT(304,164),
  ABISELECT(336,180),
  ABISELECT(352,192),
  0,
  ABISELECT(336,180),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn352_N8S7856C29D1Ev,_ZThn192_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn352_N8S7856C29D0Ev,_ZThn192_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C2[] = {
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn336_N8S7856C29D1Ev,_ZThn180_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn336_N8S7856C29D0Ev,_ZThn180_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn304_N8S7856C29D1Ev,_ZThn164_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn304_N8S7856C29D0Ev,_ZThn164_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C2[] = {
  ABISELECT(-304,-164),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn384_N8S7856C29D1Ev,_ZThn208_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn384_N8S7856C29D0Ev,_ZThn208_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C2[] = {
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn400_N8S7856C29D1Ev,_ZThn216_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn400_N8S7856C29D0Ev,_ZThn216_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C2[] = {
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-680,-360),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C2[] = {
  ABISELECT(-680,-360),
  ABISELECT(-344,-180),
  ABISELECT(-680,-360),
  ABISELECT(-680,-360),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C2[] = {
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[] = {
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(304,156),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(336,172),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(304,156),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-180),
  0,
  ABISELECT(-336,-180),
  ABISELECT(-336,-180),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(328,168),
  ABISELECT(-352,-192),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-352,-192),
  ABISELECT(-352,-192),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(296,152),
  ABISELECT(-384,-208),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-384,-208),
  ABISELECT(-384,-208),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-688,-364),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-688,-364),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-400,-216),
  ABISELECT(-400,-216),
  ABISELECT(-64,-36),
  ABISELECT(-400,-216),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-704,-372),
  ABISELECT(-368,-192),
  ABISELECT(-704,-372),
  ABISELECT(-704,-372),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(8,4),
  ABISELECT(400,212),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-280,-148),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-280,-148),
  ABISELECT(56,32),
  ABISELECT(-280,-148),
  ABISELECT(-280,-148),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-304,-164),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-304,-164),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-304,-164),
  ABISELECT(-304,-164),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-320,-172),
  ABISELECT(16,8),
  ABISELECT(-320,-172),
  ABISELECT(-320,-172),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-288,-152),
  ABISELECT(48,28),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(392,208),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(264,136),
  ABISELECT(-416,-224),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-416,-224),
  ABISELECT(-416,-224),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C2[] = {
  ABISELECT(-432,-232),
  ABISELECT(-96,-52),
  ABISELECT(-432,-232),
  ABISELECT(-432,-232),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
static  VTT_ENTRY vtt_S7856C2[] = {
  {&(_ZTV7S7856C2[25]),  25,419},
  {&(_ZTV7S7856C2[51]),  51,419},
  {&(_ZTV7S7856C2[93]),  93,419},
  {&(_ZTV7S7856C2[124]),  124,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[153]),  153,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[143]),  143,419},
  {&(_ZTV7S7856C2[159]),  159,419},
  {&(_ZTV7S7856C2[167]),  167,419},
  {&(_ZTV7S7856C2[180]),  180,419},
  {&(_ZTV7S7856C2[180]),  180,419},
  {&(_ZTV7S7856C2[132]),  132,419},
  {&(_ZTV7S7856C2[106]),  106,419},
  {&(_ZTV7S7856C2[191]),  191,419},
  {&(_ZTV7S7856C2[199]),  199,419},
  {&(_ZTV7S7856C2[214]),  214,419},
  {&(_ZTV7S7856C2[230]),  230,419},
  {&(_ZTV7S7856C2[238]),  238,419},
  {&(_ZTV7S7856C2[241]),  241,419},
  {&(_ZTV7S7856C2[67]),  67,419},
  {&(_ZTV7S7856C2[75]),  75,419},
  {&(_ZTV7S7856C2[266]),  266,419},
  {&(_ZTV7S7856C2[271]),  271,419},
  {&(_ZTV7S7856C2[287]),  287,419},
  {&(_ZTV7S7856C2[300]),  300,419},
  {&(_ZTV7S7856C2[352]),  352,419},
  {&(_ZTV7S7856C2[370]),  370,419},
  {&(_ZTV7S7856C2[25]),  25,419},
  {&(_ZTV7S7856C2[375]),  375,419},
  {&(_ZTV7S7856C2[317]),  317,419},
  {&(_ZTV7S7856C2[325]),  325,419},
  {&(_ZTV7S7856C2[332]),  332,419},
  {&(_ZTV7S7856C2[395]),  395,419},
  {&(_ZTV7S7856C2[411]),  411,419},
  {&(_ZTV7S7856C2[419]),  419,419},
  {&(_tg__ZTV7S7856C3__7S7856C2[23]),  23,25},
  {&(_tg__ZTV8S7856C227S7856C3__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C3__7S7856C2[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__7S7856C3__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C2[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C2[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C2[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C2[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C2[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C2[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C2[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C2[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C2[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C2[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C2[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C2[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C2[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C2[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C2[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C2[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C2[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C2[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C2[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C2[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C2[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C2[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C2[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C2[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C2[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C2[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C2[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C2[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C2[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C2[];
extern  VTBL_ENTRY _ZTV7S7856C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C2[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7856C29D0Ev,_ZThn164_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7856C29D1Ev,_ZThn164_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7856C29D0Ev,_ZThn216_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C29D0Ev,_ZThn180_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S7856C29D1Ev,_ZThn216_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7856C29D1Ev,_ZThn180_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7856C29D0Ev,_ZThn208_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7856C29D0Ev,_ZThn192_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S7856C29D1Ev,_ZThn208_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7856C29D1Ev,_ZThn192_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn680_N7S7856C2D0Ev,_ZThn360_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S7856C2D0Ev,_ZThn336_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn680_N7S7856C2D1Ev,_ZThn360_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S7856C2D1Ev,_ZThn336_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7856C2D0Ev,_ZThn264_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S7856C2D1Ev,_ZThn264_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7856C2D0Ev,_ZThn224_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7856C2D1Ev,_ZThn224_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7856C2D0Ev,_ZThn208_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7856C2D0Ev,_ZThn192_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7856C2D1Ev,_ZThn208_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7856C2D1Ev,_ZThn192_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C2D0Ev,_ZThn216_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7856C2D0Ev,_ZThn180_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C2D1Ev,_ZThn216_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7856C2D1Ev,_ZThn180_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C2D0Ev,_ZThn240_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7856C2D0Ev,_ZThn164_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C2D1Ev,_ZThn240_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7856C2D1Ev,_ZThn164_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7856C2D0Ev,_ZThn148_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7856C2D1Ev,_ZThn148_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7856C2D0Ev,_ZThn124_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7856C2D1Ev,_ZThn124_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C2 = {  "S7856C2", // class name
  bases_S7856C2, 139,
  &(vtc_S7856C2[0]), // expected_vtbl_contents
  &(vtt_S7856C2[0]), // expected_vtt_contents
  ABISELECT(720,380), // object size
  NSPAIRA(_ZTI7S7856C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7856C2),419, //virtual function table var
  25, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C2),429, //virtual table table var
  74, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C32  : S7856C16 , S7856C9_nt {
  ~S7856C32(); // tgen
  S7856C32(); // tgen
};
//SIG(-1 S7856C32) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


S7856C32 ::~S7856C32(){ note_dtor("S7856C32", this);} // tgen
S7856C32 ::S7856C32(){ note_ctor("S7856C32", this);} // tgen

static void Test_S7856C32()
{
  extern Class_Descriptor cd_S7856C32;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7856C32, buf);
    S7856C32 *dp, &lv = *(dp=new (buf) S7856C32());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7856C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C32)");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C32");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C32");
    /*is_ambiguous_... S7856C7::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C13::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(48,28), "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C7::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), ABISELECT(12,8), "S7856C32");
    /*is_ambiguous_... S7856C10::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), ABISELECT(12,8), "S7856C32");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(24,16), "S7856C32");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(16,12), "S7856C32");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(16,12), "S7856C32");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C10::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(48,28), "S7856C32");
    check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(48,28), "S7856C32");
    /*is_ambiguous_... S7856C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(40,24), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    /*is_ambiguous_... S7856C13::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(32,20), "S7856C32");
    check_base_class_offset(lv, (S7856C16*), 0, "S7856C32");
    /*is_ambiguous_... S7856C32::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S7856C32");
    test_class_info(&lv, &cd_S7856C32);
    dp->~S7856C32();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C32(Test_S7856C32, "S7856C32", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7856C32C1Ev();
extern void _ZN8S7856C32D1Ev();
Name_Map name_map_S7856C32[] = {
  NSPAIR(_ZN8S7856C32C1Ev),
  NSPAIR(_ZN8S7856C32D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S7856C32[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7856C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C9_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, 1},
  {&cd_S7856C17_nt,    0, //bcp->offset
    -1, //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
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(16,12), //bcp->offset
    12, //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
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(32,20), //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
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(32,20), //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
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(32,20), //bcp->offset
    16, //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
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C16,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S7856C32[];
extern void _ZN8S7856C32D1Ev();
extern void _ZN8S7856C32D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C32D1Ev,_ZThn20_N8S7856C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C32D0Ev,_ZThn20_N8S7856C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C32[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&_ZN8S7856C32D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C32D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
extern VTBL_ENTRY _ZTV8S7856C32[];
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C32[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__8S7856C32[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C32[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C32[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A1__8S7856C32[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C32[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C32[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTT_ENTRY vtt_S7856C32[] = {
  {&(_ZTV8S7856C32[10]),  10,32},
  {&(_tg__ZTV8S7856C16__8S7856C32[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C16__8S7856C32[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__8S7856C32[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__8S7856C32[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__8S7856C32[6]),  6,6},
  {&(_ZTV8S7856C32[32]),  32,32},
  {&(_ZTV8S7856C32[10]),  10,32},
  {&(_ZTV8S7856C32[16]),  16,32},
  {&(_ZTV8S7856C32[24]),  24,32},
  {&(_ZTV8S7856C32[32]),  32,32},
  {&(_tg__ZTV8S7856C11__8S7856C32[4]),  4,4},
  {&(_tg__ZTV11S7856C17_nt__8S7856C32[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C32[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A1__8S7856C32[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C32[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__8S7856C32[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A2__8S7856C32[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7856C32[];
extern  VTBL_ENTRY _ZTV8S7856C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C32[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D0Ev,_ZThn20_N8S7856C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C16D1Ev,_ZThn20_N8S7856C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C32D0Ev,_ZThn20_N8S7856C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7856C32D1Ev,_ZThn20_N8S7856C32D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C32 = {  "S7856C32", // class name
  bases_S7856C32, 22,
  &(vtc_S7856C32[0]), // expected_vtbl_contents
  &(vtt_S7856C32[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7856C32),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7856C32),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7856C32),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7856C1  : S7856C2 , S7856C26 , virtual S7856C32 {
  ~S7856C1(); // tgen
  S7856C1(); // tgen
};
//SIG(1 S7856C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ VBC8{ m} VBC9{ m} VBC10{ BC8 VBC11{ VBC8 BC9 VBC12{ m}} VBC9} BC12 BC13{ BC9 VBC8 VBC12 BC11 VBC10 vd} vd} VBC14{ BC12 BC9 BC11 Fi} VBC13 vd Fi[2]} VBC15{ m} VBC16{ VBC11 VBC17{ VBC9} VBC14 BC12 VBC7 vd Fi} BC18{ VBC13 BC14 BC10 BC12 vd} vd} BC8 BC10 BC19{ BC15 VBC8 BC6 VBC18 vd v1} vd} VBC20{ BC17 VBC12 BC5 BC21{ BC9 BC17 vd} vd} BC22{ BC10 VBC6 BC5 VBC4 vd Fc} VBC23{ VBC14 VBC24{ m} BC25{ BC13 BC26{ VBC9} BC4 VBC27{ BC16 BC28{ BC7 VBC14 VBC29{ VBC7 VBC5 vd} BC21 BC24 Fi} VBC24} BC5} BC13 VBC22 FC13 Fi:26} vd Fp} vd Fi FC30{ VBC18 BC31{ VBC11 BC22 Fp} VBC24 vd}} BC26 VBC32{ BC16 BC9}}


S7856C1 ::~S7856C1(){ note_dtor("S7856C1", this);} // tgen
S7856C1 ::S7856C1(){ note_ctor("S7856C1", this);} // tgen

static void Test_S7856C1()
{
  extern Class_Descriptor cd_S7856C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(94,99)];
    init_test(&cd_S7856C1, buf);
    S7856C1 *dp, &lv = *(dp=new (buf) S7856C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(744,392), "sizeof(S7856C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7856C1)");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C1");
    check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C19::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*), 0, "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C26 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C26*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*), 0, "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C20*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C13*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C16::S7856C11 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C16*)(S7856C32*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C13*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*), ABISELECT(368,200), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C27*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C29*), ABISELECT(360,196), "S7856C1");
    check_base_class_offset(lv, (S7856C7*)(S7856C16*)(S7856C32*), ABISELECT(360,196), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*), ABISELECT(384,208), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C23*), ABISELECT(376,204), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C27*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C14 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C28*)(S7856C27*), ABISELECT(376,204), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C16*)(S7856C32*), ABISELECT(376,204), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*), ABISELECT(400,216), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C6 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*), ABISELECT(392,212), "S7856C1");
    check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C6::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(392,212), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*), ABISELECT(344,184), "S7856C1");
    check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C20*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C5*)(S7856C22*), ABISELECT(344,184), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*), 0, "S7856C1");
    check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C20*), 0, "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*)(S7856C3*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C25*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C5*)(S7856C22*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C27*), ABISELECT(408,220), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C16*)(S7856C32*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*), ABISELECT(408,220), "S7856C1");
    check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C20*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C5*)(S7856C22*), ABISELECT(408,220), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(320,172), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*), ABISELECT(328,176), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*), ABISELECT(336,180), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C4*), ABISELECT(312,168), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(312,168), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C29*), ABISELECT(312,168), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*), ABISELECT(432,232), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*), ABISELECT(440,236), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*), ABISELECT(440,236), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*), ABISELECT(448,240), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*), ABISELECT(424,228), "S7856C1");
    check_base_class_offset(lv, (S7856C18*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(424,228), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C19*)(S7856C4*), ABISELECT(296,156), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C4 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C3*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*)(S7856C3*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C4*)(S7856C22*), ABISELECT(288,152), "S7856C1");
    /*is_ambiguous_... S7856C20::S7856C17_nt */ AMB_check_base_class_offset(lv, (S7856C17_nt*)(S7856C20*), ABISELECT(456,244), "S7856C1");
    /*is_ambiguous_... S7856C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C14::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(472,252), "S7856C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(480,256), "S7856C1");
    /*is_ambiguous_... S7856C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(488,260), "S7856C1");
    check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    check_base_class_offset(lv, (S7856C5*)(S7856C20*), ABISELECT(464,248), "S7856C1");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C21*)(S7856C20*), ABISELECT(496,264), "S7856C1");
    check_base_class_offset(lv, (S7856C20*)(S7856C3*), ABISELECT(456,244), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(256,136), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(264,140), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(272,144), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*)(S7856C3*), ABISELECT(248,132), "S7856C1");
    /*is_ambiguous_... S7856C3::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C22*)(S7856C3*), ABISELECT(240,128), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C23*), 0, "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(512,272), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    check_base_class_offset(lv, (S7856C26*)(S7856C25*)(S7856C23*), ABISELECT(520,276), "S7856C1");
    /*is_ambiguous_... S7856C4::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    /*is_ambiguous_... S7856C4::S7856C10 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    check_base_class_offset(lv, (S7856C15*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C6*)(S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C19*)(S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(536,284), "S7856C1");
    check_base_class_offset(lv, (S7856C4*)(S7856C25*)(S7856C23*), ABISELECT(528,280), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C27*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C27::S7856C16 */ AMB_check_base_class_offset(lv, (S7856C16*)(S7856C27*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(664,352), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    /*is_ambiguous_... S7856C28::S7856C7 */ AMB_check_base_class_offset(lv, (S7856C7*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C29*)(S7856C28*)(S7856C27*), 0, "S7856C1");
    /*is_ambiguous_... S7856C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C17_nt*)(S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C21*)(S7856C28*)(S7856C27*), ABISELECT(672,356), "S7856C1");
    check_base_class_offset(lv, (S7856C24*)(S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C28*)(S7856C27*), ABISELECT(656,348), "S7856C1");
    check_base_class_offset(lv, (S7856C27*)(S7856C25*)(S7856C23*), ABISELECT(640,340), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(560,300), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(568,304), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(576,308), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    /*is_ambiguous_... S7856C25::S7856C5 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C25*)(S7856C23*), ABISELECT(552,296), "S7856C1");
    check_base_class_offset(lv, (S7856C25*)(S7856C23*), ABISELECT(504,268), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C13*)(S7856C23*), ABISELECT(592,316), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C23::S7856C13 */ AMB_check_base_class_offset(lv, (S7856C13*)(S7856C23*), ABISELECT(584,312), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C22*), ABISELECT(688,364), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C22*), ABISELECT(688,364), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(704,372), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C11*)(S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C14*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C10*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(712,376), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(720,380), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C18*)(S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C22 */ AMB_check_base_class_offset(lv, (S7856C5*)(S7856C22*), ABISELECT(696,368), "S7856C1");
    check_base_class_offset(lv, (S7856C22*)(S7856C23*), ABISELECT(688,364), "S7856C1");
    check_base_class_offset(lv, (S7856C23*)(S7856C3*), ABISELECT(504,268), "S7856C1");
    check_base_class_offset(lv, (S7856C3*)(S7856C2*), ABISELECT(240,128), "S7856C1");
    check_base_class_offset(lv, (S7856C2*), 0, "S7856C1");
    /*is_ambiguous_... S7856C1::S7856C26 */ AMB_check_base_class_offset(lv, (S7856C26*), ABISELECT(232,124), "S7856C1");
    /*is_ambiguous_... S7856C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7856C16*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    check_base_class_offset(lv, (S7856C16*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    /*is_ambiguous_... S7856C32::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7856C32*), ABISELECT(728,384), "S7856C1");
    check_base_class_offset(lv, (S7856C32*), ABISELECT(728,384), "S7856C1");
    test_class_info(&lv, &cd_S7856C1);
    dp->~S7856C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7856C1(Test_S7856C1, "S7856C1", ABISELECT(744,392));

#else // __cplusplus

extern void _ZN7S7856C1C1Ev();
extern void _ZN7S7856C1D1Ev();
Name_Map name_map_S7856C1[] = {
  NSPAIR(_ZN7S7856C1C1Ev),
  NSPAIR(_ZN7S7856C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C20;
extern VTBL_ENTRY _ZTI8S7856C20[];
extern  VTBL_ENTRY _ZTV8S7856C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C20[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C6;
extern VTBL_ENTRY _ZTI7S7856C6[];
extern  VTBL_ENTRY _ZTV7S7856C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C6[];
extern Class_Descriptor cd_S7856C19;
extern VTBL_ENTRY _ZTI8S7856C19[];
extern  VTBL_ENTRY _ZTV8S7856C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C19[];
extern Class_Descriptor cd_S7856C4;
extern VTBL_ENTRY _ZTI7S7856C4[];
extern  VTBL_ENTRY _ZTV7S7856C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S7856C7;
extern VTBL_ENTRY _ZTI7S7856C7[];
extern  VTBL_ENTRY _ZTV7S7856C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C7[];
extern Class_Descriptor cd_S7856C29;
extern VTBL_ENTRY _ZTI8S7856C29[];
extern  VTBL_ENTRY _ZTV8S7856C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C29[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C17_nt;
extern VTBL_ENTRY _ZTI11S7856C17_nt[];
extern  VTBL_ENTRY _ZTV11S7856C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S7856C17_nt[];
extern Class_Descriptor cd_S7856C21;
extern VTBL_ENTRY _ZTI8S7856C21[];
extern  VTBL_ENTRY _ZTV8S7856C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C28;
extern VTBL_ENTRY _ZTI8S7856C28[];
extern  VTBL_ENTRY _ZTV8S7856C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C28[];
extern Class_Descriptor cd_S7856C27;
extern VTBL_ENTRY _ZTI8S7856C27[];
extern  VTBL_ENTRY _ZTV8S7856C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C27[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C25;
extern VTBL_ENTRY _ZTI8S7856C25[];
extern  VTBL_ENTRY _ZTV8S7856C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C25[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C13;
extern VTBL_ENTRY _ZTI8S7856C13[];
extern  VTBL_ENTRY _ZTV8S7856C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C13[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C11;
extern VTBL_ENTRY _ZTI8S7856C11[];
extern  VTBL_ENTRY _ZTV8S7856C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C11[];
extern Class_Descriptor cd_S7856C14;
extern VTBL_ENTRY _ZTI8S7856C14[];
extern  VTBL_ENTRY _ZTV8S7856C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C10;
extern VTBL_ENTRY _ZTI8S7856C10[];
extern  VTBL_ENTRY _ZTV8S7856C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C18;
extern VTBL_ENTRY _ZTI8S7856C18[];
extern  VTBL_ENTRY _ZTV8S7856C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C18[];
extern Class_Descriptor cd_S7856C5;
extern VTBL_ENTRY _ZTI7S7856C5[];
extern  VTBL_ENTRY _ZTV7S7856C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C5[];
extern Class_Descriptor cd_S7856C22;
extern VTBL_ENTRY _ZTI8S7856C22[];
extern  VTBL_ENTRY _ZTV8S7856C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C22[];
extern Class_Descriptor cd_S7856C23;
extern VTBL_ENTRY _ZTI8S7856C23[];
extern  VTBL_ENTRY _ZTV8S7856C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C23[];
extern Class_Descriptor cd_S7856C3;
extern VTBL_ENTRY _ZTI7S7856C3[];
extern  VTBL_ENTRY _ZTV7S7856C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C3[];
extern Class_Descriptor cd_S7856C2;
extern VTBL_ENTRY _ZTI7S7856C2[];
extern  VTBL_ENTRY _ZTV7S7856C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C2[];
extern Class_Descriptor cd_S7856C26;
extern VTBL_ENTRY _ZTI8S7856C26[];
extern  VTBL_ENTRY _ZTV8S7856C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C26[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C16;
extern VTBL_ENTRY _ZTI8S7856C16[];
extern  VTBL_ENTRY _ZTV8S7856C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C32;
extern VTBL_ENTRY _ZTI8S7856C32[];
extern  VTBL_ENTRY _ZTV8S7856C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7856C32[];
static Base_Class bases_S7856C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S77C13_nt,    ABISELECT(344,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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(344,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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C11,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C10,    ABISELECT(344,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    211, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(360,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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(368,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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(360,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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(360,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(360,196), //bcp->offset
    149, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    204, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(376,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(384,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(376,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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(376,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(376,204), //bcp->offset
    159, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(400,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(392,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
    20, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(392,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    217, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(392,212), //bcp->offset
    163, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C6,    ABISELECT(344,184), //bcp->offset
    136, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(408,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(408,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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(408,220), //bcp->offset
    173, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(312,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(320,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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(312,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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(328,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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(328,176), //bcp->offset
    130, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(336,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_S7856C18,    ABISELECT(312,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(312,168), //bcp->offset
    113, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S77C13_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
    52, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(288,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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(296,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(432,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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    229, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(424,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    228, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(440,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(440,236), //bcp->offset
    197, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    230, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    50, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(424,228), //bcp->offset
    186, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7856C19,    ABISELECT(296,156), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(288,152), //bcp->offset
    79, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    80, //immediately_derived
  0, 1},
  {&cd_S7856C17_nt,    ABISELECT(456,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    241, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    240, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(480,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(480,256), //bcp->offset
    236, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    242, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(464,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    239, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(464,248), //bcp->offset
    220, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    238, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(496,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(496,264), //bcp->offset
    242, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    257, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C20,    ABISELECT(456,244), //bcp->offset
    203, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S77C13_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
    69, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    74, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(248,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
    73, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(264,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
    76, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(264,140), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,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
    78, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(248,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(248,132), //bcp->offset
    57, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    138, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    108, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(512,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    273, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C26,    ABISELECT(520,276), //bcp->offset
    272, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    276, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    89, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    278, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C6,    ABISELECT(536,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    281, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7856C19,    ABISELECT(536,284), //bcp->offset
    293, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    280, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C4,    ABISELECT(528,280), //bcp->offset
    275, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    277, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(640,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
    95, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(640,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    379, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(664,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    388, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    387, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7856C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    386, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    420, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(672,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C17_nt,    ABISELECT(672,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    394, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S7856C21,    ABISELECT(672,356), //bcp->offset
    376, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    393, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S7856C28,    ABISELECT(656,348), //bcp->offset
    358, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    385, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    108, //immediately_derived
  0, 0},
  {&cd_S7856C27,    ABISELECT(640,340), //bcp->offset
    338, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    378, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(560,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
    113, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    310, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    309, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(568,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(568,304), //bcp->offset
    323, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    311, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(576,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(552,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    308, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(552,296), //bcp->offset
    307, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    307, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S7856C25,    ABISELECT(504,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    271, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    123, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(584,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    348, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S7856C13,    ABISELECT(584,312), //bcp->offset
    329, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    347, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    125, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(688,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    432, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(704,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    129, //immediately_derived
  0, 0},
  {&cd_S7856C11,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    437, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    130, //immediately_derived
  0, 0},
  {&cd_S7856C14,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    436, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(712,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
    132, //immediately_derived
  0, 0},
  {&cd_S7856C10,    ABISELECT(712,376), //bcp->offset
    417, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    438, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(720,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
    -1, //init_seq
    134, //immediately_derived
  0, 0},
  {&cd_S7856C18,    ABISELECT(696,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    435, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S7856C5,    ABISELECT(696,368), //bcp->offset
    401, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    434, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S7856C22,    ABISELECT(688,364), //bcp->offset
    381, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    431, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    137, //immediately_derived
  0, 1},
  {&cd_S7856C23,    ABISELECT(504,268), //bcp->offset
    247, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    270, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    138, //immediately_derived
  0, 1},
  {&cd_S7856C3,    ABISELECT(240,128), //bcp->offset
    31, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    139, //immediately_derived
  0, 1},
  {&cd_S7856C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    77, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C26,    ABISELECT(232,124), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    78, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    142, //immediately_derived
  0, 0},
  {&cd_S7856C16,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    470, //bcp->base_subarray_index_in_construction_vtbl_array
    75, //init_seq
    144, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(728,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    144, //immediately_derived
  0, 0},
  {&cd_S7856C32,    ABISELECT(728,384), //bcp->offset
    423, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    469, //bcp->base_subarray_index_in_construction_vtbl_array
    76, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7856C1[];
extern void _ZN7S7856C1D1Ev();
extern void _ZN7S7856C1D0Ev();
extern void ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7856C1D1Ev,_ZThn128_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7856C1D0Ev,_ZThn128_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n192_N7S7856C1D1Ev,_ZTvn4_n96_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C1D0Ev,_ZTvn4_n96_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7856C1D1Ev,_ZThn152_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7856C1D0Ev,_ZThn152_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7856C1D1Ev,_ZTvn4_n68_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C1D0Ev,_ZTvn4_n68_N7S7856C1D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn312_N7S7856C1D1Ev,_ZThn168_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn312_N7S7856C1D0Ev,_ZThn168_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S7856C1D1Ev,_ZThn184_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S7856C1D0Ev,_ZThn184_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn360_N7S7856C1D1Ev,_ZThn196_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn360_N7S7856C1D0Ev,_ZThn196_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn392_N7S7856C1D1Ev,_ZThn212_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn392_N7S7856C1D0Ev,_ZThn212_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S7856C1D1Ev,_ZThn220_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S7856C1D0Ev,_ZThn220_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn424_N7S7856C1D1Ev,_ZThn228_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn424_N7S7856C1D0Ev,_ZThn228_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C1D1Ev,_ZThn244_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C1D0Ev,_ZThn244_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S7856C1D1Ev,_ZTvn4_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C1D0Ev,_ZTvn4_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C1D1Ev,_ZTvn20_n60_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C1D0Ev,_ZTvn20_n60_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn504_N7S7856C1D1Ev,_ZThn268_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn504_N7S7856C1D0Ev,_ZThn268_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n176_N7S7856C1D1Ev,_ZTvn12_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C1D0Ev,_ZTvn12_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C1D1Ev,_ZTvn16_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C1D0Ev,_ZTvn16_n88_N7S7856C1D0Ev)();
extern void _ZN8S7856C192v1Ev();
extern void ABISELECT(_ZTvn48_n176_N7S7856C1D1Ev,_ZTvn28_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C1D0Ev,_ZTvn28_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C1D1Ev,_ZTvn44_n88_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C1D0Ev,_ZTvn44_n88_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S7856C1D1Ev,_ZThn340_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S7856C1D0Ev,_ZThn340_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n144_N7S7856C1D1Ev,_ZTvn8_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C1D0Ev,_ZTvn8_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C1D1Ev,_ZTvn16_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C1D0Ev,_ZTvn16_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn688_N7S7856C1D1Ev,_ZThn364_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn688_N7S7856C1D0Ev,_ZThn364_N7S7856C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7856C1D1Ev,_ZTvn4_n72_N7S7856C1D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C1D0Ev,_ZTvn4_n72_N7S7856C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev)();
extern void ABISELECT(_ZThn728_N7S7856C1D1Ev,_ZThn384_N7S7856C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev)();
extern void ABISELECT(_ZThn728_N7S7856C1D0Ev,_ZThn384_N7S7856C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7856C1[] = {
  ABISELECT(728,384),
  ABISELECT(688,364),
  0,
  ABISELECT(640,340),
  0,
  ABISELECT(504,268),
  ABISELECT(456,244),
  ABISELECT(424,228),
  ABISELECT(288,152),
  ABISELECT(240,128),
  0,
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&_ZN7S7856C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C1D0Ev,
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-240,-128),
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C1D1Ev,_ZTvn4_n96_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C1D0Ev,_ZTvn4_n96_N7S7856C1D0Ev),
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C1D1Ev,_ZTvn4_n68_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C1D0Ev,_ZTvn4_n68_N7S7856C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev),
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev),
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-456,-244),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C1D1Ev,_ZTvn4_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C1D0Ev,_ZTvn4_n60_N7S7856C1D0Ev),
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C1D1Ev,_ZTvn20_n60_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C1D0Ev,_ZTvn20_n60_N7S7856C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(-504,-268),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev),
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C1D1Ev,_ZTvn12_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C1D0Ev,_ZTvn12_n88_N7S7856C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C1D1Ev,_ZTvn16_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C1D0Ev,_ZTvn16_n88_N7S7856C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C1D1Ev,_ZTvn28_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C1D0Ev,_ZTvn28_n88_N7S7856C1D0Ev),
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C1D1Ev,_ZTvn44_n88_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C1D0Ev,_ZTvn44_n88_N7S7856C1D0Ev),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C1D1Ev,_ZTvn8_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C1D0Ev,_ZTvn8_n72_N7S7856C1D0Ev),
  ABISELECT(-672,-356),
  ABISELECT(-672,-356),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C1D1Ev,_ZTvn16_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C1D0Ev,_ZTvn16_n72_N7S7856C1D0Ev),
  ABISELECT(-688,-364),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C1D1Ev,_ZTvn4_n72_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C1D0Ev,_ZTvn4_n72_N7S7856C1D0Ev),
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  (VTBL_ENTRY)&(_ZTI7S7856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7856C1[];
extern void _ZN7S7856C2D1Ev();
extern void _ZN7S7856C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C2__7S7856C1[] = {
  ABISELECT(688,364),
  0,
  ABISELECT(640,340),
  0,
  ABISELECT(504,268),
  ABISELECT(456,244),
  ABISELECT(424,228),
  ABISELECT(288,152),
  ABISELECT(240,128),
  0,
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&_ZN7S7856C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C2D0Ev,
};
extern void ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn240_N7S7856C2D1Ev,_ZThn128_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn240_N7S7856C2D0Ev,_ZThn128_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C2__7S7856C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn288_N7S7856C2D1Ev,_ZThn152_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn288_N7S7856C2D0Ev,_ZThn152_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C2__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-288,-152),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn312_N7S7856C2D1Ev,_ZThn168_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn312_N7S7856C2D0Ev,_ZThn168_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C2__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn344_N7S7856C2D1Ev,_ZThn184_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn344_N7S7856C2D0Ev,_ZThn184_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C2__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn360_N7S7856C2D1Ev,_ZThn196_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn360_N7S7856C2D0Ev,_ZThn196_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C2__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn392_N7S7856C2D1Ev,_ZThn212_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn392_N7S7856C2D0Ev,_ZThn212_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn408_N7S7856C2D1Ev,_ZThn220_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn408_N7S7856C2D0Ev,_ZThn220_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C2__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C2__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D1Ev,_ZTvn4_n68_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C2D0Ev,_ZTvn4_n68_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn424_N7S7856C2D1Ev,_ZThn228_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn424_N7S7856C2D0Ev,_ZThn228_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C2__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn456_N7S7856C2D1Ev,_ZThn244_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn456_N7S7856C2D0Ev,_ZThn244_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C2__7S7856C1[] = {
  ABISELECT(-456,-244),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D1Ev,_ZTvn4_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C2D0Ev,_ZTvn4_n60_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C2__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-496,-264),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D1Ev,_ZTvn20_n60_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C2D0Ev,_ZTvn20_n60_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D1Ev,_ZTvn4_n96_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n192_N7S7856C2D0Ev,_ZTvn4_n96_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn504_N7S7856C2D1Ev,_ZThn268_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn504_N7S7856C2D0Ev,_ZThn268_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C2__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-504,-268),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D1Ev,_ZTvn12_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C2D0Ev,_ZTvn12_n88_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D1Ev,_ZTvn16_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C2D0Ev,_ZTvn16_n88_N7S7856C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn640_N7S7856C2D1Ev,_ZThn340_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn640_N7S7856C2D0Ev,_ZThn340_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C2__7S7856C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C2__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D1Ev,_ZTvn8_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C2D0Ev,_ZTvn8_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-672,-356),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D1Ev,_ZTvn16_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C2D0Ev,_ZTvn16_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D1Ev,_ZTvn28_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C2D0Ev,_ZTvn28_n88_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D1Ev,_ZTvn44_n88_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C2D0Ev,_ZTvn44_n88_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZThn688_N7S7856C2D1Ev,_ZThn364_N7S7856C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev)();
extern void ABISELECT(_ZThn688_N7S7856C2D0Ev,_ZThn364_N7S7856C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C2__7S7856C1[] = {
  ABISELECT(-688,-364),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C2__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D1Ev,_ZTvn4_n72_N7S7856C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C2D0Ev,_ZTvn4_n72_N7S7856C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  (VTBL_ENTRY)&(_ZTI7S7856C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__A1__7S7856C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C3D1Ev();
extern void _ZN7S7856C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C3__7S7856C1[] = {
  ABISELECT(448,236),
  ABISELECT(-240,-128),
  ABISELECT(400,212),
  ABISELECT(-240,-128),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&_ZN7S7856C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C3D0Ev,
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(184,100),
  ABISELECT(72,40),
  ABISELECT(48,24),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-128),
  ABISELECT(152,84),
  ABISELECT(136,76),
  ABISELECT(104,56),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(104,56),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C1[] = {
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-184,-100),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C3__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C3__7S7856C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C3__7S7856C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C3__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C3__7S7856C1[] = {
  ABISELECT(-168,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D1Ev,_ZTvn4_n68_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7856C3D0Ev,_ZTvn4_n68_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-184,-100),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C3__7S7856C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D1Ev,_ZTvn4_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S7856C3D0Ev,_ZTvn4_n60_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D1Ev,_ZTvn20_n60_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S7856C3D0Ev,_ZTvn20_n60_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-248,-132),
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(-248,-132),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(144,80),
  ABISELECT(-248,-132),
  ABISELECT(-248,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D1Ev,_ZThn4_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C3D0Ev,_ZThn4_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(80,44),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C3__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-264,-140),
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D1Ev,_ZTvn12_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n176_N7S7856C3D0Ev,_ZTvn12_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D1Ev,_ZTvn16_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n176_N7S7856C3D0Ev,_ZTvn16_n88_N7S7856C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C3__7S7856C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D1Ev,_ZTvn8_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N7S7856C3D0Ev,_ZTvn8_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C3__7S7856C1[] = {
  ABISELECT(240,128),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D1Ev,_ZTv0_n64_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7856C3D0Ev,_ZTv0_n64_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D1Ev,_ZTvn16_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N7S7856C3D0Ev,_ZTvn16_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D1Ev,_ZTvn28_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n176_N7S7856C3D0Ev,_ZTvn28_n88_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D1Ev,_ZTvn44_n88_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n176_N7S7856C3D0Ev,_ZTvn44_n88_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C3__7S7856C1[] = {
  ABISELECT(-448,-236),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-448,-236),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-456,-240),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D1Ev,_ZTvn4_n72_N7S7856C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7856C3D0Ev,_ZTvn4_n72_N7S7856C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI7S7856C3[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C4__7S7856C1[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C4__A2__7S7856C1[] = {
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C4__7S7856C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C4__7S7856C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C4__7S7856C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C4__7S7856C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C4__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C4__7S7856C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C5__7S7856C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C5__7S7856C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C5__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C5__7S7856C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C5__7S7856C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C6__7S7856C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C6__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C6__7S7856C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C7__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C7__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C14__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C13__A3__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C16__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C16__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C16__7S7856C1[] = {
  ABISELECT(48,24),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__7S7856C1[] = {
  ABISELECT(-408,-220),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C18__A2__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C1[] = {
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(32,16),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void _ZN8S7856C20D1Ev();
extern void _ZN8S7856C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C20__7S7856C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-456,-244),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-456,-244),
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&_ZN8S7856C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C1[] = {
  ABISELECT(-456,-244),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C1[] = {
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(72,36),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(104,52),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(72,36),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C20__7S7856C1[] = {
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C1[] = {
  ABISELECT(-496,-264),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C20__7S7856C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-464,-248),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-464,-248),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-464,-248),
  ABISELECT(-464,-248),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D1Ev,_ZThn4_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C20D0Ev,_ZThn4_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C20__7S7856C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C20__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C20__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C20__7S7856C1[] = {
  ABISELECT(64,32),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D1Ev,_ZTv0_n32_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C20D0Ev,_ZTv0_n32_N8S7856C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C20__7S7856C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D1Ev,_ZTv0_n44_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C20D0Ev,_ZTv0_n44_N8S7856C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C1[] = {
  ABISELECT(-480,-256),
  ABISELECT(-136,-72),
  ABISELECT(-480,-256),
  ABISELECT(-480,-256),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
};
extern void ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C20__7S7856C1[] = {
  ABISELECT(-496,-264),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7856C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D1Ev,_ZThn20_N8S7856C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7856C20D0Ev,_ZThn20_N8S7856C20D0Ev),
};
extern void _ZN8S7856C23D1Ev();
extern void _ZN8S7856C23D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C23__7S7856C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(184,96),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&_ZN8S7856C23D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C23D0Ev,
};
extern void _ZN8S7856C25D1Ev();
extern void _ZN8S7856C25D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  ABISELECT(136,72),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-504,-268),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-72),
  ABISELECT(-160,-84),
  ABISELECT(-192,-100),
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&_ZN8S7856C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C25D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-504,-268),
  ABISELECT(-504,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C26[0]),
};
extern void _ZN7S7856C4D1Ev();
extern void _ZN7S7856C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&_ZN7S7856C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[] = {
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN8S7856C19D1Ev();
extern void _ZN8S7856C19D0Ev();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&_ZN8S7856C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN7S7856C6D1Ev();
extern void _ZN7S7856C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&_ZN7S7856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C6D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(176,88),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI7S7856C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(176,88),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C19[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(216,112),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(184,96),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(168,84),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(152,76),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(136,68),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(120,60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev)();
extern void ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D1Ev,_ZThn4_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7856C4D0Ev,_ZThn4_N7S7856C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(104,52),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S7856C4[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C1[] = {
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(208,112),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(144,76),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D1Ev,_ZThn12_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C25D0Ev,_ZThn12_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D1Ev,_ZTv0_n60_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C25D0Ev,_ZTv0_n60_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D1Ev,_ZTv0_n32_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C25D0Ev,_ZTv0_n32_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D1Ev,_ZTv0_n44_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C25D0Ev,_ZTv0_n44_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D1Ev,_ZThn16_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C25D0Ev,_ZThn16_N8S7856C25D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(80,40),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D1Ev,_ZTv0_n36_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C25D0Ev,_ZTv0_n36_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D1Ev,_ZTvn8_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C25D0Ev,_ZTvn8_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(504,268),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(504,268),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D1Ev,_ZTv0_n64_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C25D0Ev,_ZTv0_n64_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D1Ev,_ZTvn16_n72_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C25D0Ev,_ZTvn16_n72_N8S7856C25D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D1Ev,_ZThn28_N8S7856C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C25D0Ev,_ZThn28_N8S7856C25D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C25[0]),
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C138S7856C23__A4__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(240,128),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C23__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C23__7S7856C1[] = {
  ABISELECT(160,84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-520,-276),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-528,-280),
  ABISELECT(-136,-68),
  ABISELECT(-152,-76),
  ABISELECT(-184,-96),
  ABISELECT(-168,-84),
  ABISELECT(-184,-96),
  ABISELECT(-216,-112),
  ABISELECT(-528,-280),
  ABISELECT(-184,-96),
  ABISELECT(-528,-280),
  ABISELECT(-528,-280),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D1Ev,_ZThn12_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7856C23D0Ev,_ZThn12_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C23__7S7856C1[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D1Ev,_ZTv0_n60_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C23D0Ev,_ZTv0_n60_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C23__7S7856C1[] = {
  ABISELECT(144,72),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C23__7S7856C1[] = {
  ABISELECT(112,56),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D1Ev,_ZTv0_n32_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C23D0Ev,_ZTv0_n32_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C23__7S7856C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D1Ev,_ZTv0_n44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C23D0Ev,_ZTv0_n44_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-144,-72),
  ABISELECT(-160,-80),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-536,-284),
  ABISELECT(-192,-100),
  ABISELECT(-536,-284),
  ABISELECT(-536,-284),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D1Ev,_ZThn16_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C23D0Ev,_ZThn16_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(80,40),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D1Ev,_ZTv0_n36_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C23D0Ev,_ZTv0_n36_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D1Ev,_ZTvn8_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n144_N8S7856C23D0Ev,_ZTvn8_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C23__7S7856C1[] = {
  ABISELECT(504,268),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(504,268),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D1Ev,_ZTv0_n64_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C23D0Ev,_ZTv0_n64_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D1Ev,_ZTvn16_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n144_N8S7856C23D0Ev,_ZTvn16_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  ABISELECT(-552,-296),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-208,-112),
  ABISELECT(-552,-296),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  ABISELECT(-160,-84),
  ABISELECT(-552,-296),
  ABISELECT(-552,-296),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D1Ev,_ZThn28_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7856C23D0Ev,_ZThn28_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C1[] = {
  ABISELECT(-568,-304),
  ABISELECT(-224,-120),
  ABISELECT(-568,-304),
  ABISELECT(-568,-304),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A__8S7856C23__7S7856C1[] = {
  ABISELECT(-584,-312),
  ABISELECT(-240,-128),
  ABISELECT(-240,-128),
  ABISELECT(-584,-312),
  ABISELECT(-584,-312),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D1Ev,_ZThn44_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7856C23D0Ev,_ZThn44_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev)();
extern void ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C22__8S7856C23__7S7856C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D1Ev,_ZTvn4_n72_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N8S7856C23D0Ev,_ZTvn4_n72_N8S7856C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(216,116),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(216,116),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D1Ev,_ZTv0_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C23D0Ev,_ZTv0_n68_N8S7856C23D0Ev),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI8S7856C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D1Ev,_ZTvn4_n68_N8S7856C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C23D0Ev,_ZTvn4_n68_N8S7856C23D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void _ZN8S7856C27D1Ev();
extern void _ZN8S7856C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C27__7S7856C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-248,-128),
  ABISELECT(-296,-156),
  ABISELECT(-328,-172),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&_ZN8S7856C27D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C27D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-232,-120),
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  ABISELECT(-296,-156),
  ABISELECT(-640,-340),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
extern void _ZN8S7856C28D1Ev();
extern void _ZN8S7856C28D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&_ZN8S7856C28D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C28D0Ev,
};
extern void _ZN7S7856C7D1Ev();
extern void _ZN7S7856C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
  (VTBL_ENTRY)&_ZN7S7856C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C7D0Ev,
};
extern void _ZN8S7856C13D1Ev();
extern void _ZN8S7856C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
  (VTBL_ENTRY)&_ZN8S7856C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7856C7[0]),
};
extern void _ZN8S7856C21D1Ev();
extern void _ZN8S7856C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C1[] = {
  ABISELECT(-672,-356),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C21[0]),
  (VTBL_ENTRY)&_ZN8S7856C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C1[] = {
  ABISELECT(-672,-356),
  0,
  (VTBL_ENTRY)&(_ZTI11S7856C17_nt[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(312,164),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(656,348),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(656,348),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D1Ev,_ZTv0_n64_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C28D0Ev,_ZTv0_n64_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(296,152),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(344,180),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D1Ev,_ZTv0_n60_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C28D0Ev,_ZTv0_n60_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(264,136),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D1Ev,_ZTv0_n32_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C28D0Ev,_ZTv0_n32_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(248,128),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D1Ev,_ZTv0_n44_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C28D0Ev,_ZTv0_n44_N8S7856C28D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
};
extern void ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C28[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D1Ev,_ZThn8_N8S7856C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C28D0Ev,_ZThn8_N8S7856C28D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C27__7S7856C1[] = {
  ABISELECT(296,156),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[] = {
  ABISELECT(232,120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D1Ev,_ZTv0_n44_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C27D0Ev,_ZTv0_n44_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C27__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C27__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C28__8S7856C27__7S7856C1[] = {
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-656,-348),
  ABISELECT(-264,-136),
  ABISELECT(-312,-164),
  ABISELECT(-344,-180),
  ABISELECT(-296,-152),
  ABISELECT(-656,-348),
  ABISELECT(-280,-144),
  ABISELECT(-656,-348),
  ABISELECT(-312,-164),
  ABISELECT(-312,-164),
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D1Ev,_ZThn8_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7856C27D0Ev,_ZThn8_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C29__8S7856C27__7S7856C1[] = {
  ABISELECT(640,340),
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  ABISELECT(640,340),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D1Ev,_ZTv0_n64_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7856C27D0Ev,_ZTv0_n64_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C27__7S7856C1[] = {
  ABISELECT(328,172),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(328,172),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D1Ev,_ZTv0_n60_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C27D0Ev,_ZTv0_n60_N8S7856C27D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A2__8S7856C27__7S7856C1[] = {
  ABISELECT(248,128),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D1Ev,_ZTv0_n32_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C27D0Ev,_ZTv0_n32_N8S7856C27D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
};
extern void ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev)();
extern void ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C1[] = {
  ABISELECT(-672,-356),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7856C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D1Ev,_ZThn16_N8S7856C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7856C27D0Ev,_ZThn16_N8S7856C27D0Ev),
};
extern void _ZN8S7856C29D1Ev();
extern void _ZN8S7856C29D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C29__7S7856C1[] = {
  ABISELECT(408,220),
  ABISELECT(408,220),
  0,
  ABISELECT(392,212),
  ABISELECT(376,204),
  ABISELECT(344,184),
  ABISELECT(312,168),
  ABISELECT(344,184),
  ABISELECT(360,196),
  0,
  ABISELECT(344,184),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&_ZN8S7856C29D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C29D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn360_N8S7856C29D1Ev,_ZThn196_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn360_N8S7856C29D0Ev,_ZThn196_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C29__7S7856C1[] = {
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn344_N8S7856C29D1Ev,_ZThn184_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn344_N8S7856C29D0Ev,_ZThn184_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C29__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn312_N8S7856C29D1Ev,_ZThn168_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn312_N8S7856C29D0Ev,_ZThn168_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7856C5__8S7856C29__7S7856C1[] = {
  ABISELECT(-312,-168),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C29__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn392_N8S7856C29D1Ev,_ZThn212_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn392_N8S7856C29D0Ev,_ZThn212_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C29__7S7856C1[] = {
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev)();
extern void ABISELECT(_ZThn408_N8S7856C29D1Ev,_ZThn220_N8S7856C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev)();
extern void ABISELECT(_ZThn408_N8S7856C29D0Ev,_ZThn220_N8S7856C29D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C29__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  (VTBL_ENTRY)&(_ZTI8S7856C29[0]),
};
extern void _ZN8S7856C22D1Ev();
extern void _ZN8S7856C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-264,-136),
  ABISELECT(-376,-196),
  ABISELECT(-400,-212),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-688,-364),
  ABISELECT(-296,-152),
  ABISELECT(-312,-160),
  ABISELECT(-344,-180),
  ABISELECT(-328,-168),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&_ZN8S7856C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C22__A9__7S7856C1[] = {
  ABISELECT(-688,-364),
  ABISELECT(-344,-180),
  ABISELECT(-688,-364),
  ABISELECT(-688,-364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void _ZN7S7856C5D1Ev();
extern void _ZN7S7856C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&_ZN7S7856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7856C5D0Ev,
};
extern void _ZN8S7856C18D1Ev();
extern void _ZN8S7856C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&_ZN8S7856C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C1[] = {
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[] = {
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(368,192),
  (VTBL_ENTRY)&(_ZTI8S7856C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(304,156),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7856C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(352,184),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(352,184),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(336,172),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(336,172),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(304,156),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(288,148),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7856C5[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(344,180),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(344,180),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(328,168),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(328,168),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(312,160),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(296,152),
  ABISELECT(-392,-212),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-392,-212),
  ABISELECT(-392,-212),
  ABISELECT(296,152),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  ABISELECT(-696,-368),
  ABISELECT(-320,-164),
  ABISELECT(-336,-172),
  ABISELECT(-352,-184),
  ABISELECT(-696,-368),
  ABISELECT(-352,-184),
  ABISELECT(-352,-184),
  ABISELECT(-304,-156),
  ABISELECT(-696,-368),
  ABISELECT(-696,-368),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D1Ev,_ZThn4_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7856C22D0Ev,_ZThn4_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(280,144),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-408,-220),
  ABISELECT(-408,-220),
  ABISELECT(-64,-36),
  ABISELECT(-408,-220),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-712,-376),
  ABISELECT(-368,-192),
  ABISELECT(-712,-376),
  ABISELECT(-712,-376),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C4__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(8,4),
  ABISELECT(400,212),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-288,-152),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(-288,-152),
  ABISELECT(56,32),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(376,196),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-312,-168),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-312,-168),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-312,-168),
  ABISELECT(-312,-168),
  ABISELECT(376,196),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-328,-176),
  ABISELECT(16,8),
  ABISELECT(-328,-176),
  ABISELECT(-328,-176),
  ABISELECT(360,188),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev)();
extern void _ZN8S7856C192v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-296,-156),
  ABISELECT(48,28),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(392,208),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D1Ev,_ZTvn4_n68_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7856C22D0Ev,_ZTvn4_n68_N8S7856C22D0Ev),
  (VTBL_ENTRY)&_ZN8S7856C192v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(264,136),
  ABISELECT(-424,-228),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-424,-228),
  ABISELECT(-424,-228),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C1[] = {
  ABISELECT(-440,-236),
  ABISELECT(-96,-52),
  ABISELECT(-440,-236),
  ABISELECT(-440,-236),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7856C22[0]),
};
extern void _ZN8S7856C32D1Ev();
extern void _ZN8S7856C32D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C32__7S7856C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&_ZN8S7856C32D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C32D0Ev,
};
extern void _ZN8S7856C16D1Ev();
extern void _ZN8S7856C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-384,-200),
  ABISELECT(-368,-188),
  ABISELECT(-352,-180),
  ABISELECT(-320,-164),
  ABISELECT(-728,-384),
  ABISELECT(-728,-384),
  ABISELECT(-384,-200),
  ABISELECT(-728,-384),
  0,
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&_ZN8S7856C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7856C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C168S7856C32__A2__7S7856C1[] = {
  ABISELECT(368,188),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI8S7856C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D1Ev,_ZTv0_n32_N8S7856C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C16D0Ev,_ZTv0_n32_N8S7856C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7856C10__8S7856C32__7S7856C1[] = {
  ABISELECT(-344,-184),
  0,
  ABISELECT(-344,-184),
  ABISELECT(-344,-184),
  ABISELECT(384,200),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
static  VTBL_ENTRY _tg__ZTV11S7856C17_nt__8S7856C32__7S7856C1[] = {
  ABISELECT(-408,-220),
  ABISELECT(320,164),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7856C14__8S7856C32__7S7856C1[] = {
  ABISELECT(-376,-204),
  ABISELECT(-376,-204),
  ABISELECT(352,180),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7856C7__8S7856C32__7S7856C1[] = {
  ABISELECT(368,188),
  ABISELECT(-360,-196),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-360,-196),
  ABISELECT(-360,-196),
  ABISELECT(368,188),
  (VTBL_ENTRY)&(_ZTI8S7856C32[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D1Ev,_ZTv0_n32_N8S7856C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7856C32D0Ev,_ZTv0_n32_N8S7856C32D0Ev),
};
static  VTT_ENTRY vtt_S7856C1[] = {
  {&(_ZTV7S7856C1[26]),  26,436},
  {&(_tg__ZTV7S7856C2__7S7856C1[25]),  25,27},
  {&(_tg__ZTV7S7856C3__7S7856C2__7S7856C1[24]),  24,26},
  {&(_tg__ZTV7S7856C4__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C2__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C2__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C2__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C2__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C2__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C2__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C2__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C2__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C2__7S7856C1[25]),  25,27},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C2__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C2__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C2__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C26__A1__7S7856C1[3]),  3,3},
  {&(_ZTV7S7856C1[55]),  55,436},
  {&(_ZTV7S7856C1[97]),  97,436},
  {&(_ZTV7S7856C1[128]),  128,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[157]),  157,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[147]),  147,436},
  {&(_ZTV7S7856C1[163]),  163,436},
  {&(_ZTV7S7856C1[171]),  171,436},
  {&(_ZTV7S7856C1[184]),  184,436},
  {&(_ZTV7S7856C1[184]),  184,436},
  {&(_ZTV7S7856C1[136]),  136,436},
  {&(_ZTV7S7856C1[110]),  110,436},
  {&(_ZTV7S7856C1[195]),  195,436},
  {&(_ZTV7S7856C1[203]),  203,436},
  {&(_ZTV7S7856C1[218]),  218,436},
  {&(_ZTV7S7856C1[234]),  234,436},
  {&(_ZTV7S7856C1[242]),  242,436},
  {&(_ZTV7S7856C1[245]),  245,436},
  {&(_ZTV7S7856C1[71]),  71,436},
  {&(_ZTV7S7856C1[79]),  79,436},
  {&(_ZTV7S7856C1[270]),  270,436},
  {&(_ZTV7S7856C1[275]),  275,436},
  {&(_ZTV7S7856C1[291]),  291,436},
  {&(_ZTV7S7856C1[304]),  304,436},
  {&(_ZTV7S7856C1[356]),  356,436},
  {&(_ZTV7S7856C1[374]),  374,436},
  {&(_ZTV7S7856C1[26]),  26,436},
  {&(_ZTV7S7856C1[379]),  379,436},
  {&(_ZTV7S7856C1[321]),  321,436},
  {&(_ZTV7S7856C1[329]),  329,436},
  {&(_ZTV7S7856C1[336]),  336,436},
  {&(_ZTV7S7856C1[399]),  399,436},
  {&(_ZTV7S7856C1[415]),  415,436},
  {&(_ZTV7S7856C1[423]),  423,436},
  {&(_ZTV7S7856C1[31]),  31,436},
  {&(_ZTV7S7856C1[434]),  434,436},
  {&(_tg__ZTV7S7856C3__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C227S7856C3__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C227S7856C3__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C227S7856C3__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C227S7856C3__A2__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C227S7856C3__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C227S7856C3__A7__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C227S7856C3__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C227S7856C3__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C227S7856C3__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C227S7856C3__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C227S7856C3__A2__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C227S7856C3__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C227S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C227S7856C3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C227S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C227S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C227S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C227S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C227S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C227S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C227S7856C3__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C227S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__7S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C3__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C3__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C3__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C22__A2__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C23__7S7856C3__7S7856C1[23]),  23,25},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C3__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C3__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__7S7856C3__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C3__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C3__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__A1__7S7856C3__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C4__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C4__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C4__7S7856C1[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C4__A1__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C4__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C4__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C4__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C4__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C4__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C4__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C4__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C4__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C5__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C5__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C5__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C5__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C6__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C6__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C14__7S7856C6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C6__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C7__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C7__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C14__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C14__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C13__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C13__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C16__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C14__8S7856C16__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C16__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C16__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C18__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C18__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C18__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C18__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C18__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C18__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C20__7S7856C1[14]),  14,16},
  {&(_tg__ZTV11S7856C17_nt8S7856C20__A1__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C58S7856C20__A1__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C20__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C20__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C20__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C20__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C20__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C20__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C20__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C20__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C20__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C20__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C20__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C20__7S7856C1[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C20__A2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C5__8S7856C20__7S7856C1[14]),  14,16},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C20__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C20__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C20__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C20__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C20__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C20__7S7856C1[3]),  3,5},
  {&(_tg__ZTV8S7856C23__7S7856C1[21]),  21,23},
  {&(_tg__ZTV8S7856C258S7856C23__7S7856C1[19]),  19,21},
  {&(_tg__ZTV8S7856C138S7856C258S7856C23__A2__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C258S7856C23__A8__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C268S7856C258S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C258S7856C23__A1__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C107S7856C48S7856C258S7856C23__A7__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[10]),  10,12},
  {&(_tg__ZTV7S7856C7__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C68S7856C197S7856C48S7856C258S7856C23__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C7__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C18__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A1__8S7856C197S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C5__7S7856C48S7856C258S7856C23__A1__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C48S7856C258S7856C23__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C19__7S7856C48S7856C258S7856C23__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__7S7856C48S7856C258S7856C23__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__7S7856C48S7856C258S7856C23__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C58S7856C258S7856C23__A3__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C258S7856C23__A5__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C258S7856C23__A10__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C258S7856C23__A8__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C258S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C258S7856C23__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C258S7856C23__A3__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C258S7856C23__A3__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C258S7856C23__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C26__8S7856C258S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C4__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C258S7856C23__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C258S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C14__8S7856C258S7856C23__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A2__8S7856C258S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C258S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C258S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C258S7856C23__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C258S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C258S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C258S7856C23__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C5__A__8S7856C258S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A4__8S7856C258S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C138S7856C23__A4__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C138S7856C23__A11__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C138S7856C23__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C14__8S7856C23__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C268S7856C25__8S7856C23__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C48S7856C25__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C23__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C13__A2__8S7856C23__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C23__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C48S7856C25__8S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A1__8S7856C23__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A3__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C27__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C288S7856C27__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C23__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__8S7856C23__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C58S7856C25__A1__8S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C25__A4__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C13__A__8S7856C23__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C22__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C58S7856C22__A2__8S7856C23__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A6__8S7856C23__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__A1__8S7856C23__7S7856C1[18]),  18,20},
  {&(_tg__ZTV8S7856C197S7856C4__A1__8S7856C23__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C27__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C168S7856C27__A1__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C27__A1__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C27__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C27__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C288S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C78S7856C288S7856C27__A1__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[7]),  7,9},
  {&(_tg__ZTV8S7856C118S7856C137S7856C78S7856C288S7856C27__A9__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C137S7856C78S7856C288S7856C27__A3__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__7S7856C78S7856C288S7856C27__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C288S7856C27__A1__7S7856C1[3]),  3,5},
  {&(_tg__ZTV11S7856C17_nt8S7856C218S7856C288S7856C27__A3__7S7856C1[3]),  3,3},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C288S7856C27__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C29__8S7856C288S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C7__A1__8S7856C288S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__8S7856C288S7856C27__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C288S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C288S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C288S7856C27__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C21__8S7856C288S7856C27__7S7856C1[3]),  3,5},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C27__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C28__8S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV8S7856C29__8S7856C27__7S7856C1[16]),  16,18},
  {&(_tg__ZTV7S7856C5__8S7856C27__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C13__A2__8S7856C27__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__A1__8S7856C27__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C27__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C218S7856C28__8S7856C27__7S7856C1[3]),  3,5},
  {&(_tg__ZTV8S7856C29__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C7__8S7856C29__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C5__8S7856C29__7S7856C1[15]),  15,17},
  {&(_tg__ZTV7S7856C6__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C29__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C29__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C29__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A1__8S7856C29__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C22__A1__7S7856C1[17]),  17,19},
  {&(_tg__ZTV8S7856C108S7856C22__A9__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C22__A9__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C58S7856C22__A4__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C187S7856C58S7856C22__A5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C148S7856C187S7856C58S7856C22__A6__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C118S7856C148S7856C187S7856C58S7856C22__A12__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C11__8S7856C108S7856C187S7856C58S7856C22__A10__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__8S7856C187S7856C58S7856C22__A5__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__A__8S7856C187S7856C58S7856C22__A5__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__7S7856C58S7856C22__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__7S7856C58S7856C22__A4__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__7S7856C58S7856C22__A4__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__7S7856C58S7856C22__A4__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C18__A1__7S7856C58S7856C22__A4__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV7S7856C7__8S7856C22__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C6__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C14__8S7856C22__A1__7S7856C1[4]),  4,4},
  {&(_tg__ZTV8S7856C13__A1__8S7856C22__A1__7S7856C1[8]),  8,10},
  {&(_tg__ZTV7S7856C5__A__8S7856C22__A1__7S7856C1[14]),  14,16},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C16__8S7856C22__A1__7S7856C1[11]),  11,13},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A2__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV7S7856C4__8S7856C22__A1__7S7856C1[18]),  18,20},
  {&(_tg__ZTV7S7856C5__A1__8S7856C22__A1__7S7856C1[15]),  15,17},
  {&(_tg__ZTV8S7856C108S7856C187S7856C5__A3__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C197S7856C4__8S7856C22__A1__7S7856C1[11]),  11,14},
  {&(_tg__ZTV8S7856C18__A2__8S7856C22__A1__7S7856C1[9]),  9,11},
  {&(_tg__ZTV8S7856C108S7856C18__A5__8S7856C22__A1__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C32__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C168S7856C32__A2__7S7856C1[10]),  10,12},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C168S7856C32__A2__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C168S7856C32__A2__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C168S7856C32__A2__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C168S7856C32__A2__7S7856C1[6]),  6,6},
  {&(_tg__ZTV8S7856C10__8S7856C32__7S7856C1[6]),  6,6},
  {&(_tg__ZTV11S7856C17_nt__8S7856C32__7S7856C1[3]),  3,3},
  {&(_tg__ZTV8S7856C14__8S7856C32__7S7856C1[4]),  4,4},
  {&(_tg__ZTV7S7856C7__8S7856C32__7S7856C1[8]),  8,10},
  {&(_tg__ZTV8S7856C10__8S7856C32__7S7856C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7856C1[];
extern  VTBL_ENTRY _ZTV7S7856C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7856C1[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D0Ev,_ZTv0_n60_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7856C29D0Ev,_ZThn168_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C29D1Ev,_ZTv0_n60_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S7856C29D1Ev,_ZThn168_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D0Ev,_ZTv0_n44_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S7856C29D0Ev,_ZThn220_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7856C29D0Ev,_ZThn184_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C29D1Ev,_ZTv0_n44_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S7856C29D1Ev,_ZThn220_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7856C29D1Ev,_ZThn184_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D0Ev,_ZTv0_n32_N8S7856C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S7856C29D0Ev,_ZThn212_N8S7856C29D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7856C29D0Ev,_ZThn196_N8S7856C29D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C29D1Ev,_ZTv0_n32_N8S7856C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S7856C29D1Ev,_ZThn212_N8S7856C29D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S7856C29D1Ev,_ZThn196_N8S7856C29D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D0Ev,_ZTv0_n72_N8S7856C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D0Ev,_ZThn96_N8S7856C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D0Ev,_ZThn72_N8S7856C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C23D1Ev,_ZTv0_n72_N8S7856C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C23D1Ev,_ZThn96_N8S7856C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C23D1Ev,_ZThn72_N8S7856C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D0Ev,_ZTv0_n72_N8S7856C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D0Ev,_ZThn72_N8S7856C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S7856C25D1Ev,_ZTv0_n72_N8S7856C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7856C25D1Ev,_ZThn72_N8S7856C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D0Ev,_ZTv0_n36_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D0Ev,_ZThn76_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C4D1Ev,_ZTv0_n36_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7856C4D1Ev,_ZThn76_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D0Ev,_ZTv0_n32_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D0Ev,_ZThn60_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D0Ev,_ZThn44_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C4D1Ev,_ZTv0_n32_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C4D1Ev,_ZThn60_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C4D1Ev,_ZThn44_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D0Ev,_ZTv0_n44_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D0Ev,_ZThn68_N7S7856C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D0Ev,_ZThn32_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C4D1Ev,_ZTv0_n44_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C4D1Ev,_ZThn68_N7S7856C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7856C4D1Ev,_ZThn32_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D0Ev,_ZTv0_n60_N7S7856C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D0Ev,_ZThn16_N7S7856C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C4D1Ev,_ZTv0_n60_N7S7856C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7856C4D1Ev,_ZThn16_N7S7856C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D0Ev,_ZTv0_n36_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D0Ev,_ZThn72_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C19D1Ev,_ZTv0_n36_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7856C19D1Ev,_ZThn72_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D0Ev,_ZTv0_n32_N8S7856C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D0Ev,_ZThn56_N8S7856C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D0Ev,_ZThn40_N8S7856C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C19D1Ev,_ZTv0_n32_N8S7856C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7856C19D1Ev,_ZThn56_N8S7856C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7856C19D1Ev,_ZThn40_N8S7856C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D0Ev,_ZTv0_n32_N7S7856C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D0Ev,_ZThn28_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D0Ev,_ZThn12_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D0Ev,_ZThn56_N7S7856C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D0Ev,_ZThn40_N7S7856C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C6D1Ev,_ZTv0_n32_N7S7856C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C6D1Ev,_ZThn28_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7856C6D1Ev,_ZThn12_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C6D1Ev,_ZThn56_N7S7856C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7856C6D1Ev,_ZThn40_N7S7856C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D0Ev,_ZTv0_n72_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D0Ev,_ZThn236_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D0Ev,_ZThn212_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C3D1Ev,_ZTv0_n72_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7856C3D1Ev,_ZThn236_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7856C3D1Ev,_ZThn212_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D0Ev,_ZTv0_n88_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D0Ev,_ZThn140_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C3D1Ev,_ZTv0_n88_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7856C3D1Ev,_ZThn140_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D0Ev,_ZTv0_n36_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D0Ev,_ZThn100_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C3D1Ev,_ZTv0_n36_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7856C3D1Ev,_ZThn100_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D0Ev,_ZTv0_n32_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D0Ev,_ZThn84_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D0Ev,_ZThn68_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C3D1Ev,_ZTv0_n32_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7856C3D1Ev,_ZThn84_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7856C3D1Ev,_ZThn68_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D0Ev,_ZTv0_n44_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D0Ev,_ZThn92_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D0Ev,_ZThn56_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C3D1Ev,_ZTv0_n44_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7856C3D1Ev,_ZThn92_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7856C3D1Ev,_ZThn56_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D0Ev,_ZTv0_n60_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D0Ev,_ZThn116_N7S7856C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D0Ev,_ZThn40_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C3D1Ev,_ZTv0_n60_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7856C3D1Ev,_ZThn116_N7S7856C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7856C3D1Ev,_ZThn40_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D0Ev,_ZTv0_n68_N7S7856C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D0Ev,_ZThn24_N7S7856C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C3D1Ev,_ZTv0_n68_N7S7856C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C3D1Ev,_ZThn24_N7S7856C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D0Ev,_ZTv0_n36_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D0Ev,_ZThn100_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7856C22D1Ev,_ZTv0_n36_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7856C22D1Ev,_ZThn100_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D0Ev,_ZTv0_n60_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D0Ev,_ZThn40_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7856C22D1Ev,_ZTv0_n60_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7856C22D1Ev,_ZThn40_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D0Ev,_ZTv0_n68_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D0Ev,_ZThn24_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7856C22D1Ev,_ZTv0_n68_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7856C22D1Ev,_ZThn24_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D0Ev,_ZTv0_n32_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D0Ev,_ZThn84_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D0Ev,_ZThn68_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C22D1Ev,_ZTv0_n32_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7856C22D1Ev,_ZThn84_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7856C22D1Ev,_ZThn68_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D0Ev,_ZTv0_n44_N8S7856C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D0Ev,_ZThn92_N8S7856C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D0Ev,_ZThn56_N8S7856C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7856C22D1Ev,_ZTv0_n44_N8S7856C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7856C22D1Ev,_ZThn92_N8S7856C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7856C22D1Ev,_ZThn56_N8S7856C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D0Ev,_ZTv0_n32_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D0Ev,_ZThn44_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D0Ev,_ZThn28_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D0Ev,_ZThn80_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D0Ev,_ZThn64_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C5D1Ev,_ZTv0_n32_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7856C5D1Ev,_ZThn44_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7856C5D1Ev,_ZThn28_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7856C5D1Ev,_ZThn80_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7856C5D1Ev,_ZThn64_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D0Ev,_ZTv0_n44_N7S7856C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D0Ev,_ZThn16_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D0Ev,_ZThn88_N7S7856C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D0Ev,_ZThn52_N7S7856C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C5D1Ev,_ZTv0_n44_N7S7856C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7856C5D1Ev,_ZThn16_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7856C5D1Ev,_ZThn88_N7S7856C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7856C5D1Ev,_ZThn52_N7S7856C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D0Ev,_ZTv0_n32_N8S7856C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D0Ev,_ZThn44_N8S7856C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D0Ev,_ZThn80_N8S7856C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7856C18D1Ev,_ZTv0_n32_N8S7856C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7856C18D1Ev,_ZThn44_N8S7856C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7856C18D1Ev,_ZThn80_N8S7856C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D0Ev,_ZTv0_n72_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C2D0Ev,_ZThn364_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C2D0Ev,_ZThn340_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C2D1Ev,_ZTv0_n72_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C2D1Ev,_ZThn364_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C2D1Ev,_ZThn340_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D0Ev,_ZTv0_n88_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C2D0Ev,_ZThn268_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C2D1Ev,_ZTv0_n88_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C2D1Ev,_ZThn268_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D0Ev,_ZTv0_n36_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C2D0Ev,_ZThn228_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C2D1Ev,_ZTv0_n36_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C2D1Ev,_ZThn228_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D0Ev,_ZTv0_n32_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C2D0Ev,_ZThn212_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C2D0Ev,_ZThn196_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C2D1Ev,_ZTv0_n32_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C2D1Ev,_ZThn212_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C2D1Ev,_ZThn196_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D0Ev,_ZTv0_n44_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C2D0Ev,_ZThn220_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C2D0Ev,_ZThn184_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C2D1Ev,_ZTv0_n44_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C2D1Ev,_ZThn220_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C2D1Ev,_ZThn184_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D0Ev,_ZTv0_n60_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C2D0Ev,_ZThn244_N7S7856C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C2D0Ev,_ZThn168_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C2D1Ev,_ZTv0_n60_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C2D1Ev,_ZThn244_N7S7856C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C2D1Ev,_ZThn168_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D0Ev,_ZTv0_n68_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C2D0Ev,_ZThn152_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C2D1Ev,_ZTv0_n68_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C2D1Ev,_ZThn152_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D0Ev,_ZTv0_n96_N7S7856C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C2D0Ev,_ZThn128_N7S7856C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C2D1Ev,_ZTv0_n96_N7S7856C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C2D1Ev,_ZThn128_N7S7856C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C1D0Ev,_ZTv0_n72_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C1D0Ev,_ZThn364_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C1D0Ev,_ZThn340_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7856C1D1Ev,_ZTv0_n72_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7856C1D1Ev,_ZThn364_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7856C1D1Ev,_ZThn340_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C1D0Ev,_ZTv0_n88_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C1D0Ev,_ZThn268_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n176_N7S7856C1D1Ev,_ZTv0_n88_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7856C1D1Ev,_ZThn268_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C1D0Ev,_ZTv0_n36_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C1D0Ev,_ZThn228_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7856C1D1Ev,_ZTv0_n36_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7856C1D1Ev,_ZThn228_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C1D0Ev,_ZTv0_n32_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C1D0Ev,_ZThn212_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C1D0Ev,_ZThn196_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7856C1D1Ev,_ZTv0_n32_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7856C1D1Ev,_ZThn212_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S7856C1D1Ev,_ZThn196_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C1D0Ev,_ZTv0_n44_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N7S7856C1D0Ev,_ZThn384_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C1D0Ev,_ZThn220_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C1D0Ev,_ZThn184_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7856C1D1Ev,_ZTv0_n44_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N7S7856C1D1Ev,_ZThn384_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7856C1D1Ev,_ZThn220_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7856C1D1Ev,_ZThn184_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C1D0Ev,_ZTv0_n60_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C1D0Ev,_ZThn244_N7S7856C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C1D0Ev,_ZThn168_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7856C1D1Ev,_ZTv0_n60_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7856C1D1Ev,_ZThn244_N7S7856C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S7856C1D1Ev,_ZThn168_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C1D0Ev,_ZTv0_n68_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C1D0Ev,_ZThn152_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7856C1D1Ev,_ZTv0_n68_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7856C1D1Ev,_ZThn152_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C1D0Ev,_ZTv0_n96_N7S7856C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C1D0Ev,_ZThn128_N7S7856C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N7S7856C1D1Ev,_ZTv0_n96_N7S7856C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7856C1D1Ev,_ZThn128_N7S7856C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7856C1 = {  "S7856C1", // class name
  bases_S7856C1, 145,
  &(vtc_S7856C1[0]), // expected_vtbl_contents
  &(vtt_S7856C1[0]), // expected_vtt_contents
  ABISELECT(744,392), // object size
  NSPAIRA(_ZTI7S7856C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7856C1),436, //virtual function table var
  26, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7856C1),480, //virtual table table var
  78, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1304C4  {
  int s1304c4f0;
  __tsi64 s1304c4f1;
  void *s1304c4f2[4];
  int s1304c4f3[2];
  void *s1304c4f4;
  ::S40C9_nt s1304c4f5;
  void *s1304c4f6[2];
  virtual  ~S1304C4(); // _ZN7S1304C4D1Ev
  virtual void  v11(); // _ZN7S1304C43v11Ev
  virtual void  v12(); // _ZN7S1304C43v12Ev
  virtual void  v13(); // _ZN7S1304C43v13Ev
  virtual void  v14(); // _ZN7S1304C43v14Ev
  virtual void  v15(); // _ZN7S1304C43v15Ev
  virtual void  v16(); // _ZN7S1304C43v16Ev
  virtual void  v17(); // _ZN7S1304C43v17Ev
  virtual void  v18(); // _ZN7S1304C43v18Ev
  virtual void  v19(); // _ZN7S1304C43v19Ev
  virtual void  v20(); // _ZN7S1304C43v20Ev
  virtual void  v21(); // _ZN7S1304C43v21Ev
  virtual void  v22(); // _ZN7S1304C43v22Ev
  virtual void  v23(); // _ZN7S1304C43v23Ev
  virtual void  v24(); // _ZN7S1304C43v24Ev
  virtual void  v25(); // _ZN7S1304C43v25Ev
  virtual void  v26(); // _ZN7S1304C43v26Ev
  virtual void  v27(); // _ZN7S1304C43v27Ev
  virtual void  v28(); // _ZN7S1304C43v28Ev
  virtual void  v29(); // _ZN7S1304C43v29Ev
  virtual void  v30(); // _ZN7S1304C43v30Ev
  virtual void  v31(); // _ZN7S1304C43v31Ev
  virtual void  v32(); // _ZN7S1304C43v32Ev
  virtual void  v33(); // _ZN7S1304C43v33Ev
  virtual void  v34(); // _ZN7S1304C43v34Ev
  virtual void  v35(); // _ZN7S1304C43v35Ev
  virtual void  v36(); // _ZN7S1304C43v36Ev
  virtual void  v37(); // _ZN7S1304C43v37Ev
  virtual void  v38(); // _ZN7S1304C43v38Ev
  virtual void  v39(); // _ZN7S1304C43v39Ev
  virtual void  v40(); // _ZN7S1304C43v40Ev
  virtual void  v41(); // _ZN7S1304C43v41Ev
  virtual void  v42(); // _ZN7S1304C43v42Ev
  virtual void  v43(); // _ZN7S1304C43v43Ev
  virtual void  v44(); // _ZN7S1304C43v44Ev
  virtual void  v45(); // _ZN7S1304C43v45Ev
  virtual void  v46(); // _ZN7S1304C43v46Ev
  virtual void  v47(); // _ZN7S1304C43v47Ev
  virtual void  v48(); // _ZN7S1304C43v48Ev
  virtual void  v49(); // _ZN7S1304C43v49Ev
  virtual void  v50(); // _ZN7S1304C43v50Ev
  virtual void  v51(); // _ZN7S1304C43v51Ev
  virtual void  v52(); // _ZN7S1304C43v52Ev
  virtual void  v53(); // _ZN7S1304C43v53Ev
  virtual void  v54(); // _ZN7S1304C43v54Ev
  virtual void  v55(); // _ZN7S1304C43v55Ev
  virtual void  v56(); // _ZN7S1304C43v56Ev
  virtual void  v57(); // _ZN7S1304C43v57Ev
  virtual void  v58(); // _ZN7S1304C43v58Ev
  virtual void  v59(); // _ZN7S1304C43v59Ev
  virtual void  v60(); // _ZN7S1304C43v60Ev
  virtual void  v61(); // _ZN7S1304C43v61Ev
  virtual void  v62(); // _ZN7S1304C43v62Ev
  virtual void  v63(); // _ZN7S1304C43v63Ev
  virtual void  v64(); // _ZN7S1304C43v64Ev
  virtual void  v65(); // _ZN7S1304C43v65Ev
  virtual void  v66(); // _ZN7S1304C43v66Ev
  virtual void  v67(); // _ZN7S1304C43v67Ev
  virtual void  v68(); // _ZN7S1304C43v68Ev
  virtual void  v69(); // _ZN7S1304C43v69Ev
  virtual void  v70(); // _ZN7S1304C43v70Ev
  virtual void  v71(); // _ZN7S1304C43v71Ev
  virtual void  v72(); // _ZN7S1304C43v72Ev
  virtual void  v73(); // _ZN7S1304C43v73Ev
  virtual void  v74(); // _ZN7S1304C43v74Ev
  S1304C4(); // tgen
};
//SIG(-1 S1304C4) 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]}


 S1304C4 ::~S1304C4(){ note_dtor("S1304C4", this);}
void  S1304C4 ::v11(){vfunc_called(this, "_ZN7S1304C43v11Ev");}
void  S1304C4 ::v12(){vfunc_called(this, "_ZN7S1304C43v12Ev");}
void  S1304C4 ::v13(){vfunc_called(this, "_ZN7S1304C43v13Ev");}
void  S1304C4 ::v14(){vfunc_called(this, "_ZN7S1304C43v14Ev");}
void  S1304C4 ::v15(){vfunc_called(this, "_ZN7S1304C43v15Ev");}
void  S1304C4 ::v16(){vfunc_called(this, "_ZN7S1304C43v16Ev");}
void  S1304C4 ::v17(){vfunc_called(this, "_ZN7S1304C43v17Ev");}
void  S1304C4 ::v18(){vfunc_called(this, "_ZN7S1304C43v18Ev");}
void  S1304C4 ::v19(){vfunc_called(this, "_ZN7S1304C43v19Ev");}
void  S1304C4 ::v20(){vfunc_called(this, "_ZN7S1304C43v20Ev");}
void  S1304C4 ::v21(){vfunc_called(this, "_ZN7S1304C43v21Ev");}
void  S1304C4 ::v22(){vfunc_called(this, "_ZN7S1304C43v22Ev");}
void  S1304C4 ::v23(){vfunc_called(this, "_ZN7S1304C43v23Ev");}
void  S1304C4 ::v24(){vfunc_called(this, "_ZN7S1304C43v24Ev");}
void  S1304C4 ::v25(){vfunc_called(this, "_ZN7S1304C43v25Ev");}
void  S1304C4 ::v26(){vfunc_called(this, "_ZN7S1304C43v26Ev");}
void  S1304C4 ::v27(){vfunc_called(this, "_ZN7S1304C43v27Ev");}
void  S1304C4 ::v28(){vfunc_called(this, "_ZN7S1304C43v28Ev");}
void  S1304C4 ::v29(){vfunc_called(this, "_ZN7S1304C43v29Ev");}
void  S1304C4 ::v30(){vfunc_called(this, "_ZN7S1304C43v30Ev");}
void  S1304C4 ::v31(){vfunc_called(this, "_ZN7S1304C43v31Ev");}
void  S1304C4 ::v32(){vfunc_called(this, "_ZN7S1304C43v32Ev");}
void  S1304C4 ::v33(){vfunc_called(this, "_ZN7S1304C43v33Ev");}
void  S1304C4 ::v34(){vfunc_called(this, "_ZN7S1304C43v34Ev");}
void  S1304C4 ::v35(){vfunc_called(this, "_ZN7S1304C43v35Ev");}
void  S1304C4 ::v36(){vfunc_called(this, "_ZN7S1304C43v36Ev");}
void  S1304C4 ::v37(){vfunc_called(this, "_ZN7S1304C43v37Ev");}
void  S1304C4 ::v38(){vfunc_called(this, "_ZN7S1304C43v38Ev");}
void  S1304C4 ::v39(){vfunc_called(this, "_ZN7S1304C43v39Ev");}
void  S1304C4 ::v40(){vfunc_called(this, "_ZN7S1304C43v40Ev");}
void  S1304C4 ::v41(){vfunc_called(this, "_ZN7S1304C43v41Ev");}
void  S1304C4 ::v42(){vfunc_called(this, "_ZN7S1304C43v42Ev");}
void  S1304C4 ::v43(){vfunc_called(this, "_ZN7S1304C43v43Ev");}
void  S1304C4 ::v44(){vfunc_called(this, "_ZN7S1304C43v44Ev");}
void  S1304C4 ::v45(){vfunc_called(this, "_ZN7S1304C43v45Ev");}
void  S1304C4 ::v46(){vfunc_called(this, "_ZN7S1304C43v46Ev");}
void  S1304C4 ::v47(){vfunc_called(this, "_ZN7S1304C43v47Ev");}
void  S1304C4 ::v48(){vfunc_called(this, "_ZN7S1304C43v48Ev");}
void  S1304C4 ::v49(){vfunc_called(this, "_ZN7S1304C43v49Ev");}
void  S1304C4 ::v50(){vfunc_called(this, "_ZN7S1304C43v50Ev");}
void  S1304C4 ::v51(){vfunc_called(this, "_ZN7S1304C43v51Ev");}
void  S1304C4 ::v52(){vfunc_called(this, "_ZN7S1304C43v52Ev");}
void  S1304C4 ::v53(){vfunc_called(this, "_ZN7S1304C43v53Ev");}
void  S1304C4 ::v54(){vfunc_called(this, "_ZN7S1304C43v54Ev");}
void  S1304C4 ::v55(){vfunc_called(this, "_ZN7S1304C43v55Ev");}
void  S1304C4 ::v56(){vfunc_called(this, "_ZN7S1304C43v56Ev");}
void  S1304C4 ::v57(){vfunc_called(this, "_ZN7S1304C43v57Ev");}
void  S1304C4 ::v58(){vfunc_called(this, "_ZN7S1304C43v58Ev");}
void  S1304C4 ::v59(){vfunc_called(this, "_ZN7S1304C43v59Ev");}
void  S1304C4 ::v60(){vfunc_called(this, "_ZN7S1304C43v60Ev");}
void  S1304C4 ::v61(){vfunc_called(this, "_ZN7S1304C43v61Ev");}
void  S1304C4 ::v62(){vfunc_called(this, "_ZN7S1304C43v62Ev");}
void  S1304C4 ::v63(){vfunc_called(this, "_ZN7S1304C43v63Ev");}
void  S1304C4 ::v64(){vfunc_called(this, "_ZN7S1304C43v64Ev");}
void  S1304C4 ::v65(){vfunc_called(this, "_ZN7S1304C43v65Ev");}
void  S1304C4 ::v66(){vfunc_called(this, "_ZN7S1304C43v66Ev");}
void  S1304C4 ::v67(){vfunc_called(this, "_ZN7S1304C43v67Ev");}
void  S1304C4 ::v68(){vfunc_called(this, "_ZN7S1304C43v68Ev");}
void  S1304C4 ::v69(){vfunc_called(this, "_ZN7S1304C43v69Ev");}
void  S1304C4 ::v70(){vfunc_called(this, "_ZN7S1304C43v70Ev");}
void  S1304C4 ::v71(){vfunc_called(this, "_ZN7S1304C43v71Ev");}
void  S1304C4 ::v72(){vfunc_called(this, "_ZN7S1304C43v72Ev");}
void  S1304C4 ::v73(){vfunc_called(this, "_ZN7S1304C43v73Ev");}
void  S1304C4 ::v74(){vfunc_called(this, "_ZN7S1304C43v74Ev");}
S1304C4 ::S1304C4(){ note_ctor("S1304C4", this);} // tgen

static void Test_S1304C4()
{
  extern Class_Descriptor cd_S1304C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1304C4, buf);
    S1304C4 *dp, &lv = *(dp=new (buf) S1304C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1304C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1304C4)");
    check_field_offset(lv, s1304c4f0, ABISELECT(8,4), "S1304C4.s1304c4f0");
    check_field_offset(lv, s1304c4f1, ABISELECT(16,8), "S1304C4.s1304c4f1");
    check_field_offset(lv, s1304c4f2, ABISELECT(24,16), "S1304C4.s1304c4f2");
    check_field_offset(lv, s1304c4f3, ABISELECT(56,32), "S1304C4.s1304c4f3");
    check_field_offset(lv, s1304c4f4, ABISELECT(64,40), "S1304C4.s1304c4f4");
    check_field_offset(lv, s1304c4f5, ABISELECT(72,44), "S1304C4.s1304c4f5");
    check_field_offset(lv, s1304c4f6, ABISELECT(80,52), "S1304C4.s1304c4f6");
    test_class_info(&lv, &cd_S1304C4);
    dp->~S1304C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1304C4(Test_S1304C4, "S1304C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1304C4C1Ev();
extern void _ZN7S1304C4D1Ev();
Name_Map name_map_S1304C4[] = {
  NSPAIR(_ZN7S1304C4C1Ev),
  NSPAIR(_ZN7S1304C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1304C4[];
extern void _ZN7S1304C4D1Ev();
extern void _ZN7S1304C4D0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
static  VTBL_ENTRY vtc_S1304C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1304C4[0]),
  (VTBL_ENTRY)&_ZN7S1304C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1304C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
};
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
Class_Descriptor cd_S1304C4 = {  "S1304C4", // class name
  0,0,//no base classes
  &(vtc_S1304C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1304C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1304C4),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  S1304C3_nt  : S1304C4 {
  unsigned int s1304c3f0:1;
  unsigned int s1304c3f1:1;
  unsigned int s1304c3f2:1;
  unsigned int s1304c3f3:1;
  unsigned int s1304c3f4:1;
  unsigned int s1304c3f5:1;
  unsigned int s1304c3f6:1;
  ::S7856C24 s1304c3f7;
  virtual  ~S1304C3_nt(); // _ZN10S1304C3_ntD1Ev
  virtual void  v75(); // _ZN10S1304C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1304C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1304C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1304C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1304C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1304C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1304C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1304C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1304C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1304C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1304C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1304C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1304C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1304C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1304C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1304C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1304C3_nt3v91Ev
  virtual void  v92(); // _ZN10S1304C3_nt3v92Ev
  virtual void  v93(); // _ZN10S1304C3_nt3v93Ev
  virtual void  v94(); // _ZN10S1304C3_nt3v94Ev
  S1304C3_nt(); // tgen
};
//SIG(-1 S1304C3_nt) C1{ BC2{ 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 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1304C3_nt ::~S1304C3_nt(){ note_dtor("S1304C3_nt", this);}
void  S1304C3_nt ::v75(){vfunc_called(this, "_ZN10S1304C3_nt3v75Ev");}
void  S1304C3_nt ::v76(){vfunc_called(this, "_ZN10S1304C3_nt3v76Ev");}
void  S1304C3_nt ::v77(){vfunc_called(this, "_ZN10S1304C3_nt3v77Ev");}
void  S1304C3_nt ::v78(){vfunc_called(this, "_ZN10S1304C3_nt3v78Ev");}
void  S1304C3_nt ::v79(){vfunc_called(this, "_ZN10S1304C3_nt3v79Ev");}
void  S1304C3_nt ::v80(){vfunc_called(this, "_ZN10S1304C3_nt3v80Ev");}
void  S1304C3_nt ::v81(){vfunc_called(this, "_ZN10S1304C3_nt3v81Ev");}
void  S1304C3_nt ::v82(){vfunc_called(this, "_ZN10S1304C3_nt3v82Ev");}
void  S1304C3_nt ::v83(){vfunc_called(this, "_ZN10S1304C3_nt3v83Ev");}
void  S1304C3_nt ::v84(){vfunc_called(this, "_ZN10S1304C3_nt3v84Ev");}
void  S1304C3_nt ::v85(){vfunc_called(this, "_ZN10S1304C3_nt3v85Ev");}
void  S1304C3_nt ::v86(){vfunc_called(this, "_ZN10S1304C3_nt3v86Ev");}
void  S1304C3_nt ::v87(){vfunc_called(this, "_ZN10S1304C3_nt3v87Ev");}
void  S1304C3_nt ::v88(){vfunc_called(this, "_ZN10S1304C3_nt3v88Ev");}
void  S1304C3_nt ::v89(){vfunc_called(this, "_ZN10S1304C3_nt3v89Ev");}
void  S1304C3_nt ::v90(){vfunc_called(this, "_ZN10S1304C3_nt3v90Ev");}
void  S1304C3_nt ::v91(){vfunc_called(this, "_ZN10S1304C3_nt3v91Ev");}
void  S1304C3_nt ::v92(){vfunc_called(this, "_ZN10S1304C3_nt3v92Ev");}
void  S1304C3_nt ::v93(){vfunc_called(this, "_ZN10S1304C3_nt3v93Ev");}
void  S1304C3_nt ::v94(){vfunc_called(this, "_ZN10S1304C3_nt3v94Ev");}
S1304C3_nt ::S1304C3_nt(){ note_ctor("S1304C3_nt", this);} // tgen

//skip512 S1304C3_nt

#else // __cplusplus

extern void _ZN10S1304C3_ntC1Ev();
extern void _ZN10S1304C3_ntD1Ev();
Name_Map name_map_S1304C3_nt[] = {
  NSPAIR(_ZN10S1304C3_ntC1Ev),
  NSPAIR(_ZN10S1304C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
static Base_Class bases_S1304C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S1304C3_nt[];
extern void _ZN10S1304C3_ntD1Ev();
extern void _ZN10S1304C3_ntD0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
static  VTBL_ENTRY vtc_S1304C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1304C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1304C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
VTBL_ENTRY *P__ZTI10S1304C3_nt = _ZTI10S1304C3_nt; 
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
Class_Descriptor cd_S1304C3_nt = {  "S1304C3_nt", // class name
  bases_S1304C3_nt, 1,
  &(vtc_S1304C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1304C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1304C3_nt),88, //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  S1304C2_nt  : S1304C3_nt {
  virtual  ~S1304C2_nt(); // _ZN10S1304C2_ntD1Ev
  virtual void  v95(); // _ZN10S1304C2_nt3v95Ev
  virtual void  v96(); // _ZN10S1304C2_nt3v96Ev
  S1304C2_nt(); // tgen
};
//SIG(-1 S1304C2_nt) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m}} vd v1 v2}


 S1304C2_nt ::~S1304C2_nt(){ note_dtor("S1304C2_nt", this);}
void  S1304C2_nt ::v95(){vfunc_called(this, "_ZN10S1304C2_nt3v95Ev");}
void  S1304C2_nt ::v96(){vfunc_called(this, "_ZN10S1304C2_nt3v96Ev");}
S1304C2_nt ::S1304C2_nt(){ note_ctor("S1304C2_nt", this);} // tgen

//skip512 S1304C2_nt

#else // __cplusplus

extern void _ZN10S1304C2_ntC1Ev();
extern void _ZN10S1304C2_ntD1Ev();
Name_Map name_map_S1304C2_nt[] = {
  NSPAIR(_ZN10S1304C2_ntC1Ev),
  NSPAIR(_ZN10S1304C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
extern Class_Descriptor cd_S1304C3_nt;
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
static Base_Class bases_S1304C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1304C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S1304C2_nt[];
extern void _ZN10S1304C2_ntD1Ev();
extern void _ZN10S1304C2_ntD0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
extern void _ZN10S1304C2_nt3v95Ev();
extern void _ZN10S1304C2_nt3v96Ev();
static  VTBL_ENTRY vtc_S1304C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1304C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1304C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v96Ev,
};
extern VTBL_ENTRY _ZTI10S1304C2_nt[];
VTBL_ENTRY *P__ZTI10S1304C2_nt = _ZTI10S1304C2_nt; 
extern  VTBL_ENTRY _ZTV10S1304C2_nt[];
Class_Descriptor cd_S1304C2_nt = {  "S1304C2_nt", // class name
  bases_S1304C2_nt, 2,
  &(vtc_S1304C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1304C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1304C2_nt),90, //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  S1304C8_nt  {
  char s1304c8f0[4];
  ::S40C80 s1304c8f1;
  int s1304c8f2[2];
  void  mf1304c8(); // _ZN10S1304C8_nt8mf1304c8Ev
};
//SIG(-1 S1304C8_nt) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S1304C8_nt ::mf1304c8(){}

//skip512 S1304C8_nt

#else // __cplusplus

Class_Descriptor cd_S1304C8_nt = {  "S1304C8_nt", // class name
  0,0,//no base classes
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1304C7_nt  : S1304C8_nt {
  void *s1304c7f0;
};
//SIG(-1 S1304C7_nt) C1{ BC2{ m Fc[4] FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi[2]} Fp}



//skip512 S1304C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S1304C8_nt;
static Base_Class bases_S1304C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1304C1  : S1304C2_nt {
  ::S1304C7_nt s1304c1f0;
  ::S1304C7_nt s1304c1f1;
  unsigned int s1304c1f2:1;
  virtual  ~S1304C1(); // _ZN7S1304C1D1Ev
  virtual void  v1(); // _ZN7S1304C12v1Ev
  virtual void  v2(); // _ZN7S1304C12v2Ev
  virtual void  v3(); // _ZN7S1304C12v3Ev
  virtual void  v4(); // _ZN7S1304C12v4Ev
  virtual void  v5(); // _ZN7S1304C12v5Ev
  virtual void  v6(); // _ZN7S1304C12v6Ev
  virtual void  v7(); // _ZN7S1304C12v7Ev
  virtual void  v8(); // _ZN7S1304C12v8Ev
  virtual void  v9(); // _ZN7S1304C12v9Ev
  virtual void  v10(); // _ZN7S1304C13v10Ev
  S1304C1(); // tgen
};
//SIG(1 S1304C1) 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 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v95 v96} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp} FC7 Fi:1}


 S1304C1 ::~S1304C1(){ note_dtor("S1304C1", this);}
void  S1304C1 ::v1(){vfunc_called(this, "_ZN7S1304C12v1Ev");}
void  S1304C1 ::v2(){vfunc_called(this, "_ZN7S1304C12v2Ev");}
void  S1304C1 ::v3(){vfunc_called(this, "_ZN7S1304C12v3Ev");}
void  S1304C1 ::v4(){vfunc_called(this, "_ZN7S1304C12v4Ev");}
void  S1304C1 ::v5(){vfunc_called(this, "_ZN7S1304C12v5Ev");}
void  S1304C1 ::v6(){vfunc_called(this, "_ZN7S1304C12v6Ev");}
void  S1304C1 ::v7(){vfunc_called(this, "_ZN7S1304C12v7Ev");}
void  S1304C1 ::v8(){vfunc_called(this, "_ZN7S1304C12v8Ev");}
void  S1304C1 ::v9(){vfunc_called(this, "_ZN7S1304C12v9Ev");}
void  S1304C1 ::v10(){vfunc_called(this, "_ZN7S1304C13v10Ev");}
S1304C1 ::S1304C1(){ note_ctor("S1304C1", this);} // tgen

static void Test_S1304C1()
{
  extern Class_Descriptor cd_S1304C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,32)];
    init_test(&cd_S1304C1, buf);
    S1304C1 *dp, &lv = *(dp=new (buf) S1304C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S1304C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1304C1)");
    check_base_class_offset(lv, (S1304C4*)(S1304C3_nt*)(S1304C2_nt*), 0, "S1304C1");
    check_base_class_offset(lv, (S1304C3_nt*)(S1304C2_nt*), 0, "S1304C1");
    check_base_class_offset(lv, (S1304C2_nt*), 0, "S1304C1");
    check_field_offset(lv, s1304c1f0, ABISELECT(104,64), "S1304C1.s1304c1f0");
    check_field_offset(lv, s1304c1f1, ABISELECT(144,92), "S1304C1.s1304c1f1");
    set_bf_and_test(lv, s1304c1f2, ABISELECT(184,120), 0, 1, 1, "S1304C1");
    test_class_info(&lv, &cd_S1304C1);
    dp->~S1304C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1304C1(Test_S1304C1, "S1304C1", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S1304C1C1Ev();
extern void _ZN7S1304C1D1Ev();
Name_Map name_map_S1304C1[] = {
  NSPAIR(_ZN7S1304C1C1Ev),
  NSPAIR(_ZN7S1304C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1304C4;
extern VTBL_ENTRY _ZTI7S1304C4[];
extern  VTBL_ENTRY _ZTV7S1304C4[];
extern Class_Descriptor cd_S1304C3_nt;
extern VTBL_ENTRY _ZTI10S1304C3_nt[];
extern  VTBL_ENTRY _ZTV10S1304C3_nt[];
extern Class_Descriptor cd_S1304C2_nt;
extern VTBL_ENTRY _ZTI10S1304C2_nt[];
extern  VTBL_ENTRY _ZTV10S1304C2_nt[];
static Base_Class bases_S1304C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1304C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1304C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1304C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1304C1[];
extern void _ZN7S1304C1D1Ev();
extern void _ZN7S1304C1D0Ev();
extern void _ZN7S1304C43v11Ev();
extern void _ZN7S1304C43v12Ev();
extern void _ZN7S1304C43v13Ev();
extern void _ZN7S1304C43v14Ev();
extern void _ZN7S1304C43v15Ev();
extern void _ZN7S1304C43v16Ev();
extern void _ZN7S1304C43v17Ev();
extern void _ZN7S1304C43v18Ev();
extern void _ZN7S1304C43v19Ev();
extern void _ZN7S1304C43v20Ev();
extern void _ZN7S1304C43v21Ev();
extern void _ZN7S1304C43v22Ev();
extern void _ZN7S1304C43v23Ev();
extern void _ZN7S1304C43v24Ev();
extern void _ZN7S1304C43v25Ev();
extern void _ZN7S1304C43v26Ev();
extern void _ZN7S1304C43v27Ev();
extern void _ZN7S1304C43v28Ev();
extern void _ZN7S1304C43v29Ev();
extern void _ZN7S1304C43v30Ev();
extern void _ZN7S1304C43v31Ev();
extern void _ZN7S1304C43v32Ev();
extern void _ZN7S1304C43v33Ev();
extern void _ZN7S1304C43v34Ev();
extern void _ZN7S1304C43v35Ev();
extern void _ZN7S1304C43v36Ev();
extern void _ZN7S1304C43v37Ev();
extern void _ZN7S1304C43v38Ev();
extern void _ZN7S1304C43v39Ev();
extern void _ZN7S1304C43v40Ev();
extern void _ZN7S1304C43v41Ev();
extern void _ZN7S1304C43v42Ev();
extern void _ZN7S1304C43v43Ev();
extern void _ZN7S1304C43v44Ev();
extern void _ZN7S1304C43v45Ev();
extern void _ZN7S1304C43v46Ev();
extern void _ZN7S1304C43v47Ev();
extern void _ZN7S1304C43v48Ev();
extern void _ZN7S1304C43v49Ev();
extern void _ZN7S1304C43v50Ev();
extern void _ZN7S1304C43v51Ev();
extern void _ZN7S1304C43v52Ev();
extern void _ZN7S1304C43v53Ev();
extern void _ZN7S1304C43v54Ev();
extern void _ZN7S1304C43v55Ev();
extern void _ZN7S1304C43v56Ev();
extern void _ZN7S1304C43v57Ev();
extern void _ZN7S1304C43v58Ev();
extern void _ZN7S1304C43v59Ev();
extern void _ZN7S1304C43v60Ev();
extern void _ZN7S1304C43v61Ev();
extern void _ZN7S1304C43v62Ev();
extern void _ZN7S1304C43v63Ev();
extern void _ZN7S1304C43v64Ev();
extern void _ZN7S1304C43v65Ev();
extern void _ZN7S1304C43v66Ev();
extern void _ZN7S1304C43v67Ev();
extern void _ZN7S1304C43v68Ev();
extern void _ZN7S1304C43v69Ev();
extern void _ZN7S1304C43v70Ev();
extern void _ZN7S1304C43v71Ev();
extern void _ZN7S1304C43v72Ev();
extern void _ZN7S1304C43v73Ev();
extern void _ZN7S1304C43v74Ev();
extern void _ZN10S1304C3_nt3v75Ev();
extern void _ZN10S1304C3_nt3v76Ev();
extern void _ZN10S1304C3_nt3v77Ev();
extern void _ZN10S1304C3_nt3v78Ev();
extern void _ZN10S1304C3_nt3v79Ev();
extern void _ZN10S1304C3_nt3v80Ev();
extern void _ZN10S1304C3_nt3v81Ev();
extern void _ZN10S1304C3_nt3v82Ev();
extern void _ZN10S1304C3_nt3v83Ev();
extern void _ZN10S1304C3_nt3v84Ev();
extern void _ZN10S1304C3_nt3v85Ev();
extern void _ZN10S1304C3_nt3v86Ev();
extern void _ZN10S1304C3_nt3v87Ev();
extern void _ZN10S1304C3_nt3v88Ev();
extern void _ZN10S1304C3_nt3v89Ev();
extern void _ZN10S1304C3_nt3v90Ev();
extern void _ZN10S1304C3_nt3v91Ev();
extern void _ZN10S1304C3_nt3v92Ev();
extern void _ZN10S1304C3_nt3v93Ev();
extern void _ZN10S1304C3_nt3v94Ev();
extern void _ZN10S1304C2_nt3v95Ev();
extern void _ZN10S1304C2_nt3v96Ev();
extern void _ZN7S1304C12v1Ev();
extern void _ZN7S1304C12v2Ev();
extern void _ZN7S1304C12v3Ev();
extern void _ZN7S1304C12v4Ev();
extern void _ZN7S1304C12v5Ev();
extern void _ZN7S1304C12v6Ev();
extern void _ZN7S1304C12v7Ev();
extern void _ZN7S1304C12v8Ev();
extern void _ZN7S1304C12v9Ev();
extern void _ZN7S1304C13v10Ev();
static  VTBL_ENTRY vtc_S1304C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1304C1[0]),
  (VTBL_ENTRY)&_ZN7S1304C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1304C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1304C43v74Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1304C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1304C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1304C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1304C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1304C1[];
extern  VTBL_ENTRY _ZTV7S1304C1[];
Class_Descriptor cd_S1304C1 = {  "S1304C1", // class name
  bases_S1304C1, 3,
  &(vtc_S1304C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S1304C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1304C1),100, //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  S1868C4_nt  {
  void  mf1868c4(); // _ZN10S1868C4_nt8mf1868c4Ev
  virtual  ~S1868C4_nt(); // _ZN10S1868C4_ntD1Ev
  S1868C4_nt(); // tgen
};
//SIG(-1 S1868C4_nt) C1{ vd m}


void  S1868C4_nt ::mf1868c4(){}
 S1868C4_nt ::~S1868C4_nt(){ note_dtor("S1868C4_nt", this);}
S1868C4_nt ::S1868C4_nt(){ note_ctor("S1868C4_nt", this);} // tgen

//skip512 S1868C4_nt

#else // __cplusplus

extern void _ZN10S1868C4_ntC1Ev();
extern void _ZN10S1868C4_ntD1Ev();
Name_Map name_map_S1868C4_nt[] = {
  NSPAIR(_ZN10S1868C4_ntC1Ev),
  NSPAIR(_ZN10S1868C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern void _ZN10S1868C4_ntD1Ev();
extern void _ZN10S1868C4_ntD0Ev();
static  VTBL_ENTRY vtc_S1868C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1868C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1868C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1868C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
VTBL_ENTRY *P__ZTI10S1868C4_nt = _ZTI10S1868C4_nt; 
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
Class_Descriptor cd_S1868C4_nt = {  "S1868C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1868C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1868C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1868C4_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  S1868C3  : S1868C4_nt {
  void *s1868c3f0[2];
  virtual  ~S1868C3(); // _ZN7S1868C3D1Ev
  virtual void  v9(); // _ZN7S1868C32v9Ev
  virtual void  v10(); // _ZN7S1868C33v10Ev
  virtual void  v11(); // _ZN7S1868C33v11Ev
  virtual void  v12(); // _ZN7S1868C33v12Ev
  virtual void  v13(); // _ZN7S1868C33v13Ev
  virtual void  v14(); // _ZN7S1868C33v14Ev
  virtual void  v15(); // _ZN7S1868C33v15Ev
  S1868C3(); // tgen
};
//SIG(-1 S1868C3) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S1868C3 ::~S1868C3(){ note_dtor("S1868C3", this);}
void  S1868C3 ::v9(){vfunc_called(this, "_ZN7S1868C32v9Ev");}
void  S1868C3 ::v10(){vfunc_called(this, "_ZN7S1868C33v10Ev");}
void  S1868C3 ::v11(){vfunc_called(this, "_ZN7S1868C33v11Ev");}
void  S1868C3 ::v12(){vfunc_called(this, "_ZN7S1868C33v12Ev");}
void  S1868C3 ::v13(){vfunc_called(this, "_ZN7S1868C33v13Ev");}
void  S1868C3 ::v14(){vfunc_called(this, "_ZN7S1868C33v14Ev");}
void  S1868C3 ::v15(){vfunc_called(this, "_ZN7S1868C33v15Ev");}
S1868C3 ::S1868C3(){ note_ctor("S1868C3", this);} // tgen

static void Test_S1868C3()
{
  extern Class_Descriptor cd_S1868C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C3, buf);
    S1868C3 *dp, &lv = *(dp=new (buf) S1868C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1868C3");
    check_field_offset(lv, s1868c3f0, ABISELECT(8,4), "S1868C3.s1868c3f0");
    test_class_info(&lv, &cd_S1868C3);
    dp->~S1868C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C3(Test_S1868C3, "S1868C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1868C3C1Ev();
extern void _ZN7S1868C3D1Ev();
Name_Map name_map_S1868C3[] = {
  NSPAIR(_ZN7S1868C3C1Ev),
  NSPAIR(_ZN7S1868C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1868C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1868C3[];
extern void _ZN7S1868C3D1Ev();
extern void _ZN7S1868C3D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
static  VTBL_ENTRY vtc_S1868C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C3[0]),
  (VTBL_ENTRY)&_ZN7S1868C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
Class_Descriptor cd_S1868C3 = {  "S1868C3", // class name
  bases_S1868C3, 1,
  &(vtc_S1868C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1868C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C3),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  S1868C6_nt  {
  virtual  ~S1868C6_nt(); // _ZN10S1868C6_ntD1Ev
  virtual void  v26(); // _ZN10S1868C6_nt3v26Ev
  S1868C6_nt(); // tgen
};
//SIG(-1 S1868C6_nt) C1{ vd v1}


 S1868C6_nt ::~S1868C6_nt(){ note_dtor("S1868C6_nt", this);}
void  S1868C6_nt ::v26(){vfunc_called(this, "_ZN10S1868C6_nt3v26Ev");}
S1868C6_nt ::S1868C6_nt(){ note_ctor("S1868C6_nt", this);} // tgen

//skip512 S1868C6_nt

#else // __cplusplus

extern void _ZN10S1868C6_ntC1Ev();
extern void _ZN10S1868C6_ntD1Ev();
Name_Map name_map_S1868C6_nt[] = {
  NSPAIR(_ZN10S1868C6_ntC1Ev),
  NSPAIR(_ZN10S1868C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
extern void _ZN10S1868C6_ntD1Ev();
extern void _ZN10S1868C6_ntD0Ev();
extern void _ZN10S1868C6_nt3v26Ev();
static  VTBL_ENTRY vtc_S1868C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1868C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1868C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
VTBL_ENTRY *P__ZTI10S1868C6_nt = _ZTI10S1868C6_nt; 
extern  VTBL_ENTRY _ZTV10S1868C6_nt[];
Class_Descriptor cd_S1868C6_nt = {  "S1868C6_nt", // class name
  0,0,//no base classes
  &(vtc_S1868C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1868C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1868C6_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  S1868C5  : S1868C6_nt {
  void *s1868c5f0;
  virtual void  v25(); // _ZN7S1868C53v25Ev
  ~S1868C5(); // tgen
  S1868C5(); // tgen
};
//SIG(-1 S1868C5) C1{ BC2{ vd v2} v1 Fp}


void  S1868C5 ::v25(){vfunc_called(this, "_ZN7S1868C53v25Ev");}
S1868C5 ::~S1868C5(){ note_dtor("S1868C5", this);} // tgen
S1868C5 ::S1868C5(){ note_ctor("S1868C5", this);} // tgen

static void Test_S1868C5()
{
  extern Class_Descriptor cd_S1868C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1868C5, buf);
    S1868C5 *dp, &lv = *(dp=new (buf) S1868C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1868C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C5)");
    check_base_class_offset(lv, (S1868C6_nt*), 0, "S1868C5");
    check_field_offset(lv, s1868c5f0, ABISELECT(8,4), "S1868C5.s1868c5f0");
    test_class_info(&lv, &cd_S1868C5);
    dp->~S1868C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C5(Test_S1868C5, "S1868C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1868C5C1Ev();
extern void _ZN7S1868C5D1Ev();
Name_Map name_map_S1868C5[] = {
  NSPAIR(_ZN7S1868C5C1Ev),
  NSPAIR(_ZN7S1868C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C6_nt;
extern VTBL_ENTRY _ZTI10S1868C6_nt[];
extern  VTBL_ENTRY _ZTV10S1868C6_nt[];
static Base_Class bases_S1868C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1868C5[];
extern void _ZN7S1868C5D1Ev();
extern void _ZN7S1868C5D0Ev();
extern void _ZN10S1868C6_nt3v26Ev();
extern void _ZN7S1868C53v25Ev();
static  VTBL_ENTRY vtc_S1868C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C5[0]),
  (VTBL_ENTRY)&_ZN7S1868C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C5D0Ev,
  (VTBL_ENTRY)&_ZN10S1868C6_nt3v26Ev,
  (VTBL_ENTRY)&_ZN7S1868C53v25Ev,
};
extern VTBL_ENTRY _ZTI7S1868C5[];
extern  VTBL_ENTRY _ZTV7S1868C5[];
Class_Descriptor cd_S1868C5 = {  "S1868C5", // class name
  bases_S1868C5, 1,
  &(vtc_S1868C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1868C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C5),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  S1868C9_nt  {
  void *s1868c9f0;
  void  mf1868c9(); // _ZN10S1868C9_nt8mf1868c9Ev
};
//SIG(-1 S1868C9_nt) C1{ m Fp}


void  S1868C9_nt ::mf1868c9(){}

//skip512 S1868C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1868C2  : S1868C3 {
  int s1868c2f0;
  void *s1868c2f1;
  ::S1868C5 s1868c2f2;
  ::S1868C5 s1868c2f3;
  ::S1868C9_nt s1868c2f4;
  virtual  ~S1868C2(); // _ZN7S1868C2D1Ev
  virtual void  v16(); // _ZN7S1868C23v16Ev
  virtual void  v17(); // _ZN7S1868C23v17Ev
  virtual void  v18(); // _ZN7S1868C23v18Ev
  virtual void  v19(); // _ZN7S1868C23v19Ev
  virtual void  v20(); // _ZN7S1868C23v20Ev
  virtual void  v21(); // _ZN7S1868C23v21Ev
  virtual void  v22(); // _ZN7S1868C23v22Ev
  virtual void  v23(); // _ZN7S1868C23v23Ev
  virtual void  v24(); // _ZN7S1868C23v24Ev
  S1868C2(); // tgen
};
//SIG(-1 S1868C2) C1{ BC2{ BC3{ vd m} vd v10 v11 v12 v13 v14 v15 v16 Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi Fp FC4{ BC5{ vd v18} v17 Fp} FC4 FC6{ m Fp}}


 S1868C2 ::~S1868C2(){ note_dtor("S1868C2", this);}
void  S1868C2 ::v16(){vfunc_called(this, "_ZN7S1868C23v16Ev");}
void  S1868C2 ::v17(){vfunc_called(this, "_ZN7S1868C23v17Ev");}
void  S1868C2 ::v18(){vfunc_called(this, "_ZN7S1868C23v18Ev");}
void  S1868C2 ::v19(){vfunc_called(this, "_ZN7S1868C23v19Ev");}
void  S1868C2 ::v20(){vfunc_called(this, "_ZN7S1868C23v20Ev");}
void  S1868C2 ::v21(){vfunc_called(this, "_ZN7S1868C23v21Ev");}
void  S1868C2 ::v22(){vfunc_called(this, "_ZN7S1868C23v22Ev");}
void  S1868C2 ::v23(){vfunc_called(this, "_ZN7S1868C23v23Ev");}
void  S1868C2 ::v24(){vfunc_called(this, "_ZN7S1868C23v24Ev");}
S1868C2 ::S1868C2(){ note_ctor("S1868C2", this);} // tgen

static void Test_S1868C2()
{
  extern Class_Descriptor cd_S1868C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S1868C2, buf);
    S1868C2 *dp, &lv = *(dp=new (buf) S1868C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S1868C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1868C3*), 0, "S1868C2");
    check_base_class_offset(lv, (S1868C3*), 0, "S1868C2");
    check_field_offset(lv, s1868c2f0, ABISELECT(24,12), "S1868C2.s1868c2f0");
    check_field_offset(lv, s1868c2f1, ABISELECT(32,16), "S1868C2.s1868c2f1");
    check_field_offset(lv, s1868c2f2, ABISELECT(40,20), "S1868C2.s1868c2f2");
    check_field_offset(lv, s1868c2f3, ABISELECT(56,28), "S1868C2.s1868c2f3");
    check_field_offset(lv, s1868c2f4, ABISELECT(72,36), "S1868C2.s1868c2f4");
    test_class_info(&lv, &cd_S1868C2);
    dp->~S1868C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C2(Test_S1868C2, "S1868C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S1868C2C1Ev();
extern void _ZN7S1868C2D1Ev();
Name_Map name_map_S1868C2[] = {
  NSPAIR(_ZN7S1868C2C1Ev),
  NSPAIR(_ZN7S1868C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1868C3;
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
static Base_Class bases_S1868C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1868C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1868C2[];
extern void _ZN7S1868C2D1Ev();
extern void _ZN7S1868C2D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
extern void _ZN7S1868C23v16Ev();
extern void _ZN7S1868C23v17Ev();
extern void _ZN7S1868C23v18Ev();
extern void _ZN7S1868C23v19Ev();
extern void _ZN7S1868C23v20Ev();
extern void _ZN7S1868C23v21Ev();
extern void _ZN7S1868C23v22Ev();
extern void _ZN7S1868C23v23Ev();
extern void _ZN7S1868C23v24Ev();
static  VTBL_ENTRY vtc_S1868C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C2[0]),
  (VTBL_ENTRY)&_ZN7S1868C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S1868C2[];
extern  VTBL_ENTRY _ZTV7S1868C2[];
Class_Descriptor cd_S1868C2 = {  "S1868C2", // class name
  bases_S1868C2, 2,
  &(vtc_S1868C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S1868C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C2),20, //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  S1868C12  {
  void *s1868c12f0;
  void  mf1868c12(); // _ZN8S1868C129mf1868c12Ev
};
//SIG(-1 S1868C12) C1{ m Fp}


void  S1868C12 ::mf1868c12(){}

static void Test_S1868C12()
{
  {
    init_simple_test("S1868C12");
    S1868C12 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C12)");
    check_field_offset(lv, s1868c12f0, 0, "S1868C12.s1868c12f0");
  }
}
static Arrange_To_Call_Me vS1868C12(Test_S1868C12, "S1868C12", ABISELECT(8,4));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S1868C12[];
VTBL_ENTRY *P__ZTI8S1868C12 = _ZTI8S1868C12; 
Class_Descriptor cd_S1868C12 = {  "S1868C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1868C12),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  S1868C13_nt  {
  void *s1868c13f0;
  int s1868c13f1[2];
  ::S7856C24 s1868c13f2;
  void  mf1868c13(); // _ZN11S1868C13_nt9mf1868c13Ev
};
//SIG(-1 S1868C13_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S1868C13_nt ::mf1868c13(){}

//skip512 S1868C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1868C11  : S1868C12 {
  int s1868c11f0;
  char s1868c11f1;
  int s1868c11f2[2];
  void *s1868c11f3;
  ::S1868C13_nt s1868c11f4;
  void *s1868c11f5;
};
//SIG(-1 S1868C11) C1{ BC2{ m Fp} Fi Fc Fi[2] Fp FC3{ m Fp Fi[2] FC4{ m}} Fp}



static void Test_S1868C11()
{
  extern Class_Descriptor cd_S1868C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S1868C11, buf);
    S1868C11 &lv = *(new (buf) S1868C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S1868C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C11)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C11");
    check_field_offset(lv, s1868c11f0, ABISELECT(8,4), "S1868C11.s1868c11f0");
    check_field_offset(lv, s1868c11f1, ABISELECT(12,8), "S1868C11.s1868c11f1");
    check_field_offset(lv, s1868c11f2, ABISELECT(16,12), "S1868C11.s1868c11f2");
    check_field_offset(lv, s1868c11f3, ABISELECT(24,20), "S1868C11.s1868c11f3");
    check_field_offset(lv, s1868c11f4, ABISELECT(32,24), "S1868C11.s1868c11f4");
    check_field_offset(lv, s1868c11f5, ABISELECT(56,40), "S1868C11.s1868c11f5");
    test_class_info(&lv, &cd_S1868C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C11(Test_S1868C11, "S1868C11", ABISELECT(64,44));

#else // __cplusplus

extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
static Base_Class bases_S1868C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1868C11 = {  "S1868C11", // class name
  bases_S1868C11, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,44), // 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  S1868C15  : S1868C12 {
  void *s1868c15f0[5];
};
//SIG(-1 S1868C15) C1{ BC2{ m Fp} Fp[5]}



static void Test_S1868C15()
{
  extern Class_Descriptor cd_S1868C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1868C15, buf);
    S1868C15 &lv = *(new (buf) S1868C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1868C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C15)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C15");
    check_field_offset(lv, s1868c15f0, ABISELECT(8,4), "S1868C15.s1868c15f0");
    test_class_info(&lv, &cd_S1868C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C15(Test_S1868C15, "S1868C15", ABISELECT(48,24));

#else // __cplusplus

extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
static Base_Class bases_S1868C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1868C15 = {  "S1868C15", // class name
  bases_S1868C15, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,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  S1868C17  {
  void *s1868c17f0;
  void  mf1868c17(); // _ZN8S1868C179mf1868c17Ev
};
//SIG(-1 S1868C17) C1{ m Fp}


void  S1868C17 ::mf1868c17(){}

static void Test_S1868C17()
{
  {
    init_simple_test("S1868C17");
    S1868C17 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C17)");
    check_field_offset(lv, s1868c17f0, 0, "S1868C17.s1868c17f0");
  }
}
static Arrange_To_Call_Me vS1868C17(Test_S1868C17, "S1868C17", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1868C16  : S1868C12 {
  ::S1868C17 s1868c16f0;
  void *s1868c16f1;
};
//SIG(-1 S1868C16) C1{ BC2{ m Fp} FC3{ m Fp} Fp}



static void Test_S1868C16()
{
  extern Class_Descriptor cd_S1868C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C16, buf);
    S1868C16 &lv = *(new (buf) S1868C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C16)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C16");
    check_field_offset(lv, s1868c16f0, ABISELECT(8,4), "S1868C16.s1868c16f0");
    check_field_offset(lv, s1868c16f1, ABISELECT(16,8), "S1868C16.s1868c16f1");
    test_class_info(&lv, &cd_S1868C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C16(Test_S1868C16, "S1868C16", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
static Base_Class bases_S1868C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1868C16 = {  "S1868C16", // class name
  bases_S1868C16, 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  S1868C18_nt  : S1868C12 {
};
//SIG(-1 S1868C18_nt) C1{ BC2{ m Fp}}



//skip512 S1868C18_nt

#else // __cplusplus

extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
static Base_Class bases_S1868C18_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1868C19  : S1868C12 {
  int s1868c19f0;
  void *s1868c19f1;
  char s1868c19f2[2];
  int s1868c19f3;
};
//SIG(-1 S1868C19) C1{ BC2{ m Fp} Fi Fp Fc[2] Fi}



static void Test_S1868C19()
{
  extern Class_Descriptor cd_S1868C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1868C19, buf);
    S1868C19 &lv = *(new (buf) S1868C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1868C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C19)");
    check_base_class_offset(lv, (S1868C12*), 0, "S1868C19");
    check_field_offset(lv, s1868c19f0, ABISELECT(8,4), "S1868C19.s1868c19f0");
    check_field_offset(lv, s1868c19f1, ABISELECT(16,8), "S1868C19.s1868c19f1");
    check_field_offset(lv, s1868c19f2, ABISELECT(24,12), "S1868C19.s1868c19f2");
    check_field_offset(lv, s1868c19f3, ABISELECT(28,16), "S1868C19.s1868c19f3");
    test_class_info(&lv, &cd_S1868C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C19(Test_S1868C19, "S1868C19", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
static Base_Class bases_S1868C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1868C19 = {  "S1868C19", // class name
  bases_S1868C19, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,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  S1868C21  {
  virtual  ~S1868C21(); // _ZN8S1868C21D1Ev
  virtual void  v44(); // _ZN8S1868C213v44Ev
  virtual void  v45(); // _ZN8S1868C213v45Ev
  virtual void  v46(); // _ZN8S1868C213v46Ev
  virtual void  v47(); // _ZN8S1868C213v47Ev
  virtual void  v48(); // _ZN8S1868C213v48Ev
  virtual void  v49(); // _ZN8S1868C213v49Ev
  virtual void  v50(); // _ZN8S1868C213v50Ev
  virtual void  v51(); // _ZN8S1868C213v51Ev
  virtual void  v52(); // _ZN8S1868C213v52Ev
  virtual void  v53(); // _ZN8S1868C213v53Ev
  virtual void  v54(); // _ZN8S1868C213v54Ev
  virtual void  v55(); // _ZN8S1868C213v55Ev
  S1868C21(); // tgen
};
//SIG(-1 S1868C21) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S1868C21 ::~S1868C21(){ note_dtor("S1868C21", this);}
void  S1868C21 ::v44(){vfunc_called(this, "_ZN8S1868C213v44Ev");}
void  S1868C21 ::v45(){vfunc_called(this, "_ZN8S1868C213v45Ev");}
void  S1868C21 ::v46(){vfunc_called(this, "_ZN8S1868C213v46Ev");}
void  S1868C21 ::v47(){vfunc_called(this, "_ZN8S1868C213v47Ev");}
void  S1868C21 ::v48(){vfunc_called(this, "_ZN8S1868C213v48Ev");}
void  S1868C21 ::v49(){vfunc_called(this, "_ZN8S1868C213v49Ev");}
void  S1868C21 ::v50(){vfunc_called(this, "_ZN8S1868C213v50Ev");}
void  S1868C21 ::v51(){vfunc_called(this, "_ZN8S1868C213v51Ev");}
void  S1868C21 ::v52(){vfunc_called(this, "_ZN8S1868C213v52Ev");}
void  S1868C21 ::v53(){vfunc_called(this, "_ZN8S1868C213v53Ev");}
void  S1868C21 ::v54(){vfunc_called(this, "_ZN8S1868C213v54Ev");}
void  S1868C21 ::v55(){vfunc_called(this, "_ZN8S1868C213v55Ev");}
S1868C21 ::S1868C21(){ note_ctor("S1868C21", this);} // tgen

static void Test_S1868C21()
{
  extern Class_Descriptor cd_S1868C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1868C21, buf);
    S1868C21 *dp, &lv = *(dp=new (buf) S1868C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1868C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C21)");
    test_class_info(&lv, &cd_S1868C21);
    dp->~S1868C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C21(Test_S1868C21, "S1868C21", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S1868C21C1Ev();
extern void _ZN8S1868C21D1Ev();
Name_Map name_map_S1868C21[] = {
  NSPAIR(_ZN8S1868C21C1Ev),
  NSPAIR(_ZN8S1868C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S1868C21[];
extern void _ZN8S1868C21D1Ev();
extern void _ZN8S1868C21D0Ev();
extern void _ZN8S1868C213v44Ev();
extern void _ZN8S1868C213v45Ev();
extern void _ZN8S1868C213v46Ev();
extern void _ZN8S1868C213v47Ev();
extern void _ZN8S1868C213v48Ev();
extern void _ZN8S1868C213v49Ev();
extern void _ZN8S1868C213v50Ev();
extern void _ZN8S1868C213v51Ev();
extern void _ZN8S1868C213v52Ev();
extern void _ZN8S1868C213v53Ev();
extern void _ZN8S1868C213v54Ev();
extern void _ZN8S1868C213v55Ev();
static  VTBL_ENTRY vtc_S1868C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S1868C21[0]),
  (VTBL_ENTRY)&_ZN8S1868C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1868C21D0Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v44Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v45Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v46Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v47Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v48Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v49Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v50Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v51Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v52Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v53Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v54Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v55Ev,
};
extern VTBL_ENTRY _ZTI8S1868C21[];
extern  VTBL_ENTRY _ZTV8S1868C21[];
Class_Descriptor cd_S1868C21 = {  "S1868C21", // class name
  0,0,//no base classes
  &(vtc_S1868C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1868C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S1868C21),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1868C20  : S1868C12 , S1868C21 {
  void *s1868c20f0;
  virtual  ~S1868C20(); // _ZN8S1868C20D1Ev
  virtual void  v29(); // _ZN8S1868C203v29Ev
  virtual void  v30(); // _ZN8S1868C203v30Ev
  virtual void  v31(); // _ZN8S1868C203v31Ev
  virtual void  v32(); // _ZN8S1868C203v32Ev
  virtual void  v33(); // _ZN8S1868C203v33Ev
  virtual void  v34(); // _ZN8S1868C203v34Ev
  virtual void  v35(); // _ZN8S1868C203v35Ev
  virtual void  v36(); // _ZN8S1868C203v36Ev
  virtual void  v37(); // _ZN8S1868C203v37Ev
  virtual void  v38(); // _ZN8S1868C203v38Ev
  virtual void  v39(); // _ZN8S1868C203v39Ev
  virtual void  v40(); // _ZN8S1868C203v40Ev
  virtual void  v41(); // _ZN8S1868C203v41Ev
  virtual void  v42(); // _ZN8S1868C203v42Ev
  virtual void  v43(); // _ZN8S1868C203v43Ev
  S1868C20(); // tgen
};
//SIG(-1 S1868C20) C1{ BC2{ m Fp} BC3{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp}


 S1868C20 ::~S1868C20(){ note_dtor("S1868C20", this);}
void  S1868C20 ::v29(){vfunc_called(this, "_ZN8S1868C203v29Ev");}
void  S1868C20 ::v30(){vfunc_called(this, "_ZN8S1868C203v30Ev");}
void  S1868C20 ::v31(){vfunc_called(this, "_ZN8S1868C203v31Ev");}
void  S1868C20 ::v32(){vfunc_called(this, "_ZN8S1868C203v32Ev");}
void  S1868C20 ::v33(){vfunc_called(this, "_ZN8S1868C203v33Ev");}
void  S1868C20 ::v34(){vfunc_called(this, "_ZN8S1868C203v34Ev");}
void  S1868C20 ::v35(){vfunc_called(this, "_ZN8S1868C203v35Ev");}
void  S1868C20 ::v36(){vfunc_called(this, "_ZN8S1868C203v36Ev");}
void  S1868C20 ::v37(){vfunc_called(this, "_ZN8S1868C203v37Ev");}
void  S1868C20 ::v38(){vfunc_called(this, "_ZN8S1868C203v38Ev");}
void  S1868C20 ::v39(){vfunc_called(this, "_ZN8S1868C203v39Ev");}
void  S1868C20 ::v40(){vfunc_called(this, "_ZN8S1868C203v40Ev");}
void  S1868C20 ::v41(){vfunc_called(this, "_ZN8S1868C203v41Ev");}
void  S1868C20 ::v42(){vfunc_called(this, "_ZN8S1868C203v42Ev");}
void  S1868C20 ::v43(){vfunc_called(this, "_ZN8S1868C203v43Ev");}
S1868C20 ::S1868C20(){ note_ctor("S1868C20", this);} // tgen

static void Test_S1868C20()
{
  extern Class_Descriptor cd_S1868C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1868C20, buf);
    S1868C20 *dp, &lv = *(dp=new (buf) S1868C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1868C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C20)");
    check_base_class_offset(lv, (S1868C12*), ABISELECT(8,4), "S1868C20");
    check_base_class_offset(lv, (S1868C21*), 0, "S1868C20");
    check_field_offset(lv, s1868c20f0, ABISELECT(16,8), "S1868C20.s1868c20f0");
    test_class_info(&lv, &cd_S1868C20);
    dp->~S1868C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C20(Test_S1868C20, "S1868C20", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S1868C20C1Ev();
extern void _ZN8S1868C20D1Ev();
Name_Map name_map_S1868C20[] = {
  NSPAIR(_ZN8S1868C20C1Ev),
  NSPAIR(_ZN8S1868C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C12;
extern VTBL_ENTRY _ZTI8S1868C12[];
extern Class_Descriptor cd_S1868C21;
extern VTBL_ENTRY _ZTI8S1868C21[];
extern  VTBL_ENTRY _ZTV8S1868C21[];
static Base_Class bases_S1868C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C12,    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_S1868C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S1868C20[];
extern void _ZN8S1868C20D1Ev();
extern void _ZN8S1868C20D0Ev();
extern void _ZN8S1868C213v44Ev();
extern void _ZN8S1868C213v45Ev();
extern void _ZN8S1868C213v46Ev();
extern void _ZN8S1868C213v47Ev();
extern void _ZN8S1868C213v48Ev();
extern void _ZN8S1868C213v49Ev();
extern void _ZN8S1868C213v50Ev();
extern void _ZN8S1868C213v51Ev();
extern void _ZN8S1868C213v52Ev();
extern void _ZN8S1868C213v53Ev();
extern void _ZN8S1868C213v54Ev();
extern void _ZN8S1868C213v55Ev();
extern void _ZN8S1868C203v29Ev();
extern void _ZN8S1868C203v30Ev();
extern void _ZN8S1868C203v31Ev();
extern void _ZN8S1868C203v32Ev();
extern void _ZN8S1868C203v33Ev();
extern void _ZN8S1868C203v34Ev();
extern void _ZN8S1868C203v35Ev();
extern void _ZN8S1868C203v36Ev();
extern void _ZN8S1868C203v37Ev();
extern void _ZN8S1868C203v38Ev();
extern void _ZN8S1868C203v39Ev();
extern void _ZN8S1868C203v40Ev();
extern void _ZN8S1868C203v41Ev();
extern void _ZN8S1868C203v42Ev();
extern void _ZN8S1868C203v43Ev();
static  VTBL_ENTRY vtc_S1868C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S1868C20[0]),
  (VTBL_ENTRY)&_ZN8S1868C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1868C20D0Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v44Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v45Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v46Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v47Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v48Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v49Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v50Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v51Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v52Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v53Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v54Ev,
  (VTBL_ENTRY)&_ZN8S1868C213v55Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v29Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v30Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v31Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v32Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v33Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v34Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v35Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v36Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v37Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v38Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v39Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v40Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v41Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v42Ev,
  (VTBL_ENTRY)&_ZN8S1868C203v43Ev,
};
extern VTBL_ENTRY _ZTI8S1868C20[];
extern  VTBL_ENTRY _ZTV8S1868C20[];
Class_Descriptor cd_S1868C20 = {  "S1868C20", // class name
  bases_S1868C20, 2,
  &(vtc_S1868C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S1868C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1868C20),31, //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  S1868C24_nt  {
  void *s1868c24f0;
  int s1868c24f1;
  ::S7856C15 s1868c24f2;
  ::S7856C12 s1868c24f3;
  void  mf1868c24(); // _ZN11S1868C24_nt9mf1868c24Ev
};
//SIG(-1 S1868C24_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S1868C24_nt ::mf1868c24(){}

//skip512 S1868C24_nt

#else // __cplusplus

Class_Descriptor cd_S1868C24_nt = {  "S1868C24_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  S1868C23_nt  {
  ::S1868C24_nt s1868c23f0;
  void  mf1868c23(); // _ZN11S1868C23_nt9mf1868c23Ev
};
//SIG(-1 S1868C23_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S1868C23_nt ::mf1868c23(){}

//skip512 S1868C23_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1868C1  : S1868C2 {
  int s1868c1f0;
  void *s1868c1f1[14];
  ::S1868C9_nt s1868c1f2;
  ::S1868C11 s1868c1f3;
  ::S1868C15 s1868c1f4;
  ::S1868C16 s1868c1f5;
  ::S1868C18_nt s1868c1f6;
  ::S1868C19 s1868c1f7;
  ::S1868C20 s1868c1f8;
  char s1868c1f9[4];
  ::S1868C17 s1868c1f10;
  int s1868c1f11;
  void *s1868c1f12;
  ::S1868C23_nt s1868c1f13;
  ::S40C13_nt s1868c1f14;
  virtual  ~S1868C1(); // _ZN7S1868C1D1Ev
  virtual void  v1(); // _ZN7S1868C12v1Ev
  virtual void  v2(); // _ZN7S1868C12v2Ev
  virtual void  v3(); // _ZN7S1868C12v3Ev
  virtual void  v4(); // _ZN7S1868C12v4Ev
  virtual void  v5(); // _ZN7S1868C12v5Ev
  virtual void  v6(); // _ZN7S1868C12v6Ev
  virtual void  v7(); // _ZN7S1868C12v7Ev
  virtual void  v8(); // _ZN7S1868C12v8Ev
  S1868C1(); // tgen
};
//SIG(1 S1868C1) C1{ BC2{ BC3{ BC4{ vd m} vd v9 v10 v11 v12 v13 v14 v15 Fp[2]} vd v16 v17 v18 v19 v20 v21 v22 v23 v24 Fi Fp FC5{ BC6{ vd v26} v25 Fp} FC5 FC7{ m Fp}} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fp[14] FC7 FC8{ BC9{ m Fp} Fi Fc Fi[2] Fp FC10{ m Fp Fi[2] FC11{ m}} Fp} FC12{ BC9 Fp[5]} FC13{ BC9 FC14{ m Fp} Fp} FC15{ BC9} FC16{ BC9 Fi Fp Fc[2] Fi} FC17{ BC9 BC18{ vd v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 Fp} Fc[4] FC14 Fi Fp FC19{ m FC20{ m Fp Fi FC21{ m} FC22{ m}}} FC23{ m Fi}}


 S1868C1 ::~S1868C1(){ note_dtor("S1868C1", this);}
void  S1868C1 ::v1(){vfunc_called(this, "_ZN7S1868C12v1Ev");}
void  S1868C1 ::v2(){vfunc_called(this, "_ZN7S1868C12v2Ev");}
void  S1868C1 ::v3(){vfunc_called(this, "_ZN7S1868C12v3Ev");}
void  S1868C1 ::v4(){vfunc_called(this, "_ZN7S1868C12v4Ev");}
void  S1868C1 ::v5(){vfunc_called(this, "_ZN7S1868C12v5Ev");}
void  S1868C1 ::v6(){vfunc_called(this, "_ZN7S1868C12v6Ev");}
void  S1868C1 ::v7(){vfunc_called(this, "_ZN7S1868C12v7Ev");}
void  S1868C1 ::v8(){vfunc_called(this, "_ZN7S1868C12v8Ev");}
S1868C1 ::S1868C1(){ note_ctor("S1868C1", this);} // tgen

static void Test_S1868C1()
{
  extern Class_Descriptor cd_S1868C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,64)];
    init_test(&cd_S1868C1, buf);
    S1868C1 *dp, &lv = *(dp=new (buf) S1868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,252), "sizeof(S1868C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1868C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1868C3*)(S1868C2*), 0, "S1868C1");
    check_base_class_offset(lv, (S1868C3*)(S1868C2*), 0, "S1868C1");
    check_base_class_offset(lv, (S1868C2*), 0, "S1868C1");
    check_field_offset(lv, s1868c1f0, ABISELECT(80,40), "S1868C1.s1868c1f0");
    check_field_offset(lv, s1868c1f1, ABISELECT(88,44), "S1868C1.s1868c1f1");
    check_field_offset(lv, s1868c1f2, ABISELECT(200,100), "S1868C1.s1868c1f2");
    check_field_offset(lv, s1868c1f3, ABISELECT(208,104), "S1868C1.s1868c1f3");
    check_field_offset(lv, s1868c1f4, ABISELECT(272,148), "S1868C1.s1868c1f4");
    check_field_offset(lv, s1868c1f5, ABISELECT(320,172), "S1868C1.s1868c1f5");
    check_field_offset(lv, s1868c1f6, ABISELECT(344,184), "S1868C1.s1868c1f6");
    check_field_offset(lv, s1868c1f7, ABISELECT(352,188), "S1868C1.s1868c1f7");
    check_field_offset(lv, s1868c1f8, ABISELECT(384,208), "S1868C1.s1868c1f8");
    check_field_offset(lv, s1868c1f9, ABISELECT(408,220), "S1868C1.s1868c1f9");
    check_field_offset(lv, s1868c1f10, ABISELECT(416,224), "S1868C1.s1868c1f10");
    check_field_offset(lv, s1868c1f11, ABISELECT(424,228), "S1868C1.s1868c1f11");
    check_field_offset(lv, s1868c1f12, ABISELECT(432,232), "S1868C1.s1868c1f12");
    check_field_offset(lv, s1868c1f13, ABISELECT(440,236), "S1868C1.s1868c1f13");
    check_field_offset(lv, s1868c1f14, ABISELECT(456,248), "S1868C1.s1868c1f14");
    test_class_info(&lv, &cd_S1868C1);
    dp->~S1868C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1868C1(Test_S1868C1, "S1868C1", ABISELECT(464,252));

#else // __cplusplus

extern void _ZN7S1868C1C1Ev();
extern void _ZN7S1868C1D1Ev();
Name_Map name_map_S1868C1[] = {
  NSPAIR(_ZN7S1868C1C1Ev),
  NSPAIR(_ZN7S1868C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1868C3;
extern VTBL_ENTRY _ZTI7S1868C3[];
extern  VTBL_ENTRY _ZTV7S1868C3[];
extern Class_Descriptor cd_S1868C2;
extern VTBL_ENTRY _ZTI7S1868C2[];
extern  VTBL_ENTRY _ZTV7S1868C2[];
static Base_Class bases_S1868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1868C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1868C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1868C1[];
extern void _ZN7S1868C1D1Ev();
extern void _ZN7S1868C1D0Ev();
extern void _ZN7S1868C32v9Ev();
extern void _ZN7S1868C33v10Ev();
extern void _ZN7S1868C33v11Ev();
extern void _ZN7S1868C33v12Ev();
extern void _ZN7S1868C33v13Ev();
extern void _ZN7S1868C33v14Ev();
extern void _ZN7S1868C33v15Ev();
extern void _ZN7S1868C23v16Ev();
extern void _ZN7S1868C23v17Ev();
extern void _ZN7S1868C23v18Ev();
extern void _ZN7S1868C23v19Ev();
extern void _ZN7S1868C23v20Ev();
extern void _ZN7S1868C23v21Ev();
extern void _ZN7S1868C23v22Ev();
extern void _ZN7S1868C23v23Ev();
extern void _ZN7S1868C23v24Ev();
extern void _ZN7S1868C12v1Ev();
extern void _ZN7S1868C12v2Ev();
extern void _ZN7S1868C12v3Ev();
extern void _ZN7S1868C12v4Ev();
extern void _ZN7S1868C12v5Ev();
extern void _ZN7S1868C12v6Ev();
extern void _ZN7S1868C12v7Ev();
extern void _ZN7S1868C12v8Ev();
static  VTBL_ENTRY vtc_S1868C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1868C1[0]),
  (VTBL_ENTRY)&_ZN7S1868C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1868C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1868C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1868C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1868C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1868C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S1868C1[];
extern  VTBL_ENTRY _ZTV7S1868C1[];
Class_Descriptor cd_S1868C1 = {  "S1868C1", // class name
  bases_S1868C1, 3,
  &(vtc_S1868C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,252), // object size
  NSPAIRA(_ZTI7S1868C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1868C1),28, //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  S1471C4  {
  int s1471c4f0;
  __tsi64 s1471c4f1;
  void *s1471c4f2[4];
  int s1471c4f3[2];
  void *s1471c4f4;
  ::S40C9_nt s1471c4f5;
  void *s1471c4f6[2];
  virtual  ~S1471C4(); // _ZN7S1471C4D1Ev
  virtual void  v5(); // _ZN7S1471C42v5Ev
  virtual void  v6(); // _ZN7S1471C42v6Ev
  virtual void  v7(); // _ZN7S1471C42v7Ev
  virtual void  v8(); // _ZN7S1471C42v8Ev
  virtual void  v9(); // _ZN7S1471C42v9Ev
  virtual void  v10(); // _ZN7S1471C43v10Ev
  virtual void  v11(); // _ZN7S1471C43v11Ev
  virtual void  v12(); // _ZN7S1471C43v12Ev
  virtual void  v13(); // _ZN7S1471C43v13Ev
  virtual void  v14(); // _ZN7S1471C43v14Ev
  virtual void  v15(); // _ZN7S1471C43v15Ev
  virtual void  v16(); // _ZN7S1471C43v16Ev
  virtual void  v17(); // _ZN7S1471C43v17Ev
  virtual void  v18(); // _ZN7S1471C43v18Ev
  virtual void  v19(); // _ZN7S1471C43v19Ev
  virtual void  v20(); // _ZN7S1471C43v20Ev
  virtual void  v21(); // _ZN7S1471C43v21Ev
  virtual void  v22(); // _ZN7S1471C43v22Ev
  virtual void  v23(); // _ZN7S1471C43v23Ev
  virtual void  v24(); // _ZN7S1471C43v24Ev
  virtual void  v25(); // _ZN7S1471C43v25Ev
  virtual void  v26(); // _ZN7S1471C43v26Ev
  virtual void  v27(); // _ZN7S1471C43v27Ev
  virtual void  v28(); // _ZN7S1471C43v28Ev
  virtual void  v29(); // _ZN7S1471C43v29Ev
  virtual void  v30(); // _ZN7S1471C43v30Ev
  virtual void  v31(); // _ZN7S1471C43v31Ev
  virtual void  v32(); // _ZN7S1471C43v32Ev
  virtual void  v33(); // _ZN7S1471C43v33Ev
  virtual void  v34(); // _ZN7S1471C43v34Ev
  virtual void  v35(); // _ZN7S1471C43v35Ev
  virtual void  v36(); // _ZN7S1471C43v36Ev
  virtual void  v37(); // _ZN7S1471C43v37Ev
  virtual void  v38(); // _ZN7S1471C43v38Ev
  virtual void  v39(); // _ZN7S1471C43v39Ev
  virtual void  v40(); // _ZN7S1471C43v40Ev
  virtual void  v41(); // _ZN7S1471C43v41Ev
  virtual void  v42(); // _ZN7S1471C43v42Ev
  virtual void  v43(); // _ZN7S1471C43v43Ev
  virtual void  v44(); // _ZN7S1471C43v44Ev
  virtual void  v45(); // _ZN7S1471C43v45Ev
  virtual void  v46(); // _ZN7S1471C43v46Ev
  virtual void  v47(); // _ZN7S1471C43v47Ev
  virtual void  v48(); // _ZN7S1471C43v48Ev
  virtual void  v49(); // _ZN7S1471C43v49Ev
  virtual void  v50(); // _ZN7S1471C43v50Ev
  virtual void  v51(); // _ZN7S1471C43v51Ev
  virtual void  v52(); // _ZN7S1471C43v52Ev
  virtual void  v53(); // _ZN7S1471C43v53Ev
  virtual void  v54(); // _ZN7S1471C43v54Ev
  virtual void  v55(); // _ZN7S1471C43v55Ev
  virtual void  v56(); // _ZN7S1471C43v56Ev
  virtual void  v57(); // _ZN7S1471C43v57Ev
  virtual void  v58(); // _ZN7S1471C43v58Ev
  virtual void  v59(); // _ZN7S1471C43v59Ev
  virtual void  v60(); // _ZN7S1471C43v60Ev
  virtual void  v61(); // _ZN7S1471C43v61Ev
  virtual void  v62(); // _ZN7S1471C43v62Ev
  virtual void  v63(); // _ZN7S1471C43v63Ev
  virtual void  v64(); // _ZN7S1471C43v64Ev
  virtual void  v65(); // _ZN7S1471C43v65Ev
  virtual void  v66(); // _ZN7S1471C43v66Ev
  virtual void  v67(); // _ZN7S1471C43v67Ev
  virtual void  v68(); // _ZN7S1471C43v68Ev
  S1471C4(); // tgen
};
//SIG(-1 S1471C4) 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]}


 S1471C4 ::~S1471C4(){ note_dtor("S1471C4", this);}
void  S1471C4 ::v5(){vfunc_called(this, "_ZN7S1471C42v5Ev");}
void  S1471C4 ::v6(){vfunc_called(this, "_ZN7S1471C42v6Ev");}
void  S1471C4 ::v7(){vfunc_called(this, "_ZN7S1471C42v7Ev");}
void  S1471C4 ::v8(){vfunc_called(this, "_ZN7S1471C42v8Ev");}
void  S1471C4 ::v9(){vfunc_called(this, "_ZN7S1471C42v9Ev");}
void  S1471C4 ::v10(){vfunc_called(this, "_ZN7S1471C43v10Ev");}
void  S1471C4 ::v11(){vfunc_called(this, "_ZN7S1471C43v11Ev");}
void  S1471C4 ::v12(){vfunc_called(this, "_ZN7S1471C43v12Ev");}
void  S1471C4 ::v13(){vfunc_called(this, "_ZN7S1471C43v13Ev");}
void  S1471C4 ::v14(){vfunc_called(this, "_ZN7S1471C43v14Ev");}
void  S1471C4 ::v15(){vfunc_called(this, "_ZN7S1471C43v15Ev");}
void  S1471C4 ::v16(){vfunc_called(this, "_ZN7S1471C43v16Ev");}
void  S1471C4 ::v17(){vfunc_called(this, "_ZN7S1471C43v17Ev");}
void  S1471C4 ::v18(){vfunc_called(this, "_ZN7S1471C43v18Ev");}
void  S1471C4 ::v19(){vfunc_called(this, "_ZN7S1471C43v19Ev");}
void  S1471C4 ::v20(){vfunc_called(this, "_ZN7S1471C43v20Ev");}
void  S1471C4 ::v21(){vfunc_called(this, "_ZN7S1471C43v21Ev");}
void  S1471C4 ::v22(){vfunc_called(this, "_ZN7S1471C43v22Ev");}
void  S1471C4 ::v23(){vfunc_called(this, "_ZN7S1471C43v23Ev");}
void  S1471C4 ::v24(){vfunc_called(this, "_ZN7S1471C43v24Ev");}
void  S1471C4 ::v25(){vfunc_called(this, "_ZN7S1471C43v25Ev");}
void  S1471C4 ::v26(){vfunc_called(this, "_ZN7S1471C43v26Ev");}
void  S1471C4 ::v27(){vfunc_called(this, "_ZN7S1471C43v27Ev");}
void  S1471C4 ::v28(){vfunc_called(this, "_ZN7S1471C43v28Ev");}
void  S1471C4 ::v29(){vfunc_called(this, "_ZN7S1471C43v29Ev");}
void  S1471C4 ::v30(){vfunc_called(this, "_ZN7S1471C43v30Ev");}
void  S1471C4 ::v31(){vfunc_called(this, "_ZN7S1471C43v31Ev");}
void  S1471C4 ::v32(){vfunc_called(this, "_ZN7S1471C43v32Ev");}
void  S1471C4 ::v33(){vfunc_called(this, "_ZN7S1471C43v33Ev");}
void  S1471C4 ::v34(){vfunc_called(this, "_ZN7S1471C43v34Ev");}
void  S1471C4 ::v35(){vfunc_called(this, "_ZN7S1471C43v35Ev");}
void  S1471C4 ::v36(){vfunc_called(this, "_ZN7S1471C43v36Ev");}
void  S1471C4 ::v37(){vfunc_called(this, "_ZN7S1471C43v37Ev");}
void  S1471C4 ::v38(){vfunc_called(this, "_ZN7S1471C43v38Ev");}
void  S1471C4 ::v39(){vfunc_called(this, "_ZN7S1471C43v39Ev");}
void  S1471C4 ::v40(){vfunc_called(this, "_ZN7S1471C43v40Ev");}
void  S1471C4 ::v41(){vfunc_called(this, "_ZN7S1471C43v41Ev");}
void  S1471C4 ::v42(){vfunc_called(this, "_ZN7S1471C43v42Ev");}
void  S1471C4 ::v43(){vfunc_called(this, "_ZN7S1471C43v43Ev");}
void  S1471C4 ::v44(){vfunc_called(this, "_ZN7S1471C43v44Ev");}
void  S1471C4 ::v45(){vfunc_called(this, "_ZN7S1471C43v45Ev");}
void  S1471C4 ::v46(){vfunc_called(this, "_ZN7S1471C43v46Ev");}
void  S1471C4 ::v47(){vfunc_called(this, "_ZN7S1471C43v47Ev");}
void  S1471C4 ::v48(){vfunc_called(this, "_ZN7S1471C43v48Ev");}
void  S1471C4 ::v49(){vfunc_called(this, "_ZN7S1471C43v49Ev");}
void  S1471C4 ::v50(){vfunc_called(this, "_ZN7S1471C43v50Ev");}
void  S1471C4 ::v51(){vfunc_called(this, "_ZN7S1471C43v51Ev");}
void  S1471C4 ::v52(){vfunc_called(this, "_ZN7S1471C43v52Ev");}
void  S1471C4 ::v53(){vfunc_called(this, "_ZN7S1471C43v53Ev");}
void  S1471C4 ::v54(){vfunc_called(this, "_ZN7S1471C43v54Ev");}
void  S1471C4 ::v55(){vfunc_called(this, "_ZN7S1471C43v55Ev");}
void  S1471C4 ::v56(){vfunc_called(this, "_ZN7S1471C43v56Ev");}
void  S1471C4 ::v57(){vfunc_called(this, "_ZN7S1471C43v57Ev");}
void  S1471C4 ::v58(){vfunc_called(this, "_ZN7S1471C43v58Ev");}
void  S1471C4 ::v59(){vfunc_called(this, "_ZN7S1471C43v59Ev");}
void  S1471C4 ::v60(){vfunc_called(this, "_ZN7S1471C43v60Ev");}
void  S1471C4 ::v61(){vfunc_called(this, "_ZN7S1471C43v61Ev");}
void  S1471C4 ::v62(){vfunc_called(this, "_ZN7S1471C43v62Ev");}
void  S1471C4 ::v63(){vfunc_called(this, "_ZN7S1471C43v63Ev");}
void  S1471C4 ::v64(){vfunc_called(this, "_ZN7S1471C43v64Ev");}
void  S1471C4 ::v65(){vfunc_called(this, "_ZN7S1471C43v65Ev");}
void  S1471C4 ::v66(){vfunc_called(this, "_ZN7S1471C43v66Ev");}
void  S1471C4 ::v67(){vfunc_called(this, "_ZN7S1471C43v67Ev");}
void  S1471C4 ::v68(){vfunc_called(this, "_ZN7S1471C43v68Ev");}
S1471C4 ::S1471C4(){ note_ctor("S1471C4", this);} // tgen

static void Test_S1471C4()
{
  extern Class_Descriptor cd_S1471C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1471C4, buf);
    S1471C4 *dp, &lv = *(dp=new (buf) S1471C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1471C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C4)");
    check_field_offset(lv, s1471c4f0, ABISELECT(8,4), "S1471C4.s1471c4f0");
    check_field_offset(lv, s1471c4f1, ABISELECT(16,8), "S1471C4.s1471c4f1");
    check_field_offset(lv, s1471c4f2, ABISELECT(24,16), "S1471C4.s1471c4f2");
    check_field_offset(lv, s1471c4f3, ABISELECT(56,32), "S1471C4.s1471c4f3");
    check_field_offset(lv, s1471c4f4, ABISELECT(64,40), "S1471C4.s1471c4f4");
    check_field_offset(lv, s1471c4f5, ABISELECT(72,44), "S1471C4.s1471c4f5");
    check_field_offset(lv, s1471c4f6, ABISELECT(80,52), "S1471C4.s1471c4f6");
    test_class_info(&lv, &cd_S1471C4);
    dp->~S1471C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C4(Test_S1471C4, "S1471C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1471C4C1Ev();
extern void _ZN7S1471C4D1Ev();
Name_Map name_map_S1471C4[] = {
  NSPAIR(_ZN7S1471C4C1Ev),
  NSPAIR(_ZN7S1471C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1471C4[];
extern void _ZN7S1471C4D1Ev();
extern void _ZN7S1471C4D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
static  VTBL_ENTRY vtc_S1471C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C4[0]),
  (VTBL_ENTRY)&_ZN7S1471C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
};
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
Class_Descriptor cd_S1471C4 = {  "S1471C4", // class name
  0,0,//no base classes
  &(vtc_S1471C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1471C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1471C4),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  S1471C3  : S1471C4 {
  unsigned int s1471c3f0:1;
  unsigned int s1471c3f1:1;
  unsigned int s1471c3f2:1;
  unsigned int s1471c3f3:1;
  unsigned int s1471c3f4:1;
  unsigned int s1471c3f5:1;
  unsigned int s1471c3f6:1;
  ::S7856C24 s1471c3f7;
  virtual  ~S1471C3(); // _ZN7S1471C3D1Ev
  virtual void  v69(); // _ZN7S1471C33v69Ev
  virtual void  v70(); // _ZN7S1471C33v70Ev
  virtual void  v71(); // _ZN7S1471C33v71Ev
  virtual void  v72(); // _ZN7S1471C33v72Ev
  virtual void  v73(); // _ZN7S1471C33v73Ev
  virtual void  v74(); // _ZN7S1471C33v74Ev
  virtual void  v75(); // _ZN7S1471C33v75Ev
  virtual void  v76(); // _ZN7S1471C33v76Ev
  virtual void  v77(); // _ZN7S1471C33v77Ev
  virtual void  v78(); // _ZN7S1471C33v78Ev
  virtual void  v79(); // _ZN7S1471C33v79Ev
  virtual void  v80(); // _ZN7S1471C33v80Ev
  virtual void  v81(); // _ZN7S1471C33v81Ev
  virtual void  v82(); // _ZN7S1471C33v82Ev
  virtual void  v83(); // _ZN7S1471C33v83Ev
  virtual void  v84(); // _ZN7S1471C33v84Ev
  virtual void  v85(); // _ZN7S1471C33v85Ev
  virtual void  v86(); // _ZN7S1471C33v86Ev
  virtual void  v87(); // _ZN7S1471C33v87Ev
  virtual void  v88(); // _ZN7S1471C33v88Ev
  S1471C3(); // tgen
};
//SIG(-1 S1471C3) C1{ BC2{ 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 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC4{ m}}


 S1471C3 ::~S1471C3(){ note_dtor("S1471C3", this);}
void  S1471C3 ::v69(){vfunc_called(this, "_ZN7S1471C33v69Ev");}
void  S1471C3 ::v70(){vfunc_called(this, "_ZN7S1471C33v70Ev");}
void  S1471C3 ::v71(){vfunc_called(this, "_ZN7S1471C33v71Ev");}
void  S1471C3 ::v72(){vfunc_called(this, "_ZN7S1471C33v72Ev");}
void  S1471C3 ::v73(){vfunc_called(this, "_ZN7S1471C33v73Ev");}
void  S1471C3 ::v74(){vfunc_called(this, "_ZN7S1471C33v74Ev");}
void  S1471C3 ::v75(){vfunc_called(this, "_ZN7S1471C33v75Ev");}
void  S1471C3 ::v76(){vfunc_called(this, "_ZN7S1471C33v76Ev");}
void  S1471C3 ::v77(){vfunc_called(this, "_ZN7S1471C33v77Ev");}
void  S1471C3 ::v78(){vfunc_called(this, "_ZN7S1471C33v78Ev");}
void  S1471C3 ::v79(){vfunc_called(this, "_ZN7S1471C33v79Ev");}
void  S1471C3 ::v80(){vfunc_called(this, "_ZN7S1471C33v80Ev");}
void  S1471C3 ::v81(){vfunc_called(this, "_ZN7S1471C33v81Ev");}
void  S1471C3 ::v82(){vfunc_called(this, "_ZN7S1471C33v82Ev");}
void  S1471C3 ::v83(){vfunc_called(this, "_ZN7S1471C33v83Ev");}
void  S1471C3 ::v84(){vfunc_called(this, "_ZN7S1471C33v84Ev");}
void  S1471C3 ::v85(){vfunc_called(this, "_ZN7S1471C33v85Ev");}
void  S1471C3 ::v86(){vfunc_called(this, "_ZN7S1471C33v86Ev");}
void  S1471C3 ::v87(){vfunc_called(this, "_ZN7S1471C33v87Ev");}
void  S1471C3 ::v88(){vfunc_called(this, "_ZN7S1471C33v88Ev");}
S1471C3 ::S1471C3(){ note_ctor("S1471C3", this);} // tgen

static void Test_S1471C3()
{
  extern Class_Descriptor cd_S1471C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1471C3, buf);
    S1471C3 *dp, &lv = *(dp=new (buf) S1471C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1471C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C3)");
    check_base_class_offset(lv, (S1471C4*), 0, "S1471C3");
    set_bf_and_test(lv, s1471c3f0, ABISELECT(96,60), 0, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f1, ABISELECT(96,60), 1, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f2, ABISELECT(96,60), 2, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f3, ABISELECT(96,60), 3, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f4, ABISELECT(96,60), 4, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f5, ABISELECT(96,60), 5, 1, 1, "S1471C3");
    set_bf_and_test(lv, s1471c3f6, ABISELECT(96,60), 6, 1, 1, "S1471C3");
    check_field_offset(lv, s1471c3f7, ABISELECT(97,61), "S1471C3.s1471c3f7");
    test_class_info(&lv, &cd_S1471C3);
    dp->~S1471C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C3(Test_S1471C3, "S1471C3", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1471C3C1Ev();
extern void _ZN7S1471C3D1Ev();
Name_Map name_map_S1471C3[] = {
  NSPAIR(_ZN7S1471C3C1Ev),
  NSPAIR(_ZN7S1471C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
static Base_Class bases_S1471C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1471C3[];
extern void _ZN7S1471C3D1Ev();
extern void _ZN7S1471C3D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
static  VTBL_ENTRY vtc_S1471C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C3[0]),
  (VTBL_ENTRY)&_ZN7S1471C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
};
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
Class_Descriptor cd_S1471C3 = {  "S1471C3", // class name
  bases_S1471C3, 1,
  &(vtc_S1471C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1471C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C3),88, //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  S1471C2  : S1471C3 {
  virtual  ~S1471C2(); // _ZN7S1471C2D1Ev
  virtual void  v89(); // _ZN7S1471C23v89Ev
  virtual void  v90(); // _ZN7S1471C23v90Ev
  S1471C2(); // tgen
};
//SIG(-1 S1471C2) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC5{ m}} vd v1 v2}


 S1471C2 ::~S1471C2(){ note_dtor("S1471C2", this);}
void  S1471C2 ::v89(){vfunc_called(this, "_ZN7S1471C23v89Ev");}
void  S1471C2 ::v90(){vfunc_called(this, "_ZN7S1471C23v90Ev");}
S1471C2 ::S1471C2(){ note_ctor("S1471C2", this);} // tgen

static void Test_S1471C2()
{
  extern Class_Descriptor cd_S1471C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1471C2, buf);
    S1471C2 *dp, &lv = *(dp=new (buf) S1471C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1471C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C2)");
    check_base_class_offset(lv, (S1471C4*)(S1471C3*), 0, "S1471C2");
    check_base_class_offset(lv, (S1471C3*), 0, "S1471C2");
    test_class_info(&lv, &cd_S1471C2);
    dp->~S1471C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C2(Test_S1471C2, "S1471C2", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1471C2C1Ev();
extern void _ZN7S1471C2D1Ev();
Name_Map name_map_S1471C2[] = {
  NSPAIR(_ZN7S1471C2C1Ev),
  NSPAIR(_ZN7S1471C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
extern Class_Descriptor cd_S1471C3;
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
static Base_Class bases_S1471C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1471C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1471C2[];
extern void _ZN7S1471C2D1Ev();
extern void _ZN7S1471C2D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
extern void _ZN7S1471C23v89Ev();
extern void _ZN7S1471C23v90Ev();
static  VTBL_ENTRY vtc_S1471C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C2[0]),
  (VTBL_ENTRY)&_ZN7S1471C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v89Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v90Ev,
};
extern VTBL_ENTRY _ZTI7S1471C2[];
extern  VTBL_ENTRY _ZTV7S1471C2[];
Class_Descriptor cd_S1471C2 = {  "S1471C2", // class name
  bases_S1471C2, 2,
  &(vtc_S1471C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1471C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C2),90, //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  S1471C1  : S1471C2 {
  ::S1304C7_nt s1471c1f0;
  unsigned int s1471c1f1:1;
  virtual  ~S1471C1(); // _ZN7S1471C1D1Ev
  virtual void  v1(); // _ZN7S1471C12v1Ev
  virtual void  v2(); // _ZN7S1471C12v2Ev
  virtual void  v3(); // _ZN7S1471C12v3Ev
  virtual void  v4(); // _ZN7S1471C12v4Ev
  S1471C1(); // tgen
};
//SIG(1 S1471C1) 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v89 v90} vd v1 v2 v3 v4 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp} Fi:1}


 S1471C1 ::~S1471C1(){ note_dtor("S1471C1", this);}
void  S1471C1 ::v1(){vfunc_called(this, "_ZN7S1471C12v1Ev");}
void  S1471C1 ::v2(){vfunc_called(this, "_ZN7S1471C12v2Ev");}
void  S1471C1 ::v3(){vfunc_called(this, "_ZN7S1471C12v3Ev");}
void  S1471C1 ::v4(){vfunc_called(this, "_ZN7S1471C12v4Ev");}
S1471C1 ::S1471C1(){ note_ctor("S1471C1", this);} // tgen

static void Test_S1471C1()
{
  extern Class_Descriptor cd_S1471C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,25)];
    init_test(&cd_S1471C1, buf);
    S1471C1 *dp, &lv = *(dp=new (buf) S1471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S1471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1471C1)");
    check_base_class_offset(lv, (S1471C4*)(S1471C3*)(S1471C2*), 0, "S1471C1");
    check_base_class_offset(lv, (S1471C3*)(S1471C2*), 0, "S1471C1");
    check_base_class_offset(lv, (S1471C2*), 0, "S1471C1");
    check_field_offset(lv, s1471c1f0, ABISELECT(104,64), "S1471C1.s1471c1f0");
    set_bf_and_test(lv, s1471c1f1, ABISELECT(144,92), 0, 1, 1, "S1471C1");
    test_class_info(&lv, &cd_S1471C1);
    dp->~S1471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1471C1(Test_S1471C1, "S1471C1", ABISELECT(152,96));

#else // __cplusplus

extern void _ZN7S1471C1C1Ev();
extern void _ZN7S1471C1D1Ev();
Name_Map name_map_S1471C1[] = {
  NSPAIR(_ZN7S1471C1C1Ev),
  NSPAIR(_ZN7S1471C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1471C4;
extern VTBL_ENTRY _ZTI7S1471C4[];
extern  VTBL_ENTRY _ZTV7S1471C4[];
extern Class_Descriptor cd_S1471C3;
extern VTBL_ENTRY _ZTI7S1471C3[];
extern  VTBL_ENTRY _ZTV7S1471C3[];
extern Class_Descriptor cd_S1471C2;
extern VTBL_ENTRY _ZTI7S1471C2[];
extern  VTBL_ENTRY _ZTV7S1471C2[];
static Base_Class bases_S1471C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1471C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1471C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1471C1[];
extern void _ZN7S1471C1D1Ev();
extern void _ZN7S1471C1D0Ev();
extern void _ZN7S1471C42v5Ev();
extern void _ZN7S1471C42v6Ev();
extern void _ZN7S1471C42v7Ev();
extern void _ZN7S1471C42v8Ev();
extern void _ZN7S1471C42v9Ev();
extern void _ZN7S1471C43v10Ev();
extern void _ZN7S1471C43v11Ev();
extern void _ZN7S1471C43v12Ev();
extern void _ZN7S1471C43v13Ev();
extern void _ZN7S1471C43v14Ev();
extern void _ZN7S1471C43v15Ev();
extern void _ZN7S1471C43v16Ev();
extern void _ZN7S1471C43v17Ev();
extern void _ZN7S1471C43v18Ev();
extern void _ZN7S1471C43v19Ev();
extern void _ZN7S1471C43v20Ev();
extern void _ZN7S1471C43v21Ev();
extern void _ZN7S1471C43v22Ev();
extern void _ZN7S1471C43v23Ev();
extern void _ZN7S1471C43v24Ev();
extern void _ZN7S1471C43v25Ev();
extern void _ZN7S1471C43v26Ev();
extern void _ZN7S1471C43v27Ev();
extern void _ZN7S1471C43v28Ev();
extern void _ZN7S1471C43v29Ev();
extern void _ZN7S1471C43v30Ev();
extern void _ZN7S1471C43v31Ev();
extern void _ZN7S1471C43v32Ev();
extern void _ZN7S1471C43v33Ev();
extern void _ZN7S1471C43v34Ev();
extern void _ZN7S1471C43v35Ev();
extern void _ZN7S1471C43v36Ev();
extern void _ZN7S1471C43v37Ev();
extern void _ZN7S1471C43v38Ev();
extern void _ZN7S1471C43v39Ev();
extern void _ZN7S1471C43v40Ev();
extern void _ZN7S1471C43v41Ev();
extern void _ZN7S1471C43v42Ev();
extern void _ZN7S1471C43v43Ev();
extern void _ZN7S1471C43v44Ev();
extern void _ZN7S1471C43v45Ev();
extern void _ZN7S1471C43v46Ev();
extern void _ZN7S1471C43v47Ev();
extern void _ZN7S1471C43v48Ev();
extern void _ZN7S1471C43v49Ev();
extern void _ZN7S1471C43v50Ev();
extern void _ZN7S1471C43v51Ev();
extern void _ZN7S1471C43v52Ev();
extern void _ZN7S1471C43v53Ev();
extern void _ZN7S1471C43v54Ev();
extern void _ZN7S1471C43v55Ev();
extern void _ZN7S1471C43v56Ev();
extern void _ZN7S1471C43v57Ev();
extern void _ZN7S1471C43v58Ev();
extern void _ZN7S1471C43v59Ev();
extern void _ZN7S1471C43v60Ev();
extern void _ZN7S1471C43v61Ev();
extern void _ZN7S1471C43v62Ev();
extern void _ZN7S1471C43v63Ev();
extern void _ZN7S1471C43v64Ev();
extern void _ZN7S1471C43v65Ev();
extern void _ZN7S1471C43v66Ev();
extern void _ZN7S1471C43v67Ev();
extern void _ZN7S1471C43v68Ev();
extern void _ZN7S1471C33v69Ev();
extern void _ZN7S1471C33v70Ev();
extern void _ZN7S1471C33v71Ev();
extern void _ZN7S1471C33v72Ev();
extern void _ZN7S1471C33v73Ev();
extern void _ZN7S1471C33v74Ev();
extern void _ZN7S1471C33v75Ev();
extern void _ZN7S1471C33v76Ev();
extern void _ZN7S1471C33v77Ev();
extern void _ZN7S1471C33v78Ev();
extern void _ZN7S1471C33v79Ev();
extern void _ZN7S1471C33v80Ev();
extern void _ZN7S1471C33v81Ev();
extern void _ZN7S1471C33v82Ev();
extern void _ZN7S1471C33v83Ev();
extern void _ZN7S1471C33v84Ev();
extern void _ZN7S1471C33v85Ev();
extern void _ZN7S1471C33v86Ev();
extern void _ZN7S1471C33v87Ev();
extern void _ZN7S1471C33v88Ev();
extern void _ZN7S1471C23v89Ev();
extern void _ZN7S1471C23v90Ev();
extern void _ZN7S1471C12v1Ev();
extern void _ZN7S1471C12v2Ev();
extern void _ZN7S1471C12v3Ev();
extern void _ZN7S1471C12v4Ev();
static  VTBL_ENTRY vtc_S1471C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1471C1[0]),
  (VTBL_ENTRY)&_ZN7S1471C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1471C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1471C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1471C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1471C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v89Ev,
  (VTBL_ENTRY)&_ZN7S1471C23v90Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1471C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1471C1[];
extern  VTBL_ENTRY _ZTV7S1471C1[];
Class_Descriptor cd_S1471C1 = {  "S1471C1", // class name
  bases_S1471C1, 3,
  &(vtc_S1471C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,96), // object size
  NSPAIRA(_ZTI7S1471C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1471C1),94, //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  S17556C4_nt  {
  __tsi64 s17556c4f0[4];
};
//SIG(-1 S17556C4_nt) C1{ FL[4]}



//skip512 S17556C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C3_nt  {
  ::S17556C4_nt s17556c3f0;
  void  mf17556c3(); // _ZN11S17556C3_nt9mf17556c3Ev
};
//SIG(-1 S17556C3_nt) C1{ m FC2{ FL[4]}}


void  S17556C3_nt ::mf17556c3(){}

//skip512 S17556C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C5_nt  {
  void *s17556c5f0;
  int s17556c5f1;
  ::S7856C24 s17556c5f2;
  void  mf17556c5(); // _ZN11S17556C5_nt9mf17556c5Ev
};
//SIG(-1 S17556C5_nt) C1{ m Fp Fi FC2{ m}}


void  S17556C5_nt ::mf17556c5(){}

//skip512 S17556C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C7  {
  char s17556c7f0;
  ::S17556C5_nt s17556c7f1;
  ::S17556C5_nt s17556c7f2;
  ::S17556C5_nt s17556c7f3;
  ::S17556C5_nt s17556c7f4;
  int s17556c7f5;
  ::S17556C5_nt s17556c7f6;
  char s17556c7f7;
  int s17556c7f8;
  void  mf17556c7(); // _ZN8S17556C79mf17556c7Ev
};
//SIG(-1 S17556C7) C1{ m Fc FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 Fi FC2 Fc Fi}


void  S17556C7 ::mf17556c7(){}

static void Test_S17556C7()
{
  {
    init_simple_test("S17556C7");
    S17556C7 lv;
    check2(sizeof(lv), ABISELECT(104,76), "sizeof(S17556C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C7)");
    check_field_offset(lv, s17556c7f0, 0, "S17556C7.s17556c7f0");
    check_field_offset(lv, s17556c7f1, ABISELECT(8,4), "S17556C7.s17556c7f1");
    check_field_offset(lv, s17556c7f2, ABISELECT(24,16), "S17556C7.s17556c7f2");
    check_field_offset(lv, s17556c7f3, ABISELECT(40,28), "S17556C7.s17556c7f3");
    check_field_offset(lv, s17556c7f4, ABISELECT(56,40), "S17556C7.s17556c7f4");
    check_field_offset(lv, s17556c7f5, ABISELECT(72,52), "S17556C7.s17556c7f5");
    check_field_offset(lv, s17556c7f6, ABISELECT(80,56), "S17556C7.s17556c7f6");
    check_field_offset(lv, s17556c7f7, ABISELECT(96,68), "S17556C7.s17556c7f7");
    check_field_offset(lv, s17556c7f8, ABISELECT(100,72), "S17556C7.s17556c7f8");
  }
}
static Arrange_To_Call_Me vS17556C7(Test_S17556C7, "S17556C7", ABISELECT(104,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C8  {
  char s17556c8f0;
  int s17556c8f1[16];
  void  mf17556c8(); // _ZN8S17556C89mf17556c8Ev
};
//SIG(-1 S17556C8) C1{ m Fc Fi[16]}


void  S17556C8 ::mf17556c8(){}

static void Test_S17556C8()
{
  {
    init_simple_test("S17556C8");
    S17556C8 lv;
    check2(sizeof(lv), 68, "sizeof(S17556C8)");
    check2(__alignof__(lv), 4, "__alignof__(S17556C8)");
    check_field_offset(lv, s17556c8f0, 0, "S17556C8.s17556c8f0");
    check_field_offset(lv, s17556c8f1, 4, "S17556C8.s17556c8f1");
  }
}
static Arrange_To_Call_Me vS17556C8(Test_S17556C8, "S17556C8", 68);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C9_nt  {
  char s17556c9f0[2];
  void  mf17556c9(); // _ZN11S17556C9_nt9mf17556c9Ev
};
//SIG(-1 S17556C9_nt) C1{ m Fc[2]}


void  S17556C9_nt ::mf17556c9(){}

//skip512 S17556C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C10  {
  char s17556c10f0;
  ::S17556C5_nt s17556c10f1;
  ::S17556C5_nt s17556c10f2;
  int s17556c10f3[5];
  char s17556c10f4;
  int s17556c10f5;
  ::S17556C5_nt s17556c10f6;
  ::S17556C5_nt s17556c10f7;
  void  mf17556c10(); // _ZN9S17556C1010mf17556c10Ev
};
//SIG(-1 S17556C10) C1{ m Fc FC2{ m Fp Fi FC3{ m}} FC2 Fi[5] Fc Fi FC2 FC2}


void  S17556C10 ::mf17556c10(){}

static void Test_S17556C10()
{
  {
    init_simple_test("S17556C10");
    S17556C10 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S17556C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C10)");
    check_field_offset(lv, s17556c10f0, 0, "S17556C10.s17556c10f0");
    check_field_offset(lv, s17556c10f1, ABISELECT(8,4), "S17556C10.s17556c10f1");
    check_field_offset(lv, s17556c10f2, ABISELECT(24,16), "S17556C10.s17556c10f2");
    check_field_offset(lv, s17556c10f3, ABISELECT(40,28), "S17556C10.s17556c10f3");
    check_field_offset(lv, s17556c10f4, ABISELECT(60,48), "S17556C10.s17556c10f4");
    check_field_offset(lv, s17556c10f5, ABISELECT(64,52), "S17556C10.s17556c10f5");
    check_field_offset(lv, s17556c10f6, ABISELECT(72,56), "S17556C10.s17556c10f6");
    check_field_offset(lv, s17556c10f7, ABISELECT(88,68), "S17556C10.s17556c10f7");
  }
}
static Arrange_To_Call_Me vS17556C10(Test_S17556C10, "S17556C10", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C11  {
  char s17556c11f0;
  int s17556c11f1[2];
  ::S17556C5_nt s17556c11f2;
  ::S17556C5_nt s17556c11f3;
  ::S17556C5_nt s17556c11f4;
  ::S17556C5_nt s17556c11f5;
  ::S17556C5_nt s17556c11f6;
  ::S17556C5_nt s17556c11f7;
  char s17556c11f8;
  void  mf17556c11(); // _ZN9S17556C1110mf17556c11Ev
};
//SIG(-1 S17556C11) C1{ m Fc Fi[2] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 Fc}


void  S17556C11 ::mf17556c11(){}

static void Test_S17556C11()
{
  {
    init_simple_test("S17556C11");
    S17556C11 lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S17556C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C11)");
    check_field_offset(lv, s17556c11f0, 0, "S17556C11.s17556c11f0");
    check_field_offset(lv, s17556c11f1, 4, "S17556C11.s17556c11f1");
    check_field_offset(lv, s17556c11f2, ABISELECT(16,12), "S17556C11.s17556c11f2");
    check_field_offset(lv, s17556c11f3, ABISELECT(32,24), "S17556C11.s17556c11f3");
    check_field_offset(lv, s17556c11f4, ABISELECT(48,36), "S17556C11.s17556c11f4");
    check_field_offset(lv, s17556c11f5, ABISELECT(64,48), "S17556C11.s17556c11f5");
    check_field_offset(lv, s17556c11f6, ABISELECT(80,60), "S17556C11.s17556c11f6");
    check_field_offset(lv, s17556c11f7, ABISELECT(96,72), "S17556C11.s17556c11f7");
    check_field_offset(lv, s17556c11f8, ABISELECT(112,84), "S17556C11.s17556c11f8");
  }
}
static Arrange_To_Call_Me vS17556C11(Test_S17556C11, "S17556C11", ABISELECT(120,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C12  {
  char s17556c12f0;
  ::S1868C13_nt s17556c12f1;
  void  mf17556c12(); // _ZN9S17556C1210mf17556c12Ev
};
//SIG(-1 S17556C12) C1{ m Fc FC2{ m Fp Fi[2] FC3{ m}}}


void  S17556C12 ::mf17556c12(){}

static void Test_S17556C12()
{
  {
    init_simple_test("S17556C12");
    S17556C12 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17556C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C12)");
    check_field_offset(lv, s17556c12f0, 0, "S17556C12.s17556c12f0");
    check_field_offset(lv, s17556c12f1, ABISELECT(8,4), "S17556C12.s17556c12f1");
  }
}
static Arrange_To_Call_Me vS17556C12(Test_S17556C12, "S17556C12", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C15_nt  {
  void *s17556c15f0;
  int s17556c15f1[2];
  ::S7856C15 s17556c15f2;
  void  mf17556c15(); // _ZN12S17556C15_nt10mf17556c15Ev
};
//SIG(-1 S17556C15_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S17556C15_nt ::mf17556c15(){}

//skip512 S17556C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C2  {
  ::S17556C3_nt s17556c2f0;
  ::S17556C5_nt s17556c2f1;
  ::S17556C5_nt s17556c2f2;
  char s17556c2f3;
  int s17556c2f4[3];
  ::S17556C5_nt s17556c2f5;
  ::S17556C5_nt s17556c2f6;
  ::S17556C5_nt s17556c2f7;
  ::S17556C5_nt s17556c2f8;
  char s17556c2f9[2];
  int s17556c2f10[7];
  ::S17556C5_nt s17556c2f11[4];
  ::S17556C5_nt s17556c2f12;
  int s17556c2f13[3];
  ::S17556C5_nt s17556c2f14;
  ::S17556C5_nt s17556c2f15;
  ::S17556C5_nt s17556c2f16;
  ::S17556C5_nt s17556c2f17;
  ::S17556C5_nt s17556c2f18;
  ::S17556C5_nt s17556c2f19;
  ::S17556C7 s17556c2f20;
  ::S17556C8 s17556c2f21;
  ::S17556C9_nt s17556c2f22;
  ::S17556C10 s17556c2f23;
  ::S17556C11 s17556c2f24;
  ::S17556C12 s17556c2f25;
  ::S17556C15_nt s17556c2f26;
  void  mf17556c2(); // _ZN8S17556C29mf17556c2Ev
};
//SIG(-1 S17556C2) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}}


void  S17556C2 ::mf17556c2(){}

static void Test_S17556C2()
{
  {
    init_simple_test("S17556C2");
    S17556C2 lv;
    check2(sizeof(lv), ABISELECT(824,648), "sizeof(S17556C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C2)");
    check_field_offset(lv, s17556c2f0, 0, "S17556C2.s17556c2f0");
    check_field_offset(lv, s17556c2f1, 32, "S17556C2.s17556c2f1");
    check_field_offset(lv, s17556c2f2, ABISELECT(48,44), "S17556C2.s17556c2f2");
    check_field_offset(lv, s17556c2f3, ABISELECT(64,56), "S17556C2.s17556c2f3");
    check_field_offset(lv, s17556c2f4, ABISELECT(68,60), "S17556C2.s17556c2f4");
    check_field_offset(lv, s17556c2f5, ABISELECT(80,72), "S17556C2.s17556c2f5");
    check_field_offset(lv, s17556c2f6, ABISELECT(96,84), "S17556C2.s17556c2f6");
    check_field_offset(lv, s17556c2f7, ABISELECT(112,96), "S17556C2.s17556c2f7");
    check_field_offset(lv, s17556c2f8, ABISELECT(128,108), "S17556C2.s17556c2f8");
    check_field_offset(lv, s17556c2f9, ABISELECT(144,120), "S17556C2.s17556c2f9");
    check_field_offset(lv, s17556c2f10, ABISELECT(148,124), "S17556C2.s17556c2f10");
    check_field_offset(lv, s17556c2f11, ABISELECT(176,152), "S17556C2.s17556c2f11");
    check_field_offset(lv, s17556c2f12, ABISELECT(240,200), "S17556C2.s17556c2f12");
    check_field_offset(lv, s17556c2f13, ABISELECT(256,212), "S17556C2.s17556c2f13");
    check_field_offset(lv, s17556c2f14, ABISELECT(272,224), "S17556C2.s17556c2f14");
    check_field_offset(lv, s17556c2f15, ABISELECT(288,236), "S17556C2.s17556c2f15");
    check_field_offset(lv, s17556c2f16, ABISELECT(304,248), "S17556C2.s17556c2f16");
    check_field_offset(lv, s17556c2f17, ABISELECT(320,260), "S17556C2.s17556c2f17");
    check_field_offset(lv, s17556c2f18, ABISELECT(336,272), "S17556C2.s17556c2f18");
    check_field_offset(lv, s17556c2f19, ABISELECT(352,284), "S17556C2.s17556c2f19");
    check_field_offset(lv, s17556c2f20, ABISELECT(368,296), "S17556C2.s17556c2f20");
    check_field_offset(lv, s17556c2f21, ABISELECT(472,372), "S17556C2.s17556c2f21");
    check_field_offset(lv, s17556c2f22, ABISELECT(540,440), "S17556C2.s17556c2f22");
    check_field_offset(lv, s17556c2f23, ABISELECT(544,444), "S17556C2.s17556c2f23");
    check_field_offset(lv, s17556c2f24, ABISELECT(648,524), "S17556C2.s17556c2f24");
    check_field_offset(lv, s17556c2f25, ABISELECT(768,612), "S17556C2.s17556c2f25");
    check_field_offset(lv, s17556c2f26, ABISELECT(800,632), "S17556C2.s17556c2f26");
  }
}
static Arrange_To_Call_Me vS17556C2(Test_S17556C2, "S17556C2", ABISELECT(824,648));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C17  {
  int s17556c17f0[3];
  char s17556c17f1;
  ::S17556C5_nt s17556c17f2;
  ::S17556C5_nt s17556c17f3;
  ::S17556C5_nt s17556c17f4;
  ::S17556C5_nt s17556c17f5;
  ::S17556C5_nt s17556c17f6;
  char s17556c17f7;
  int s17556c17f8;
  ::S17556C15_nt s17556c17f9;
  void  mf17556c17(); // _ZN9S17556C1710mf17556c17Ev
};
//SIG(-1 S17556C17) C1{ m Fi[3] Fc FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 Fc Fi FC4{ m Fp Fi[2] FC5{ m}}}


void  S17556C17 ::mf17556c17(){}

static void Test_S17556C17()
{
  {
    init_simple_test("S17556C17");
    S17556C17 lv;
    check2(sizeof(lv), ABISELECT(128,100), "sizeof(S17556C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C17)");
    check_field_offset(lv, s17556c17f0, 0, "S17556C17.s17556c17f0");
    check_field_offset(lv, s17556c17f1, 12, "S17556C17.s17556c17f1");
    check_field_offset(lv, s17556c17f2, 16, "S17556C17.s17556c17f2");
    check_field_offset(lv, s17556c17f3, ABISELECT(32,28), "S17556C17.s17556c17f3");
    check_field_offset(lv, s17556c17f4, ABISELECT(48,40), "S17556C17.s17556c17f4");
    check_field_offset(lv, s17556c17f5, ABISELECT(64,52), "S17556C17.s17556c17f5");
    check_field_offset(lv, s17556c17f6, ABISELECT(80,64), "S17556C17.s17556c17f6");
    check_field_offset(lv, s17556c17f7, ABISELECT(96,76), "S17556C17.s17556c17f7");
    check_field_offset(lv, s17556c17f8, ABISELECT(100,80), "S17556C17.s17556c17f8");
    check_field_offset(lv, s17556c17f9, ABISELECT(104,84), "S17556C17.s17556c17f9");
  }
}
static Arrange_To_Call_Me vS17556C17(Test_S17556C17, "S17556C17", ABISELECT(128,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C28_nt  {
  void *s17556c28f0[2];
  void  mf17556c28(); // _ZN12S17556C28_nt10mf17556c28Ev
};
//SIG(-1 S17556C28_nt) C1{ m Fp[2]}


void  S17556C28_nt ::mf17556c28(){}

//skip512 S17556C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C22  {
  ::S1868C24_nt s17556c22f0;
  ::S1868C18_nt s17556c22f1;
  ::S17556C28_nt s17556c22f2;
  void  mf17556c22(); // _ZN9S17556C2210mf17556c22Ev
};
//SIG(-1 S17556C22) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ BC6{ m Fp}} FC7{ m Fp[2]}}


void  S17556C22 ::mf17556c22(){}

static void Test_S17556C22()
{
  {
    init_simple_test("S17556C22");
    S17556C22 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S17556C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C22)");
    check_field_offset(lv, s17556c22f0, 0, "S17556C22.s17556c22f0");
    check_field_offset(lv, s17556c22f1, ABISELECT(16,12), "S17556C22.s17556c22f1");
    check_field_offset(lv, s17556c22f2, ABISELECT(24,16), "S17556C22.s17556c22f2");
  }
}
static Arrange_To_Call_Me vS17556C22(Test_S17556C22, "S17556C22", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17556C1  {
  void *s17556c1f0;
  ::S17556C2 s17556c1f1;
  ::S17556C17 s17556c1f2;
  ::S17556C17 s17556c1f3;
  ::S17556C22 s17556c1f4;
  void  mf17556c1(); // _ZN8S17556C19mf17556c1Ev
};
//SIG(1 S17556C1) C1{ m Fp FC2{ m FC3{ m FC4{ FL[4]}} FC5{ m Fp Fi FC6{ m}} FC5 Fc Fi[3] FC5 FC5 FC5 FC5 Fc[2] Fi[7] FC5[4] FC5 Fi[3] FC5 FC5 FC5 FC5 FC5 FC5 FC7{ m Fc FC5 FC5 FC5 FC5 Fi FC5 Fc Fi} FC8{ m Fc Fi[16]} FC9{ m Fc[2]} FC10{ m Fc FC5 FC5 Fi[5] Fc Fi FC5 FC5} FC11{ m Fc Fi[2] FC5 FC5 FC5 FC5 FC5 FC5 Fc} FC12{ m Fc FC13{ m Fp Fi[2] FC6}} FC14{ m Fp Fi[2] FC15{ m}}} FC16{ m Fi[3] Fc FC5 FC5 FC5 FC5 FC5 Fc Fi FC14} FC16 FC17{ m FC18{ m Fp Fi FC15 FC19{ m}} FC20{ BC21{ m Fp}} FC22{ m Fp[2]}}}


void  S17556C1 ::mf17556c1(){}

static void Test_S17556C1()
{
  {
    init_simple_test("S17556C1");
    S17556C1 lv;
    check2(sizeof(lv), ABISELECT(1128,876), "sizeof(S17556C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17556C1)");
    check_field_offset(lv, s17556c1f0, 0, "S17556C1.s17556c1f0");
    check_field_offset(lv, s17556c1f1, ABISELECT(8,4), "S17556C1.s17556c1f1");
    check_field_offset(lv, s17556c1f2, ABISELECT(832,652), "S17556C1.s17556c1f2");
    check_field_offset(lv, s17556c1f3, ABISELECT(960,752), "S17556C1.s17556c1f3");
    check_field_offset(lv, s17556c1f4, ABISELECT(1088,852), "S17556C1.s17556c1f4");
  }
}
static Arrange_To_Call_Me vS17556C1(Test_S17556C1, "S17556C1", ABISELECT(1128,876));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17555C4_nt  {
  long s17555c4f0[4];
};
//SIG(-1 S17555C4_nt) C1{ Fl[4]}



//skip512 S17555C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17555C3_nt  {
  ::S17555C4_nt s17555c3f0;
  void  mf17555c3(); // _ZN11S17555C3_nt9mf17555c3Ev
};
//SIG(-1 S17555C3_nt) C1{ m FC2{ Fl[4]}}


void  S17555C3_nt ::mf17555c3(){}

//skip512 S17555C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17555C2  {
  ::S17555C3_nt s17555c2f0;
  ::S17556C5_nt s17555c2f1;
  ::S17556C5_nt s17555c2f2;
  char s17555c2f3;
  int s17555c2f4[3];
  ::S17556C5_nt s17555c2f5;
  ::S17556C5_nt s17555c2f6;
  ::S17556C5_nt s17555c2f7;
  ::S17556C5_nt s17555c2f8;
  char s17555c2f9[2];
  int s17555c2f10[7];
  ::S17556C5_nt s17555c2f11[4];
  ::S17556C5_nt s17555c2f12;
  int s17555c2f13[3];
  ::S17556C5_nt s17555c2f14;
  ::S17556C5_nt s17555c2f15;
  ::S17556C5_nt s17555c2f16;
  ::S17556C5_nt s17555c2f17;
  ::S17556C5_nt s17555c2f18;
  ::S17556C5_nt s17555c2f19;
  ::S17556C7 s17555c2f20;
  ::S17556C8 s17555c2f21;
  ::S17556C9_nt s17555c2f22;
  ::S17556C10 s17555c2f23;
  ::S17556C11 s17555c2f24;
  ::S17556C12 s17555c2f25;
  ::S17556C15_nt s17555c2f26;
  void  mf17555c2(); // _ZN8S17555C29mf17555c2Ev
};
//SIG(-1 S17555C2) C1{ m FC2{ m FC3{ Fl[4]}} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}}


void  S17555C2 ::mf17555c2(){}

static void Test_S17555C2()
{
  {
    init_simple_test("S17555C2");
    S17555C2 lv;
    check2(sizeof(lv), ABISELECT(824,632), "sizeof(S17555C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17555C2)");
    check_field_offset(lv, s17555c2f0, 0, "S17555C2.s17555c2f0");
    check_field_offset(lv, s17555c2f1, ABISELECT(32,16), "S17555C2.s17555c2f1");
    check_field_offset(lv, s17555c2f2, ABISELECT(48,28), "S17555C2.s17555c2f2");
    check_field_offset(lv, s17555c2f3, ABISELECT(64,40), "S17555C2.s17555c2f3");
    check_field_offset(lv, s17555c2f4, ABISELECT(68,44), "S17555C2.s17555c2f4");
    check_field_offset(lv, s17555c2f5, ABISELECT(80,56), "S17555C2.s17555c2f5");
    check_field_offset(lv, s17555c2f6, ABISELECT(96,68), "S17555C2.s17555c2f6");
    check_field_offset(lv, s17555c2f7, ABISELECT(112,80), "S17555C2.s17555c2f7");
    check_field_offset(lv, s17555c2f8, ABISELECT(128,92), "S17555C2.s17555c2f8");
    check_field_offset(lv, s17555c2f9, ABISELECT(144,104), "S17555C2.s17555c2f9");
    check_field_offset(lv, s17555c2f10, ABISELECT(148,108), "S17555C2.s17555c2f10");
    check_field_offset(lv, s17555c2f11, ABISELECT(176,136), "S17555C2.s17555c2f11");
    check_field_offset(lv, s17555c2f12, ABISELECT(240,184), "S17555C2.s17555c2f12");
    check_field_offset(lv, s17555c2f13, ABISELECT(256,196), "S17555C2.s17555c2f13");
    check_field_offset(lv, s17555c2f14, ABISELECT(272,208), "S17555C2.s17555c2f14");
    check_field_offset(lv, s17555c2f15, ABISELECT(288,220), "S17555C2.s17555c2f15");
    check_field_offset(lv, s17555c2f16, ABISELECT(304,232), "S17555C2.s17555c2f16");
    check_field_offset(lv, s17555c2f17, ABISELECT(320,244), "S17555C2.s17555c2f17");
    check_field_offset(lv, s17555c2f18, ABISELECT(336,256), "S17555C2.s17555c2f18");
    check_field_offset(lv, s17555c2f19, ABISELECT(352,268), "S17555C2.s17555c2f19");
    check_field_offset(lv, s17555c2f20, ABISELECT(368,280), "S17555C2.s17555c2f20");
    check_field_offset(lv, s17555c2f21, ABISELECT(472,356), "S17555C2.s17555c2f21");
    check_field_offset(lv, s17555c2f22, ABISELECT(540,424), "S17555C2.s17555c2f22");
    check_field_offset(lv, s17555c2f23, ABISELECT(544,428), "S17555C2.s17555c2f23");
    check_field_offset(lv, s17555c2f24, ABISELECT(648,508), "S17555C2.s17555c2f24");
    check_field_offset(lv, s17555c2f25, ABISELECT(768,596), "S17555C2.s17555c2f25");
    check_field_offset(lv, s17555c2f26, ABISELECT(800,616), "S17555C2.s17555c2f26");
  }
}
static Arrange_To_Call_Me vS17555C2(Test_S17555C2, "S17555C2", ABISELECT(824,632));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17555C1  {
  void *s17555c1f0;
  ::S17555C2 s17555c1f1;
  ::S17556C17 s17555c1f2;
  ::S17556C17 s17555c1f3;
  ::S17556C22 s17555c1f4;
  void  mf17555c1(); // _ZN8S17555C19mf17555c1Ev
};
//SIG(1 S17555C1) C1{ m Fp FC2{ m FC3{ m FC4{ Fl[4]}} FC5{ m Fp Fi FC6{ m}} FC5 Fc Fi[3] FC5 FC5 FC5 FC5 Fc[2] Fi[7] FC5[4] FC5 Fi[3] FC5 FC5 FC5 FC5 FC5 FC5 FC7{ m Fc FC5 FC5 FC5 FC5 Fi FC5 Fc Fi} FC8{ m Fc Fi[16]} FC9{ m Fc[2]} FC10{ m Fc FC5 FC5 Fi[5] Fc Fi FC5 FC5} FC11{ m Fc Fi[2] FC5 FC5 FC5 FC5 FC5 FC5 Fc} FC12{ m Fc FC13{ m Fp Fi[2] FC6}} FC14{ m Fp Fi[2] FC15{ m}}} FC16{ m Fi[3] Fc FC5 FC5 FC5 FC5 FC5 Fc Fi FC14} FC16 FC17{ m FC18{ m Fp Fi FC15 FC19{ m}} FC20{ BC21{ m Fp}} FC22{ m Fp[2]}}}


void  S17555C1 ::mf17555c1(){}

static void Test_S17555C1()
{
  {
    init_simple_test("S17555C1");
    S17555C1 lv;
    check2(sizeof(lv), ABISELECT(1128,860), "sizeof(S17555C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17555C1)");
    check_field_offset(lv, s17555c1f0, 0, "S17555C1.s17555c1f0");
    check_field_offset(lv, s17555c1f1, ABISELECT(8,4), "S17555C1.s17555c1f1");
    check_field_offset(lv, s17555c1f2, ABISELECT(832,636), "S17555C1.s17555c1f2");
    check_field_offset(lv, s17555c1f3, ABISELECT(960,736), "S17555C1.s17555c1f3");
    check_field_offset(lv, s17555c1f4, ABISELECT(1088,836), "S17555C1.s17555c1f4");
  }
}
static Arrange_To_Call_Me vS17555C1(Test_S17555C1, "S17555C1", ABISELECT(1128,860));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17566C3_nt  {
  __tsi64 s17566c3f0[4];
  void  mf17566c3(); // _ZN11S17566C3_nt9mf17566c3Ev
};
//SIG(-1 S17566C3_nt) C1{ m FL[4]}


void  S17566C3_nt ::mf17566c3(){}

//skip512 S17566C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17566C2  {
  ::S17566C3_nt s17566c2f0;
  ::S17556C5_nt s17566c2f1;
  ::S17556C5_nt s17566c2f2;
  char s17566c2f3;
  int s17566c2f4[3];
  ::S17556C5_nt s17566c2f5;
  ::S17556C5_nt s17566c2f6;
  ::S17556C5_nt s17566c2f7;
  ::S17556C5_nt s17566c2f8;
  char s17566c2f9[2];
  int s17566c2f10[7];
  ::S17556C5_nt s17566c2f11[4];
  ::S17556C5_nt s17566c2f12;
  int s17566c2f13[3];
  ::S17556C5_nt s17566c2f14;
  ::S17556C5_nt s17566c2f15;
  ::S17556C5_nt s17566c2f16;
  ::S17556C5_nt s17566c2f17;
  ::S17556C5_nt s17566c2f18;
  ::S17556C5_nt s17566c2f19;
  ::S17556C7 s17566c2f20;
  ::S17556C8 s17566c2f21;
  ::S17556C9_nt s17566c2f22;
  ::S17556C10 s17566c2f23;
  ::S17556C11 s17566c2f24;
  ::S17556C12 s17566c2f25;
  ::S17556C15_nt s17566c2f26;
  void  mf17566c2(); // _ZN8S17566C29mf17566c2Ev
};
//SIG(-1 S17566C2) C1{ m FC2{ m FL[4]} FC3{ m Fp Fi FC4{ m}} FC3 Fc Fi[3] FC3 FC3 FC3 FC3 Fc[2] Fi[7] FC3[4] FC3 Fi[3] FC3 FC3 FC3 FC3 FC3 FC3 FC5{ m Fc FC3 FC3 FC3 FC3 Fi FC3 Fc Fi} FC6{ m Fc Fi[16]} FC7{ m Fc[2]} FC8{ m Fc FC3 FC3 Fi[5] Fc Fi FC3 FC3} FC9{ m Fc Fi[2] FC3 FC3 FC3 FC3 FC3 FC3 Fc} FC10{ m Fc FC11{ m Fp Fi[2] FC4}} FC12{ m Fp Fi[2] FC13{ m}}}


void  S17566C2 ::mf17566c2(){}

static void Test_S17566C2()
{
  {
    init_simple_test("S17566C2");
    S17566C2 lv;
    check2(sizeof(lv), ABISELECT(824,648), "sizeof(S17566C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17566C2)");
    check_field_offset(lv, s17566c2f0, 0, "S17566C2.s17566c2f0");
    check_field_offset(lv, s17566c2f1, 32, "S17566C2.s17566c2f1");
    check_field_offset(lv, s17566c2f2, ABISELECT(48,44), "S17566C2.s17566c2f2");
    check_field_offset(lv, s17566c2f3, ABISELECT(64,56), "S17566C2.s17566c2f3");
    check_field_offset(lv, s17566c2f4, ABISELECT(68,60), "S17566C2.s17566c2f4");
    check_field_offset(lv, s17566c2f5, ABISELECT(80,72), "S17566C2.s17566c2f5");
    check_field_offset(lv, s17566c2f6, ABISELECT(96,84), "S17566C2.s17566c2f6");
    check_field_offset(lv, s17566c2f7, ABISELECT(112,96), "S17566C2.s17566c2f7");
    check_field_offset(lv, s17566c2f8, ABISELECT(128,108), "S17566C2.s17566c2f8");
    check_field_offset(lv, s17566c2f9, ABISELECT(144,120), "S17566C2.s17566c2f9");
    check_field_offset(lv, s17566c2f10, ABISELECT(148,124), "S17566C2.s17566c2f10");
    check_field_offset(lv, s17566c2f11, ABISELECT(176,152), "S17566C2.s17566c2f11");
    check_field_offset(lv, s17566c2f12, ABISELECT(240,200), "S17566C2.s17566c2f12");
    check_field_offset(lv, s17566c2f13, ABISELECT(256,212), "S17566C2.s17566c2f13");
    check_field_offset(lv, s17566c2f14, ABISELECT(272,224), "S17566C2.s17566c2f14");
    check_field_offset(lv, s17566c2f15, ABISELECT(288,236), "S17566C2.s17566c2f15");
    check_field_offset(lv, s17566c2f16, ABISELECT(304,248), "S17566C2.s17566c2f16");
    check_field_offset(lv, s17566c2f17, ABISELECT(320,260), "S17566C2.s17566c2f17");
    check_field_offset(lv, s17566c2f18, ABISELECT(336,272), "S17566C2.s17566c2f18");
    check_field_offset(lv, s17566c2f19, ABISELECT(352,284), "S17566C2.s17566c2f19");
    check_field_offset(lv, s17566c2f20, ABISELECT(368,296), "S17566C2.s17566c2f20");
    check_field_offset(lv, s17566c2f21, ABISELECT(472,372), "S17566C2.s17566c2f21");
    check_field_offset(lv, s17566c2f22, ABISELECT(540,440), "S17566C2.s17566c2f22");
    check_field_offset(lv, s17566c2f23, ABISELECT(544,444), "S17566C2.s17566c2f23");
    check_field_offset(lv, s17566c2f24, ABISELECT(648,524), "S17566C2.s17566c2f24");
    check_field_offset(lv, s17566c2f25, ABISELECT(768,612), "S17566C2.s17566c2f25");
    check_field_offset(lv, s17566c2f26, ABISELECT(800,632), "S17566C2.s17566c2f26");
  }
}
static Arrange_To_Call_Me vS17566C2(Test_S17566C2, "S17566C2", ABISELECT(824,648));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17566C1  {
  void *s17566c1f0;
  ::S17566C2 s17566c1f1;
  ::S17556C17 s17566c1f2;
  ::S17556C17 s17566c1f3;
  ::S17556C22 s17566c1f4;
  void  mf17566c1(); // _ZN8S17566C19mf17566c1Ev
};
//SIG(1 S17566C1) C1{ m Fp FC2{ m FC3{ m FL[4]} FC4{ m Fp Fi FC5{ m}} FC4 Fc Fi[3] FC4 FC4 FC4 FC4 Fc[2] Fi[7] FC4[4] FC4 Fi[3] FC4 FC4 FC4 FC4 FC4 FC4 FC6{ m Fc FC4 FC4 FC4 FC4 Fi FC4 Fc Fi} FC7{ m Fc Fi[16]} FC8{ m Fc[2]} FC9{ m Fc FC4 FC4 Fi[5] Fc Fi FC4 FC4} FC10{ m Fc Fi[2] FC4 FC4 FC4 FC4 FC4 FC4 Fc} FC11{ m Fc FC12{ m Fp Fi[2] FC5}} FC13{ m Fp Fi[2] FC14{ m}}} FC15{ m Fi[3] Fc FC4 FC4 FC4 FC4 FC4 Fc Fi FC13} FC15 FC16{ m FC17{ m Fp Fi FC14 FC18{ m}} FC19{ BC20{ m Fp}} FC21{ m Fp[2]}}}


void  S17566C1 ::mf17566c1(){}

static void Test_S17566C1()
{
  {
    init_simple_test("S17566C1");
    S17566C1 lv;
    check2(sizeof(lv), ABISELECT(1128,876), "sizeof(S17566C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17566C1)");
    check_field_offset(lv, s17566c1f0, 0, "S17566C1.s17566c1f0");
    check_field_offset(lv, s17566c1f1, ABISELECT(8,4), "S17566C1.s17566c1f1");
    check_field_offset(lv, s17566c1f2, ABISELECT(832,652), "S17566C1.s17566c1f2");
    check_field_offset(lv, s17566c1f3, ABISELECT(960,752), "S17566C1.s17566c1f3");
    check_field_offset(lv, s17566c1f4, ABISELECT(1088,852), "S17566C1.s17566c1f4");
  }
}
static Arrange_To_Call_Me vS17566C1(Test_S17566C1, "S17566C1", ABISELECT(1128,876));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C3  {
  virtual void  v9(); // _ZN7S3451C32v9Ev
  virtual void  v10(); // _ZN7S3451C33v10Ev
  ~S3451C3(); // tgen
  S3451C3(); // tgen
};
//SIG(-1 S3451C3) C1{ v1 v2}


void  S3451C3 ::v9(){vfunc_called(this, "_ZN7S3451C32v9Ev");}
void  S3451C3 ::v10(){vfunc_called(this, "_ZN7S3451C33v10Ev");}
S3451C3 ::~S3451C3(){ note_dtor("S3451C3", this);} // tgen
S3451C3 ::S3451C3(){ note_ctor("S3451C3", this);} // tgen

static void Test_S3451C3()
{
  extern Class_Descriptor cd_S3451C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3451C3, buf);
    S3451C3 *dp, &lv = *(dp=new (buf) S3451C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3451C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C3)");
    test_class_info(&lv, &cd_S3451C3);
    dp->~S3451C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C3(Test_S3451C3, "S3451C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3451C3C1Ev();
extern void _ZN7S3451C3D1Ev();
Name_Map name_map_S3451C3[] = {
  NSPAIR(_ZN7S3451C3C1Ev),
  NSPAIR(_ZN7S3451C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C3[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY vtc_S3451C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C3[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
Class_Descriptor cd_S3451C3 = {  "S3451C3", // class name
  0,0,//no base classes
  &(vtc_S3451C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3451C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C3),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  S3451C6  {
  virtual void  v11(); // _ZN7S3451C63v11Ev
  virtual void  v12(); // _ZN7S3451C63v12Ev
  ~S3451C6(); // tgen
  S3451C6(); // tgen
};
//SIG(-1 S3451C6) C1{ v1 v2}


void  S3451C6 ::v11(){vfunc_called(this, "_ZN7S3451C63v11Ev");}
void  S3451C6 ::v12(){vfunc_called(this, "_ZN7S3451C63v12Ev");}
S3451C6 ::~S3451C6(){ note_dtor("S3451C6", this);} // tgen
S3451C6 ::S3451C6(){ note_ctor("S3451C6", this);} // tgen

static void Test_S3451C6()
{
  extern Class_Descriptor cd_S3451C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3451C6, buf);
    S3451C6 *dp, &lv = *(dp=new (buf) S3451C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3451C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C6)");
    test_class_info(&lv, &cd_S3451C6);
    dp->~S3451C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C6(Test_S3451C6, "S3451C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3451C6C1Ev();
extern void _ZN7S3451C6D1Ev();
Name_Map name_map_S3451C6[] = {
  NSPAIR(_ZN7S3451C6C1Ev),
  NSPAIR(_ZN7S3451C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C6[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
static  VTBL_ENTRY vtc_S3451C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C6[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
};
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
Class_Descriptor cd_S3451C6 = {  "S3451C6", // class name
  0,0,//no base classes
  &(vtc_S3451C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3451C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C6),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  S3451C7  : S3451C3 {
  int s3451c7f0[5];
  void *s3451c7f1;
  __tsi64 s3451c7f2[4];
  virtual void  v13(); // _ZN7S3451C73v13Ev
  virtual void  v14(); // _ZN7S3451C73v14Ev
  virtual void  v15(); // _ZN7S3451C73v15Ev
  virtual void  v16(); // _ZN7S3451C73v16Ev
  ~S3451C7(); // tgen
  S3451C7(); // tgen
};
//SIG(-1 S3451C7) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S3451C7 ::v13(){vfunc_called(this, "_ZN7S3451C73v13Ev");}
void  S3451C7 ::v14(){vfunc_called(this, "_ZN7S3451C73v14Ev");}
void  S3451C7 ::v15(){vfunc_called(this, "_ZN7S3451C73v15Ev");}
void  S3451C7 ::v16(){vfunc_called(this, "_ZN7S3451C73v16Ev");}
S3451C7 ::~S3451C7(){ note_dtor("S3451C7", this);} // tgen
S3451C7 ::S3451C7(){ note_ctor("S3451C7", this);} // tgen

static void Test_S3451C7()
{
  extern Class_Descriptor cd_S3451C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S3451C7, buf);
    S3451C7 *dp, &lv = *(dp=new (buf) S3451C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S3451C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C7)");
    check_base_class_offset(lv, (S3451C3*), 0, "S3451C7");
    check_field_offset(lv, s3451c7f0, ABISELECT(8,4), "S3451C7.s3451c7f0");
    check_field_offset(lv, s3451c7f1, ABISELECT(32,24), "S3451C7.s3451c7f1");
    check_field_offset(lv, s3451c7f2, ABISELECT(40,28), "S3451C7.s3451c7f2");
    test_class_info(&lv, &cd_S3451C7);
    dp->~S3451C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C7(Test_S3451C7, "S3451C7", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S3451C7C1Ev();
extern void _ZN7S3451C7D1Ev();
Name_Map name_map_S3451C7[] = {
  NSPAIR(_ZN7S3451C7C1Ev),
  NSPAIR(_ZN7S3451C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3451C7[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C7[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
Class_Descriptor cd_S3451C7 = {  "S3451C7", // class name
  bases_S3451C7, 1,
  &(vtc_S3451C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S3451C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3451C7),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  S3451C4  : virtual S7856C24 , virtual S3451C3 , S3451C6 , virtual S3451C7 {
  virtual void  v17(); // _ZN7S3451C43v17Ev
  ~S3451C4(); // tgen
  S3451C4(); // tgen
};
//SIG(-1 S3451C4) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S3451C4 ::v17(){vfunc_called(this, "_ZN7S3451C43v17Ev");}
S3451C4 ::~S3451C4(){ note_dtor("S3451C4", this);} // tgen
S3451C4 ::S3451C4(){ note_ctor("S3451C4", this);} // tgen

static void Test_S3451C4()
{
  extern Class_Descriptor cd_S3451C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S3451C4, buf);
    S3451C4 *dp, &lv = *(dp=new (buf) S3451C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S3451C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C4)");
    check_base_class_offset(lv, (S7856C24*), 0, "S3451C4");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(8,4), "S3451C4");
    check_base_class_offset(lv, (S3451C6*), 0, "S3451C4");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(16,8), "S3451C4");
    check_base_class_offset(lv, (S3451C7*), ABISELECT(16,8), "S3451C4");
    test_class_info(&lv, &cd_S3451C4);
    dp->~S3451C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C4(Test_S3451C4, "S3451C4", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN7S3451C4C1Ev();
extern void _ZN7S3451C4D1Ev();
Name_Map name_map_S3451C4[] = {
  NSPAIR(_ZN7S3451C4C1Ev),
  NSPAIR(_ZN7S3451C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
static Base_Class bases_S3451C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3451C3,    ABISELECT(8,4), //bcp->offset
    8, //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_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(16,8), //bcp->offset
    14, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C4[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C4[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C4[];
static  VTT_ENTRY vtt_S3451C4[] = {
  {&(_ZTV7S3451C4[5]),  5,28},
  {&(_ZTV7S3451C4[12]),  12,28},
  {&(_ZTV7S3451C4[22]),  22,28},
};
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
Class_Descriptor cd_S3451C4 = {  "S3451C4", // class name
  bases_S3451C4, 5,
  &(vtc_S3451C4[0]), // expected_vtbl_contents
  &(vtt_S3451C4[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI7S3451C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3451C4),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C4),3, //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  S3451C8  {
  void *s3451c8f0;
  long double s3451c8f1[7];
  virtual void  v18(); // _ZN7S3451C83v18Ev
  ~S3451C8(); // tgen
  S3451C8(); // tgen
};
//SIG(-1 S3451C8) C1{ v1 Fp FD[7]}


void  S3451C8 ::v18(){vfunc_called(this, "_ZN7S3451C83v18Ev");}
S3451C8 ::~S3451C8(){ note_dtor("S3451C8", this);} // tgen
S3451C8 ::S3451C8(){ note_ctor("S3451C8", this);} // tgen

static void Test_S3451C8()
{
  extern Class_Descriptor cd_S3451C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S3451C8, buf);
    S3451C8 *dp, &lv = *(dp=new (buf) S3451C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S3451C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C8)");
    check_field_offset(lv, s3451c8f0, ABISELECT(8,4), "S3451C8.s3451c8f0");
    check_field_offset(lv, s3451c8f1, ABISELECT(16,8), "S3451C8.s3451c8f1");
    test_class_info(&lv, &cd_S3451C8);
    dp->~S3451C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C8(Test_S3451C8, "S3451C8", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN7S3451C8C1Ev();
extern void _ZN7S3451C8D1Ev();
Name_Map name_map_S3451C8[] = {
  NSPAIR(_ZN7S3451C8C1Ev),
  NSPAIR(_ZN7S3451C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3451C8[];
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY vtc_S3451C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C8[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
Class_Descriptor cd_S3451C8 = {  "S3451C8", // class name
  0,0,//no base classes
  &(vtc_S3451C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI7S3451C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3451C8),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  S3451C10  {
  ::S7856C24 s3451c10f0;
  int s3451c10f1[4];
  virtual void  v19(); // _ZN8S3451C103v19Ev
  ~S3451C10(); // tgen
  S3451C10(); // tgen
};
//SIG(-1 S3451C10) C1{ v1 FC2{ m} Fi[4]}


void  S3451C10 ::v19(){vfunc_called(this, "_ZN8S3451C103v19Ev");}
S3451C10 ::~S3451C10(){ note_dtor("S3451C10", this);} // tgen
S3451C10 ::S3451C10(){ note_ctor("S3451C10", this);} // tgen

static void Test_S3451C10()
{
  extern Class_Descriptor cd_S3451C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3451C10, buf);
    S3451C10 *dp, &lv = *(dp=new (buf) S3451C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3451C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C10)");
    check_field_offset(lv, s3451c10f0, ABISELECT(8,4), "S3451C10.s3451c10f0");
    check_field_offset(lv, s3451c10f1, ABISELECT(12,8), "S3451C10.s3451c10f1");
    test_class_info(&lv, &cd_S3451C10);
    dp->~S3451C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C10(Test_S3451C10, "S3451C10", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S3451C10C1Ev();
extern void _ZN8S3451C10D1Ev();
Name_Map name_map_S3451C10[] = {
  NSPAIR(_ZN8S3451C10C1Ev),
  NSPAIR(_ZN8S3451C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3451C10[];
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY vtc_S3451C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C10[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
Class_Descriptor cd_S3451C10 = {  "S3451C10", // class name
  0,0,//no base classes
  &(vtc_S3451C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S3451C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3451C10),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  S3451C11  : S3451C6 , virtual S3451C4 , S7856C24 , S3451C7 , S3451C3 {
  virtual void  v20(); // _ZN8S3451C113v20Ev
  ~S3451C11(); // tgen
  S3451C11(); // tgen
};
//SIG(-1 S3451C11) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S3451C11 ::v20(){vfunc_called(this, "_ZN8S3451C113v20Ev");}
S3451C11 ::~S3451C11(){ note_dtor("S3451C11", this);} // tgen
S3451C11 ::S3451C11(){ note_ctor("S3451C11", this);} // tgen

static void Test_S3451C11()
{
  extern Class_Descriptor cd_S3451C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S3451C11, buf);
    S3451C11 *dp, &lv = *(dp=new (buf) S3451C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S3451C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C11)");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*), 0, "S3451C11");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), ABISELECT(96,72), "S3451C11");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(96,72), "S3451C11");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(88,68), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(104,76), "S3451C11");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(104,76), "S3451C11");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(88,68), "S3451C11");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(8,4), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*), ABISELECT(8,4), "S3451C11");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(80,64), "S3451C11");
    test_class_info(&lv, &cd_S3451C11);
    dp->~S3451C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C11(Test_S3451C11, "S3451C11", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN8S3451C11C1Ev();
extern void _ZN8S3451C11D1Ev();
Name_Map name_map_S3451C11[] = {
  NSPAIR(_ZN8S3451C11C1Ev),
  NSPAIR(_ZN8S3451C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(96,72), //bcp->offset
    32, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(104,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(104,76), //bcp->offset
    38, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3451C3,    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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3451C7,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(80,64), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C11[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C11[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV8S3451C11[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C11[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C11[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C11[] = {
  {&(_ZTV8S3451C11[6]),  6,52},
  {&(_ZTV8S3451C11[29]),  29,52},
  {&(_ZTV8S3451C11[36]),  36,52},
  {&(_ZTV8S3451C11[46]),  46,52},
  {&(_tg__ZTV7S3451C4__8S3451C11[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C11[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C11[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
Class_Descriptor cd_S3451C11 = {  "S3451C11", // class name
  bases_S3451C11, 11,
  &(vtc_S3451C11[0]), // expected_vtbl_contents
  &(vtt_S3451C11[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI8S3451C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3451C11),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C11),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C9  : virtual S3451C10 , S3451C6 , virtual S3451C3 , S3451C11 , S3451C8 {
  int s3451c9f0;
  virtual void  v21(); // _ZN7S3451C93v21Ev
  virtual void  v22(); // _ZN7S3451C93v22Ev
  virtual void  v23(); // _ZN7S3451C93v23Ev
  ~S3451C9(); // tgen
  S3451C9(); // tgen
};
//SIG(-1 S3451C9) C1{ VBC2{ v4 FC3{ m} Fi[4]} BC4{ v5 v6} VBC5{ v7 v8} BC6{ BC4 VBC7{ VBC3 VBC5 BC4 VBC8{ BC5 v9 v10 v11 v12 Fi[5] Fp FL[4]} v13} BC3 BC8 BC5 v14} BC9{ v15 Fp FD[7]} v1 v2 v3 Fi}


void  S3451C9 ::v21(){vfunc_called(this, "_ZN7S3451C93v21Ev");}
void  S3451C9 ::v22(){vfunc_called(this, "_ZN7S3451C93v22Ev");}
void  S3451C9 ::v23(){vfunc_called(this, "_ZN7S3451C93v23Ev");}
S3451C9 ::~S3451C9(){ note_dtor("S3451C9", this);} // tgen
S3451C9 ::S3451C9(){ note_ctor("S3451C9", this);} // tgen

static void Test_S3451C9()
{
  extern Class_Descriptor cd_S3451C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,66)];
    init_test(&cd_S3451C9, buf);
    S3451C9 *dp, &lv = *(dp=new (buf) S3451C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,260), "sizeof(S3451C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C9)");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(232,168), "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*), 0, "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(264,192), "S3451C9");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(264,192), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*), ABISELECT(8,4), "S3451C9");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C9");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(272,196), "S3451C9");
    /*is_ambiguous_... S3451C9::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(280,200), "S3451C9");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(280,200), "S3451C9");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*), ABISELECT(272,196), "S3451C9");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*), ABISELECT(8,4), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*), ABISELECT(16,8), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*), ABISELECT(16,8), "S3451C9");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*), ABISELECT(88,68), "S3451C9");
    check_base_class_offset(lv, (S3451C11*), ABISELECT(8,4), "S3451C9");
    check_base_class_offset(lv, (S3451C8*), ABISELECT(96,72), "S3451C9");
    check_field_offset(lv, s3451c9f0, ABISELECT(224,164), "S3451C9.s3451c9f0");
    test_class_info(&lv, &cd_S3451C9);
    dp->~S3451C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C9(Test_S3451C9, "S3451C9", ABISELECT(352,260));

#else // __cplusplus

extern void _ZN7S3451C9C1Ev();
extern void _ZN7S3451C9D1Ev();
Name_Map name_map_S3451C9[] = {
  NSPAIR(_ZN7S3451C9C1Ev),
  NSPAIR(_ZN7S3451C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
static Base_Class bases_S3451C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C10,    ABISELECT(232,168), //bcp->offset
    36, //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_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C3,    ABISELECT(264,192), //bcp->offset
    40, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C6,    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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C6,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(280,200), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //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
    8, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(272,196), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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_S3451C3,    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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(16,8), //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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(88,68), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C8,    ABISELECT(96,72), //bcp->offset
    33, //bcp->virtual_function_table_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},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C9[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C9[] = {
  ABISELECT(280,200),
  0,
  ABISELECT(272,196),
  ABISELECT(264,192),
  ABISELECT(232,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C9[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C9[] = {
  ABISELECT(272,196),
  ABISELECT(256,188),
  ABISELECT(-8,-4),
  ABISELECT(264,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C11__7S3451C9[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C11__7S3451C9[] = {
  0,
  0,
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C11__7S3451C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C9[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-272,-196),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C9[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C9[] = {
  {&(_ZTV7S3451C9[7]),  7,71},
  {&(_tg__ZTV8S3451C11__7S3451C9[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C11__7S3451C9[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C11__7S3451C9[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C11__7S3451C9[8]),  8,14},
  {&(_ZTV7S3451C9[39]),  39,71},
  {&(_ZTV7S3451C9[44]),  44,71},
  {&(_ZTV7S3451C9[18]),  18,71},
  {&(_ZTV7S3451C9[54]),  54,71},
  {&(_ZTV7S3451C9[65]),  65,71},
  {&(_tg__ZTV7S3451C4__7S3451C9[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C9[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C9[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
Class_Descriptor cd_S3451C9 = {  "S3451C9", // class name
  bases_S3451C9, 15,
  &(vtc_S3451C9[0]), // expected_vtbl_contents
  &(vtt_S3451C9[0]), // expected_vtt_contents
  ABISELECT(352,260), // object size
  NSPAIRA(_ZTI7S3451C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C9),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C9),13, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C12  {
  ::S19993C22_nt s3451c12f0;
  virtual void  v24(); // _ZN8S3451C123v24Ev
  virtual void  v25(); // _ZN8S3451C123v25Ev
  virtual void  v26(); // _ZN8S3451C123v26Ev
  virtual void  v27(); // _ZN8S3451C123v27Ev
  virtual void  v28(); // _ZN8S3451C123v28Ev
  virtual void  v29(); // _ZN8S3451C123v29Ev
  ~S3451C12(); // tgen
  S3451C12(); // tgen
};
//SIG(-1 S3451C12) C1{ v1 v2 v3 v4 v5 v6 FU2{ m Fi}}


void  S3451C12 ::v24(){vfunc_called(this, "_ZN8S3451C123v24Ev");}
void  S3451C12 ::v25(){vfunc_called(this, "_ZN8S3451C123v25Ev");}
void  S3451C12 ::v26(){vfunc_called(this, "_ZN8S3451C123v26Ev");}
void  S3451C12 ::v27(){vfunc_called(this, "_ZN8S3451C123v27Ev");}
void  S3451C12 ::v28(){vfunc_called(this, "_ZN8S3451C123v28Ev");}
void  S3451C12 ::v29(){vfunc_called(this, "_ZN8S3451C123v29Ev");}
S3451C12 ::~S3451C12(){ note_dtor("S3451C12", this);} // tgen
S3451C12 ::S3451C12(){ note_ctor("S3451C12", this);} // tgen

static void Test_S3451C12()
{
  extern Class_Descriptor cd_S3451C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3451C12, buf);
    S3451C12 *dp, &lv = *(dp=new (buf) S3451C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3451C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3451C12)");
    check_field_offset(lv, s3451c12f0, ABISELECT(8,4), "S3451C12.s3451c12f0");
    test_class_info(&lv, &cd_S3451C12);
    dp->~S3451C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C12(Test_S3451C12, "S3451C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S3451C12C1Ev();
extern void _ZN8S3451C12D1Ev();
Name_Map name_map_S3451C12[] = {
  NSPAIR(_ZN8S3451C12C1Ev),
  NSPAIR(_ZN8S3451C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3451C12[];
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C12[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
Class_Descriptor cd_S3451C12 = {  "S3451C12", // class name
  0,0,//no base classes
  &(vtc_S3451C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S3451C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3451C12),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  S3451C2  : S3451C3 , virtual S3451C4 , S3451C8 , S3451C9 , virtual S3451C12 {
  virtual void  v30(); // _ZN7S3451C23v30Ev
  virtual void  v31(); // _ZN7S3451C23v31Ev
  ~S3451C2(); // tgen
  S3451C2(); // tgen
};
//SIG(-1 S3451C2) C1{ BC2{ v3 v4} VBC3{ VBC4{ m} VBC2 BC5{ v5 v6} VBC6{ BC2 v7 v8 v9 v10 Fi[5] Fp FL[4]} v11} BC7{ v12 Fp FD[7]} BC8{ VBC9{ v13 FC4 Fi[4]} BC5 VBC2 BC10{ BC5 VBC3 BC4 BC6 BC2 v14} BC7 v15 v16 v17 Fi} VBC11{ v18 v19 v20 v21 v22 v23 FU12{ m Fi}} v1 v2}


void  S3451C2 ::v30(){vfunc_called(this, "_ZN7S3451C23v30Ev");}
void  S3451C2 ::v31(){vfunc_called(this, "_ZN7S3451C23v31Ev");}
S3451C2 ::~S3451C2(){ note_dtor("S3451C2", this);} // tgen
S3451C2 ::S3451C2(){ note_ctor("S3451C2", this);} // tgen

static void Test_S3451C2()
{
  extern Class_Descriptor cd_S3451C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,92)];
    init_test(&cd_S3451C2, buf);
    S3451C2 *dp, &lv = *(dp=new (buf) S3451C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,364), "sizeof(S3451C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C2)");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), 0, "S3451C2");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C2");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(384,268), "S3451C2");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*), ABISELECT(384,268), "S3451C2");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(376,264), "S3451C2");
    /*is_ambiguous_... S3451C2::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(392,272), "S3451C2");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(392,272), "S3451C2");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(376,264), "S3451C2");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*), ABISELECT(376,264), "S3451C2");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*), ABISELECT(16,4), "S3451C2");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*), ABISELECT(464,332), "S3451C2");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*), ABISELECT(144,96), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*), ABISELECT(160,104), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*), ABISELECT(160,104), "S3451C2");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*), ABISELECT(232,164), "S3451C2");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*), ABISELECT(152,100), "S3451C2");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*), ABISELECT(240,168), "S3451C2");
    check_base_class_offset(lv, (S3451C9*), ABISELECT(144,96), "S3451C2");
    check_base_class_offset(lv, (S3451C12*), ABISELECT(496,356), "S3451C2");
    test_class_info(&lv, &cd_S3451C2);
    dp->~S3451C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C2(Test_S3451C2, "S3451C2", ABISELECT(512,364));

#else // __cplusplus

extern void _ZN7S3451C2C1Ev();
extern void _ZN7S3451C2D1Ev();
Name_Map name_map_S3451C2[] = {
  NSPAIR(_ZN7S3451C2C1Ev),
  NSPAIR(_ZN7S3451C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
static Base_Class bases_S3451C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C3,    ABISELECT(384,268), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(392,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(392,272), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(376,264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C8,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C10,    ABISELECT(464,332), //bcp->offset
    82, //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
    17, //immediately_derived
  0, 1},
  {&cd_S3451C6,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    36, //bcp->virtual_function_table_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_S3451C3,    ABISELECT(232,164), //bcp->offset
    44, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    48, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C12,    ABISELECT(496,356), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C2[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C2[] = {
  ABISELECT(496,356),
  ABISELECT(464,332),
  ABISELECT(392,272),
  ABISELECT(384,268),
  0,
  ABISELECT(376,264),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-384,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-272),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTV7S3451C2[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2[] = {
  ABISELECT(248,176),
  ABISELECT(-144,-96),
  ABISELECT(232,168),
  ABISELECT(240,172),
  ABISELECT(320,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-224,-164),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C9__7S3451C2[] = {
  0,
  ABISELECT(-320,-236),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C9__7S3451C2[] = {
  0,
  0,
  ABISELECT(-240,-172),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C9__7S3451C2[] = {
  ABISELECT(240,172),
  ABISELECT(232,168),
  ABISELECT(-152,-100),
  ABISELECT(224,164),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C9__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-376,-264),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C2[] = {
  {&(_ZTV7S3451C2[8]),  8,100},
  {&(_tg__ZTV7S3451C9__7S3451C2[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C9__7S3451C2[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C9__7S3451C2[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C9__7S3451C2[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C9__7S3451C2[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C9__7S3451C2[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C9__7S3451C2[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C9__7S3451C2[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C9__7S3451C2[8]),  8,14},
  {&(_ZTV7S3451C2[59]),  59,100},
  {&(_ZTV7S3451C2[66]),  66,100},
  {&(_ZTV7S3451C2[76]),  76,100},
  {&(_ZTV7S3451C2[22]),  22,100},
  {&(_ZTV7S3451C2[85]),  85,100},
  {&(_ZTV7S3451C2[33]),  33,100},
  {&(_ZTV7S3451C2[94]),  94,100},
  {&(_tg__ZTV7S3451C4__7S3451C2[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C2[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
Class_Descriptor cd_S3451C2 = {  "S3451C2", // class name
  bases_S3451C2, 19,
  &(vtc_S3451C2[0]), // expected_vtbl_contents
  &(vtt_S3451C2[0]), // expected_vtt_contents
  ABISELECT(512,364), // object size
  NSPAIRA(_ZTI7S3451C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C2),100, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C2),21, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C15  : S3451C4 , virtual S3451C8 {
  void *s3451c15f0;
  virtual  ~S3451C15(); // _ZN8S3451C15D2Ev
  virtual void  v32(); // _ZN8S3451C153v32Ev
  S3451C15(); // tgen
};
//SIG(-1 S3451C15) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S3451C15 ::~S3451C15(){ note_dtor("S3451C15", this);}
void  S3451C15 ::v32(){vfunc_called(this, "_ZN8S3451C153v32Ev");}
S3451C15 ::S3451C15(){ note_ctor("S3451C15", this);} // tgen

static void Test_S3451C15()
{
  extern Class_Descriptor cd_S3451C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S3451C15, buf);
    S3451C15 *dp, &lv = *(dp=new (buf) S3451C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S3451C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C15)");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C15");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(16,8), "S3451C15");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), 0, "S3451C15");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(24,12), "S3451C15");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(24,12), "S3451C15");
    check_base_class_offset(lv, (S3451C4*), 0, "S3451C15");
    check_base_class_offset(lv, (S3451C8*), ABISELECT(96,72), "S3451C15");
    check_field_offset(lv, s3451c15f0, ABISELECT(8,4), "S3451C15.s3451c15f0");
    test_class_info(&lv, &cd_S3451C15);
    dp->~S3451C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C15(Test_S3451C15, "S3451C15", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S3451C15C1Ev();
extern void _ZN8S3451C15D2Ev();
Name_Map name_map_S3451C15[] = {
  NSPAIR(_ZN8S3451C15C1Ev),
  NSPAIR(_ZN8S3451C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
static Base_Class bases_S3451C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3451C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C3,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(24,12), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3451C4,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C8,    ABISELECT(96,72), //bcp->offset
    32, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C15[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY vtc_S3451C15[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern VTBL_ENTRY _ZTV8S3451C15[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C15[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C15[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C15[] = {
  {&(_ZTV8S3451C15[6]),  6,36},
  {&(_tg__ZTV7S3451C4__8S3451C15[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C15[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C15[8]),  8,14},
  {&(_ZTV8S3451C15[16]),  16,36},
  {&(_ZTV8S3451C15[26]),  26,36},
  {&(_ZTV8S3451C15[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
Class_Descriptor cd_S3451C15 = {  "S3451C15", // class name
  bases_S3451C15, 7,
  &(vtc_S3451C15[0]), // expected_vtbl_contents
  &(vtt_S3451C15[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S3451C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3451C15),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C15),7, //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  S3451C14  : virtual S3451C15 , virtual S3451C10 , S3451C3 {
  virtual  ~S3451C14(); // _ZN8S3451C14D2Ev
  S3451C14(); // tgen
};
//SIG(-1 S3451C14) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ v1 v2} BC6{ v3 v4} VBC7{ BC5 v5 v6 v7 v8 Fi[5] Fp FL[4]} v9} VBC8{ v10 Fp FD[7]} vd v11 Fp} VBC9{ v12 FC4 Fi[4]} BC5 vd}


 S3451C14 ::~S3451C14(){ note_dtor("S3451C14", this);}
S3451C14 ::S3451C14(){ note_ctor("S3451C14", this);} // tgen

static void Test_S3451C14()
{
  extern Class_Descriptor cd_S3451C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,49)];
    init_test(&cd_S3451C14, buf);
    S3451C14 *dp, &lv = *(dp=new (buf) S3451C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,192), "sizeof(S3451C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C14)");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*)(S3451C15*), 0, "S3451C14");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*)(S3451C15*), ABISELECT(24,12), "S3451C14");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*)(S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(32,16), "S3451C14");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*)(S3451C15*), ABISELECT(32,16), "S3451C14");
    check_base_class_offset(lv, (S3451C4*)(S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C8*)(S3451C15*), ABISELECT(112,76), "S3451C14");
    check_base_class_offset(lv, (S3451C15*), ABISELECT(8,4), "S3451C14");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(240,168), "S3451C14");
    /*is_ambiguous_... S3451C14::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), 0, "S3451C14");
    test_class_info(&lv, &cd_S3451C14);
    dp->~S3451C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C14(Test_S3451C14, "S3451C14", ABISELECT(272,192));

#else // __cplusplus

extern void _ZN8S3451C14C1Ev();
extern void _ZN8S3451C14D2Ev();
Name_Map name_map_S3451C14[] = {
  NSPAIR(_ZN8S3451C14C1Ev),
  NSPAIR(_ZN8S3451C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C15;
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
static Base_Class bases_S3451C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C3,    ABISELECT(24,12), //bcp->offset
    29, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3451C6,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3451C3,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(32,16), //bcp->offset
    35, //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
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3451C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(112,76), //bcp->offset
    49, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3451C15,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C10,    ABISELECT(240,168), //bcp->offset
    53, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S3451C14[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN8S3451C14D1Ev();
extern void _ZN8S3451C14D0Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S3451C14D1Ev,_ZThn4_N8S3451C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S3451C14D0Ev,_ZThn4_N8S3451C14D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY vtc_S3451C14[] = {
  ABISELECT(240,168),
  ABISELECT(112,76),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D0Ev,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  ABISELECT(104,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern VTBL_ENTRY _ZTV8S3451C14[];
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__8S3451C14[] = {
  ABISELECT(104,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C48S3451C15__8S3451C14[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C48S3451C15__8S3451C14[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C48S3451C15__8S3451C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C15__8S3451C14[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C15__8S3451C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C15__8S3451C14[] = {
  0,
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
static  VTT_ENTRY vtt_S3451C14[] = {
  {&(_ZTV8S3451C14[8]),  8,57},
  {&(_ZTV8S3451C14[23]),  23,57},
  {&(_ZTV8S3451C14[33]),  33,57},
  {&(_ZTV8S3451C14[43]),  43,57},
  {&(_ZTV8S3451C14[52]),  52,57},
  {&(_ZTV8S3451C14[56]),  56,57},
  {&(_tg__ZTV8S3451C15__8S3451C14[6]),  6,12},
  {&(_tg__ZTV7S3451C48S3451C15__8S3451C14[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C48S3451C15__8S3451C14[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C48S3451C15__8S3451C14[8]),  8,14},
  {&(_tg__ZTV7S3451C3__8S3451C15__8S3451C14[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C15__8S3451C14[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C15__8S3451C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3451C14[];
extern  VTBL_ENTRY _ZTV8S3451C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C14[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3451C14D0Ev,_ZThn4_N8S3451C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3451C14D1Ev,_ZThn4_N8S3451C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3451C14 = {  "S3451C14", // class name
  bases_S3451C14, 10,
  &(vtc_S3451C14[0]), // expected_vtbl_contents
  &(vtt_S3451C14[0]), // expected_vtt_contents
  ABISELECT(272,192), // object size
  NSPAIRA(_ZTI8S3451C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3451C14),57, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C14),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C16  : virtual S3451C10 , virtual S3451C3 , virtual S3451C4 , S3451C2 {
  long double s3451c16f0;
  __tsi64 s3451c16f1[8];
  virtual void  v33(); // _ZN8S3451C163v33Ev
  virtual void  v34(); // _ZN8S3451C163v34Ev
  virtual void  v35(); // _ZN8S3451C163v35Ev
  virtual void  v36(); // _ZN8S3451C163v36Ev
  virtual void  v37(); // _ZN8S3451C163v37Ev
  virtual void  v38(); // _ZN8S3451C163v38Ev
  virtual void  v39(); // _ZN8S3451C163v39Ev
  ~S3451C16(); // tgen
  S3451C16(); // tgen
};
//SIG(-1 S3451C16) C1{ VBC2{ v8 FC3{ m} Fi[4]} VBC4{ v9 v10} VBC5{ VBC3 VBC4 BC6{ v11 v12} VBC7{ BC4 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ BC4 VBC5 BC9{ v18 Fp FD[7]} BC10{ VBC2 BC6 VBC4 BC11{ BC6 VBC5 BC3 BC7 BC4 v19} BC9 v20 v21 v22 Fi} VBC12{ v23 v24 v25 v26 v27 v28 FU13{ m Fi}} v29 v30} v1 v2 v3 v4 v5 v6 v7 FD FL[8]}


void  S3451C16 ::v33(){vfunc_called(this, "_ZN8S3451C163v33Ev");}
void  S3451C16 ::v34(){vfunc_called(this, "_ZN8S3451C163v34Ev");}
void  S3451C16 ::v35(){vfunc_called(this, "_ZN8S3451C163v35Ev");}
void  S3451C16 ::v36(){vfunc_called(this, "_ZN8S3451C163v36Ev");}
void  S3451C16 ::v37(){vfunc_called(this, "_ZN8S3451C163v37Ev");}
void  S3451C16 ::v38(){vfunc_called(this, "_ZN8S3451C163v38Ev");}
void  S3451C16 ::v39(){vfunc_called(this, "_ZN8S3451C163v39Ev");}
S3451C16 ::~S3451C16(){ note_dtor("S3451C16", this);} // tgen
S3451C16 ::S3451C16(){ note_ctor("S3451C16", this);} // tgen

static void Test_S3451C16()
{
  extern Class_Descriptor cd_S3451C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,111)];
    init_test(&cd_S3451C16, buf);
    S3451C16 *dp, &lv = *(dp=new (buf) S3451C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,440), "sizeof(S3451C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C16)");
    check_base_class_offset(lv, (S3451C10*), ABISELECT(464,340), "S3451C16");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*), ABISELECT(464,340), "S3451C16");
    /*is_ambiguous_... S3451C16::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*), ABISELECT(496,364), "S3451C16");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(496,364), "S3451C16");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*), ABISELECT(496,364), "S3451C16");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C16");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(504,368), "S3451C16");
    /*is_ambiguous_... S3451C16::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(512,372), "S3451C16");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(512,372), "S3451C16");
    check_base_class_offset(lv, (S3451C4*), ABISELECT(504,368), "S3451C16");
    check_base_class_offset(lv, (S3451C4*)(S3451C2*), ABISELECT(504,368), "S3451C16");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(504,368), "S3451C16");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*), 0, "S3451C16");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*), ABISELECT(16,4), "S3451C16");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C16");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(232,164), "S3451C16");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C16");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*), ABISELECT(240,168), "S3451C16");
    check_base_class_offset(lv, (S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C16");
    check_base_class_offset(lv, (S3451C12*)(S3451C2*), ABISELECT(584,432), "S3451C16");
    check_base_class_offset(lv, (S3451C2*), 0, "S3451C16");
    check_field_offset(lv, s3451c16f0, ABISELECT(384,264), "S3451C16.s3451c16f0");
    check_field_offset(lv, s3451c16f1, ABISELECT(400,276), "S3451C16.s3451c16f1");
    test_class_info(&lv, &cd_S3451C16);
    dp->~S3451C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C16(Test_S3451C16, "S3451C16", ABISELECT(608,440));

#else // __cplusplus

extern void _ZN8S3451C16C1Ev();
extern void _ZN8S3451C16D1Ev();
Name_Map name_map_S3451C16[] = {
  NSPAIR(_ZN8S3451C16C1Ev),
  NSPAIR(_ZN8S3451C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
static Base_Class bases_S3451C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C10,    ABISELECT(464,340), //bcp->offset
    58, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    ABISELECT(496,364), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C6,    ABISELECT(504,368), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C3,    ABISELECT(512,372), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C7,    ABISELECT(512,372), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //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, 1},
  {&cd_S3451C4,    ABISELECT(504,368), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(16,4), //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
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C6,    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
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(232,164), //bcp->offset
    51, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    55, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C12,    ABISELECT(584,432), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //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
    19, //immediately_derived
  0, 1},
  {&cd_S3451C2,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3451C16[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY vtc_S3451C16[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern VTBL_ENTRY _ZTV8S3451C16[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C2__8S3451C16[] = {
  ABISELECT(584,432),
  ABISELECT(464,340),
  ABISELECT(512,372),
  ABISELECT(496,364),
  0,
  ABISELECT(504,368),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C2__8S3451C16[] = {
  0,
  ABISELECT(-320,-244),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-360,-272),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-276),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  ABISELECT(-504,-368),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C2__8S3451C16[] = {
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-372),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2__8S3451C16[] = {
  ABISELECT(368,276),
  ABISELECT(-144,-96),
  ABISELECT(360,272),
  ABISELECT(352,268),
  ABISELECT(320,244),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C2__8S3451C16[] = {
  0,
  ABISELECT(-464,-340),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2__8S3451C16[] = {
  ABISELECT(360,272),
  ABISELECT(344,264),
  ABISELECT(-152,-100),
  ABISELECT(352,268),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C2__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-584,-432),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C16[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-504,-368),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__8S3451C16[] = {
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__8S3451C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
static  VTT_ENTRY vtt_S3451C16[] = {
  {&(_ZTV8S3451C16[8]),  8,107},
  {&(_tg__ZTV7S3451C2__8S3451C16[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C2__8S3451C16[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C2__8S3451C16[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C2__8S3451C16[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C2__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C2__8S3451C16[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C2__8S3451C16[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C2__8S3451C16[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2__8S3451C16[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C2__8S3451C16[8]),  8,14},
  {&(_ZTV8S3451C16[61]),  61,107},
  {&(_ZTV8S3451C16[66]),  66,107},
  {&(_ZTV8S3451C16[76]),  76,107},
  {&(_ZTV8S3451C16[87]),  87,107},
  {&(_ZTV8S3451C16[29]),  29,107},
  {&(_ZTV8S3451C16[40]),  40,107},
  {&(_ZTV8S3451C16[101]),  101,107},
  {&(_tg__ZTV7S3451C4__8S3451C16[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__8S3451C16[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__8S3451C16[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S3451C16[];
extern  VTBL_ENTRY _ZTV8S3451C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C16[];
Class_Descriptor cd_S3451C16 = {  "S3451C16", // class name
  bases_S3451C16, 20,
  &(vtc_S3451C16[0]), // expected_vtbl_contents
  &(vtt_S3451C16[0]), // expected_vtt_contents
  ABISELECT(608,440), // object size
  NSPAIRA(_ZTI8S3451C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3451C16),107, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C16),29, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3451C17  : virtual S7856C24 , S3451C8 , S3451C7 {
  int s3451c17f0[10];
  ::S3451C11 s3451c17f1;
  virtual void  v40(); // _ZN8S3451C173v40Ev
  virtual void  v41(); // _ZN8S3451C173v41Ev
  virtual void  v42(); // _ZN8S3451C173v42Ev
  virtual void  v43(); // _ZN8S3451C173v43Ev
  virtual void  v44(); // _ZN8S3451C173v44Ev
  ~S3451C17(); // tgen
  S3451C17(); // tgen
};
//SIG(-1 S3451C17) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S3451C17 ::v40(){vfunc_called(this, "_ZN8S3451C173v40Ev");}
void  S3451C17 ::v41(){vfunc_called(this, "_ZN8S3451C173v41Ev");}
void  S3451C17 ::v42(){vfunc_called(this, "_ZN8S3451C173v42Ev");}
void  S3451C17 ::v43(){vfunc_called(this, "_ZN8S3451C173v43Ev");}
void  S3451C17 ::v44(){vfunc_called(this, "_ZN8S3451C173v44Ev");}
S3451C17 ::~S3451C17(){ note_dtor("S3451C17", this);} // tgen
S3451C17 ::S3451C17(){ note_ctor("S3451C17", this);} // tgen

static void Test_S3451C17()
{
  extern Class_Descriptor cd_S3451C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S3451C17, buf);
    S3451C17 *dp, &lv = *(dp=new (buf) S3451C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S3451C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C17)");
    check_base_class_offset(lv, (S7856C24*), 0, "S3451C17");
    check_base_class_offset(lv, (S3451C8*), 0, "S3451C17");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(128,92), "S3451C17");
    check_base_class_offset(lv, (S3451C7*), ABISELECT(128,92), "S3451C17");
    check_field_offset(lv, s3451c17f0, ABISELECT(200,152), "S3451C17.s3451c17f0");
    check_field_offset(lv, s3451c17f1, ABISELECT(240,192), "S3451C17.s3451c17f1");
    test_class_info(&lv, &cd_S3451C17);
    dp->~S3451C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C17(Test_S3451C17, "S3451C17", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN8S3451C17C1Ev();
extern void _ZN8S3451C17D1Ev();
Name_Map name_map_S3451C17[] = {
  NSPAIR(_ZN8S3451C17C1Ev),
  NSPAIR(_ZN8S3451C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
static Base_Class bases_S3451C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3451C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3451C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(128,92), //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 _ZTI8S3451C17[];
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV8S3451C17[];
static  VTT_ENTRY vtt_S3451C17[] = {
  {&(_ZTV8S3451C17[3]),  3,17},
};
extern VTBL_ENTRY _ZTI8S3451C17[];
extern  VTBL_ENTRY _ZTV8S3451C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C17[];
Class_Descriptor cd_S3451C17 = {  "S3451C17", // class name
  bases_S3451C17, 4,
  &(vtc_S3451C17[0]), // expected_vtbl_contents
  &(vtt_S3451C17[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI8S3451C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3451C17),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3451C17),1, //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

union  S3451C19  {
  long double s3451c19f0[2];
  __tsi64 s3451c19f1;
  void  mf3451c19(); // _ZN8S3451C199mf3451c19Ev
};
//SIG(1 S3451C19) U1{ m FD[2] FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3451C18  {
  ::S3451C19 s3451c18f0;
  void  mf3451c18(); // _ZN8S3451C189mf3451c18Ev
};
//SIG(-1 S3451C18) C1{ m FU2{ m FD[2] FL}}


void  S3451C18 ::mf3451c18(){}

static void Test_S3451C18()
{
  {
    init_simple_test("S3451C18");
    S3451C18 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3451C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C18)");
    check_field_offset(lv, s3451c18f0, 0, "S3451C18.s3451c18f0");
  }
}
static Arrange_To_Call_Me vS3451C18(Test_S3451C18, "S3451C18", ABISELECT(32,24));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S3451C18[];
VTBL_ENTRY *P__ZTI8S3451C18 = _ZTI8S3451C18; 
Class_Descriptor cd_S3451C18 = {  "S3451C18", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S3451C18),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  S3451C1  : S3451C2 , S3451C14 , virtual S3451C16 , virtual S3451C17 , S3451C18 {
  __tsi64 s3451c1f0[8];
  virtual  ~S3451C1(); // _ZN7S3451C1D2Ev
  virtual void  v1(); // _ZN7S3451C12v1Ev
  virtual void  v2(); // _ZN7S3451C12v2Ev
  virtual void  v3(); // _ZN7S3451C12v3Ev
  virtual void  v4(); // _ZN7S3451C12v4Ev
  virtual void  v5(); // _ZN7S3451C12v5Ev
  virtual void  v6(); // _ZN7S3451C12v6Ev
  virtual void  v7(); // _ZN7S3451C12v7Ev
  virtual void  v8(); // _ZN7S3451C12v8Ev
  S3451C1(); // tgen
};
//SIG(1 S3451C1) C1{ BC2{ BC3{ v9 v10} VBC4{ VBC5{ m} VBC3 BC6{ v11 v12} VBC7{ BC3 v13 v14 v15 v16 Fi[5] Fp FL[4]} v17} BC8{ v18 Fp FD[7]} BC9{ VBC10{ v19 FC5 Fi[4]} BC6 VBC3 BC11{ BC6 VBC4 BC5 BC7 BC3 v20} BC8 v21 v22 v23 Fi} VBC12{ v24 v25 v26 v27 v28 v29 FU13{ m Fi}} v30 v31} BC14{ VBC15{ BC4 VBC8 vd v32 Fp} VBC10 BC3 vd} VBC16{ VBC10 VBC3 VBC4 BC2 v33 v34 v35 v36 v37 v38 v39 FD FL[8]} VBC17{ VBC5 BC8 BC7 v40 v41 v42 v43 v44 Fi[10] FC11} BC18{ m FU19{ m FD[2] FL}} vd v1 v2 v3 v4 v5 v6 v7 v8 FL[8]}


 S3451C1 ::~S3451C1(){ note_dtor("S3451C1", this);}
void  S3451C1 ::v1(){vfunc_called(this, "_ZN7S3451C12v1Ev");}
void  S3451C1 ::v2(){vfunc_called(this, "_ZN7S3451C12v2Ev");}
void  S3451C1 ::v3(){vfunc_called(this, "_ZN7S3451C12v3Ev");}
void  S3451C1 ::v4(){vfunc_called(this, "_ZN7S3451C12v4Ev");}
void  S3451C1 ::v5(){vfunc_called(this, "_ZN7S3451C12v5Ev");}
void  S3451C1 ::v6(){vfunc_called(this, "_ZN7S3451C12v6Ev");}
void  S3451C1 ::v7(){vfunc_called(this, "_ZN7S3451C12v7Ev");}
void  S3451C1 ::v8(){vfunc_called(this, "_ZN7S3451C12v8Ev");}
S3451C1 ::S3451C1(){ note_ctor("S3451C1", this);} // tgen

static void Test_S3451C1()
{
  extern Class_Descriptor cd_S3451C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,307)];
    init_test(&cd_S3451C1, buf);
    S3451C1 *dp, &lv = *(dp=new (buf) S3451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,1224), "sizeof(S3451C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3451C1)");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*), 0, "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C4*), 0, "S3451C1");
    check_base_class_offset(lv, (S7856C24*)(S3451C4*)(S3451C15*), 0, "S3451C1");
    check_base_class_offset(lv, (S7856C24*)(S3451C17*), 0, "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C4::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C4*)(S3451C15*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C16::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C16*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C9::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(488,360), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C4*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*), ABISELECT(496,364), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C4 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C4*), ABISELECT(496,364), "S3451C1");
    check_base_class_offset(lv, (S3451C7*)(S3451C4*)(S3451C15*), ABISELECT(496,364), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C4*)(S3451C2*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C2*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(480,356), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*), ABISELECT(16,4), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C14*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C16*), ABISELECT(568,424), "S3451C1");
    check_base_class_offset(lv, (S3451C10*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(568,424), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(160,104), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(232,164), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*), ABISELECT(152,100), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*), ABISELECT(240,168), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C9*)(S3451C2*), ABISELECT(144,96), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C12*)(S3451C2*), ABISELECT(600,448), "S3451C1");
    check_base_class_offset(lv, (S3451C12*)(S3451C2*)(S3451C16*), ABISELECT(600,448), "S3451C1");
    /*is_ambiguous_... S3451C1::S3451C2 */ AMB_check_base_class_offset(lv, (S3451C2*), 0, "S3451C1");
    check_base_class_offset(lv, (S3451C6*)(S3451C4*)(S3451C15*), ABISELECT(616,456), "S3451C1");
    check_base_class_offset(lv, (S3451C4*)(S3451C15*), ABISELECT(616,456), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C15*), ABISELECT(640,464), "S3451C1");
    check_base_class_offset(lv, (S3451C15*)(S3451C14*), ABISELECT(616,456), "S3451C1");
    /*is_ambiguous_... S3451C14::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C14*), ABISELECT(376,264), "S3451C1");
    check_base_class_offset(lv, (S3451C14*), ABISELECT(376,264), "S3451C1");
    /*is_ambiguous_... S3451C2::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C2*)(S3451C16*), ABISELECT(768,556), "S3451C1");
    /*is_ambiguous_... S3451C2::S3451C8 */ AMB_check_base_class_offset(lv, (S3451C8*)(S3451C2*)(S3451C16*), ABISELECT(784,560), "S3451C1");
    /*is_ambiguous_... S3451C9::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(912,652), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C6 */ AMB_check_base_class_offset(lv, (S3451C6*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    /*is_ambiguous_... S3451C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(928,660), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C7 */ AMB_check_base_class_offset(lv, (S3451C7*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(928,660), "S3451C1");
    /*is_ambiguous_... S3451C11::S3451C3 */ AMB_check_base_class_offset(lv, (S3451C3*)(S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(1000,720), "S3451C1");
    check_base_class_offset(lv, (S3451C11*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(920,656), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(1008,724), "S3451C1");
    check_base_class_offset(lv, (S3451C9*)(S3451C2*)(S3451C16*), ABISELECT(912,652), "S3451C1");
    check_base_class_offset(lv, (S3451C2*)(S3451C16*), ABISELECT(768,556), "S3451C1");
    check_base_class_offset(lv, (S3451C16*), ABISELECT(768,556), "S3451C1");
    check_base_class_offset(lv, (S3451C8*)(S3451C17*), ABISELECT(1232,896), "S3451C1");
    check_base_class_offset(lv, (S3451C3*)(S3451C7*)(S3451C17*), ABISELECT(1360,988), "S3451C1");
    check_base_class_offset(lv, (S3451C7*)(S3451C17*), ABISELECT(1360,988), "S3451C1");
    check_base_class_offset(lv, (S3451C17*), ABISELECT(1232,896), "S3451C1");
    check_base_class_offset(lv, (S3451C18*), ABISELECT(384,268), "S3451C1");
    check_field_offset(lv, s3451c1f0, ABISELECT(416,292), "S3451C1.s3451c1f0");
    test_class_info(&lv, &cd_S3451C1);
    dp->~S3451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3451C1(Test_S3451C1, "S3451C1", ABISELECT(1648,1224));

#else // __cplusplus

extern void _ZN7S3451C1C1Ev();
extern void _ZN7S3451C1D2Ev();
Name_Map name_map_S3451C1[] = {
  NSPAIR(_ZN7S3451C1C1Ev),
  NSPAIR(_ZN7S3451C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C10;
extern VTBL_ENTRY _ZTI8S3451C10[];
extern  VTBL_ENTRY _ZTV8S3451C10[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C12;
extern VTBL_ENTRY _ZTI8S3451C12[];
extern  VTBL_ENTRY _ZTV8S3451C12[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C4;
extern VTBL_ENTRY _ZTI7S3451C4[];
extern  VTBL_ENTRY _ZTV7S3451C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C4[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C15;
extern VTBL_ENTRY _ZTI8S3451C15[];
extern  VTBL_ENTRY _ZTV8S3451C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C15[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C14;
extern VTBL_ENTRY _ZTI8S3451C14[];
extern  VTBL_ENTRY _ZTV8S3451C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C14[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S3451C6;
extern VTBL_ENTRY _ZTI7S3451C6[];
extern  VTBL_ENTRY _ZTV7S3451C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C11;
extern VTBL_ENTRY _ZTI8S3451C11[];
extern  VTBL_ENTRY _ZTV8S3451C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C11[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C9;
extern VTBL_ENTRY _ZTI7S3451C9[];
extern  VTBL_ENTRY _ZTV7S3451C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C9[];
extern Class_Descriptor cd_S3451C2;
extern VTBL_ENTRY _ZTI7S3451C2[];
extern  VTBL_ENTRY _ZTV7S3451C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C2[];
extern Class_Descriptor cd_S3451C16;
extern VTBL_ENTRY _ZTI8S3451C16[];
extern  VTBL_ENTRY _ZTV8S3451C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C16[];
extern Class_Descriptor cd_S3451C8;
extern VTBL_ENTRY _ZTI7S3451C8[];
extern  VTBL_ENTRY _ZTV7S3451C8[];
extern Class_Descriptor cd_S3451C3;
extern VTBL_ENTRY _ZTI7S3451C3[];
extern  VTBL_ENTRY _ZTV7S3451C3[];
extern Class_Descriptor cd_S3451C7;
extern VTBL_ENTRY _ZTI7S3451C7[];
extern  VTBL_ENTRY _ZTV7S3451C7[];
extern Class_Descriptor cd_S3451C17;
extern VTBL_ENTRY _ZTI8S3451C17[];
extern  VTBL_ENTRY _ZTV8S3451C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3451C17[];
extern Class_Descriptor cd_S3451C18;
extern VTBL_ENTRY _ZTI8S3451C18[];
static Base_Class bases_S3451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3451C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C3,    ABISELECT(488,360), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C6,    ABISELECT(480,356), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3451C3,    ABISELECT(496,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3451C7,    ABISELECT(496,364), //bcp->offset
    94, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3451C4,    ABISELECT(480,356), //bcp->offset
    77, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3451C8,    ABISELECT(16,4), //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
    29, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C10,    ABISELECT(568,424), //bcp->offset
    108, //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
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3451C6,    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
    30, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C6,    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
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(232,164), //bcp->offset
    58, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(240,168), //bcp->offset
    62, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(144,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3451C12,    ABISELECT(600,448), //bcp->offset
    112, //bcp->virtual_function_table_offset
    8, //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
    19, //immediately_derived
  0, 1},
  {&cd_S3451C2,    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
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C6,    ABISELECT(616,456), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S3451C4,    ABISELECT(616,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    23, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(640,464), //bcp->offset
    143, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3451C15,    ABISELECT(616,456), //bcp->offset
    126, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3451C3,    ABISELECT(376,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3451C14,    ABISELECT(376,264), //bcp->offset
    65, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3451C3,    ABISELECT(768,556), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(784,560), //bcp->offset
    188, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(912,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
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C6,    ABISELECT(920,656), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7856C24,    ABISELECT(920,656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(928,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
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(928,660), //bcp->offset
    212, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(1000,720), //bcp->offset
    220, //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
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3451C11,    ABISELECT(920,656), //bcp->offset
    203, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C8,    ABISELECT(1008,724), //bcp->offset
    224, //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
    20, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3451C9,    ABISELECT(912,652), //bcp->offset
    191, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3451C2,    ABISELECT(768,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3451C16,    ABISELECT(768,556), //bcp->offset
    147, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C8,    ABISELECT(1232,896), //bcp->offset
    -1, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S3451C3,    ABISELECT(1360,988), //bcp->offset
    -1, //bcp->virtual_function_table_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
    41, //immediately_derived
  0, 0},
  {&cd_S3451C7,    ABISELECT(1360,988), //bcp->offset
    248, //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
    26, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3451C17,    ABISELECT(1232,896), //bcp->offset
    227, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3451C18,    ABISELECT(384,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3451C1[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN7S3451C1D1Ev();
extern void _ZN7S3451C1D0Ev();
extern void _ZN7S3451C12v1Ev();
extern void _ZN7S3451C12v2Ev();
extern void _ZN7S3451C12v3Ev();
extern void _ZN7S3451C12v4Ev();
extern void _ZN7S3451C12v5Ev();
extern void _ZN7S3451C12v6Ev();
extern void _ZN7S3451C12v7Ev();
extern void _ZN7S3451C12v8Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void ABISELECT(_ZThn376_N7S3451C1D1Ev,_ZThn264_N7S3451C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S3451C1D0Ev,_ZThn264_N7S3451C1D0Ev)();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN8S3451C103v19Ev();
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev)();
extern void ABISELECT(_ZThn616_N7S3451C1D1Ev,_ZThn456_N7S3451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev)();
extern void ABISELECT(_ZThn616_N7S3451C1D0Ev,_ZThn456_N7S3451C1D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY vtc_S3451C1[] = {
  ABISELECT(1232,896),
  ABISELECT(768,556),
  ABISELECT(640,464),
  ABISELECT(616,456),
  ABISELECT(600,448),
  ABISELECT(568,424),
  ABISELECT(496,364),
  ABISELECT(488,360),
  0,
  ABISELECT(480,356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3451C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3451C12v8Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(192,160),
  ABISELECT(264,200),
  ABISELECT(120,100),
  ABISELECT(112,96),
  ABISELECT(-376,-264),
  ABISELECT(240,192),
  ABISELECT(-376,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn376_N7S3451C1D1Ev,_ZThn264_N7S3451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn376_N7S3451C1D0Ev,_ZThn264_N7S3451C1D0Ev),
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-480,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  0,
  ABISELECT(-568,-424),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-600,-448),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
  0,
  ABISELECT(-616,-456),
  0,
  0,
  0,
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  ABISELECT(-616,-456),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
  0,
  ABISELECT(-640,-464),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(160,104),
  ABISELECT(152,100),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  ABISELECT(-768,-556),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
  ABISELECT(-784,-560),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-912,-652),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-920,-656),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
  ABISELECT(-928,-660),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
  ABISELECT(-1000,-720),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  ABISELECT(-1008,-724),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1232,-896),
  ABISELECT(-1232,-896),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
  ABISELECT(-1360,-988),
  (VTBL_ENTRY)&(_ZTI7S3451C1[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern VTBL_ENTRY _ZTV7S3451C1[];
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C2__7S3451C1[] = {
  ABISELECT(600,448),
  ABISELECT(568,424),
  ABISELECT(496,364),
  ABISELECT(488,360),
  0,
  ABISELECT(480,356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-328,-256),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-336,-260),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C2__7S3451C1[] = {
  0,
  ABISELECT(-424,-328),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-344,-264),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-336,-260),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-268),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(-480,-356),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C2__7S3451C1[] = {
  0,
  0,
  ABISELECT(-488,-360),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-364),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C2__7S3451C1[] = {
  ABISELECT(352,268),
  ABISELECT(-144,-96),
  ABISELECT(336,260),
  ABISELECT(344,264),
  ABISELECT(424,328),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C2__7S3451C1[] = {
  0,
  ABISELECT(-568,-424),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C2__7S3451C1[] = {
  ABISELECT(344,264),
  ABISELECT(336,260),
  ABISELECT(-152,-100),
  ABISELECT(328,256),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C2__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-600,-448),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN8S3451C14D1Ev();
extern void _ZN8S3451C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C14__7S3451C1[] = {
  ABISELECT(192,160),
  ABISELECT(264,200),
  ABISELECT(120,100),
  ABISELECT(112,96),
  ABISELECT(-376,-264),
  ABISELECT(240,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C14D0Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev)();
extern void ABISELECT(_ZThn240_N8S3451C14D1Ev,_ZThn192_N8S3451C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev)();
extern void ABISELECT(_ZThn240_N8S3451C14D0Ev,_ZThn192_N8S3451C14D0Ev)() __attribute__((weak));
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-240,-192),
  0,
  0,
  0,
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  ABISELECT(-240,-192),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C14__7S3451C1[] = {
  0,
  0,
  ABISELECT(-112,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C14__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-264,-200),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__8S3451C14__7S3451C1[] = {
  0,
  ABISELECT(-192,-160),
  (VTBL_ENTRY)&(_ZTI8S3451C14[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C4__7S3451C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C4__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
extern void _ZN8S3451C15D1Ev();
extern void _ZN8S3451C15D0Ev();
extern void _ZN8S3451C153v32Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C15__7S3451C1[] = {
  ABISELECT(24,8),
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3451C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3451C153v32Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C48S3451C15__A1__7S3451C1[] = {
  ABISELECT(-120,-92),
  ABISELECT(-128,-96),
  ABISELECT(-616,-456),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C48S3451C15__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C48S3451C15__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI7S3451C4[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C15__7S3451C1[] = {
  0,
  0,
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C15__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C8__8S3451C15__7S3451C1[] = {
  0,
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI8S3451C15[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
extern void _ZN8S3451C163v33Ev();
extern void _ZN8S3451C163v34Ev();
extern void _ZN8S3451C163v35Ev();
extern void _ZN8S3451C163v36Ev();
extern void _ZN8S3451C163v37Ev();
extern void _ZN8S3451C163v38Ev();
extern void _ZN8S3451C163v39Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C16__7S3451C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v33Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v34Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v35Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v36Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v37Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v38Ev,
  (VTBL_ENTRY)&_ZN8S3451C163v39Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C23v30Ev();
extern void _ZN7S3451C23v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-200,-132),
  ABISELECT(-272,-192),
  ABISELECT(-280,-196),
  ABISELECT(-768,-556),
  ABISELECT(-288,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3451C23v31Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(440,300),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(432,296),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,292),
  (VTBL_ENTRY)&(_ZTI8S3451C11[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  ABISELECT(344,228),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(424,292),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C11__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(432,296),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C97S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,288),
  (VTBL_ENTRY)&(_ZTI7S3451C9[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(288,200),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__A1__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  ABISELECT(280,196),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,192),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C9__7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C9__7S3451C28S3451C16__A1__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__7S3451C28S3451C16__A1__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S3451C2[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN8S3451C103v19Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C10__8S3451C16__7S3451C1[] = {
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C103v19Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C3__8S3451C16__7S3451C1[] = {
  0,
  0,
  ABISELECT(280,196),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C4__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-480,-356),
  ABISELECT(288,200),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C43v17Ev,
};
extern void _ZN7S3451C32v9Ev();
extern void _ZN7S3451C33v10Ev();
extern void _ZN7S3451C73v13Ev();
extern void _ZN7S3451C73v14Ev();
extern void _ZN7S3451C73v15Ev();
extern void _ZN7S3451C73v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C7__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,192),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3451C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v13Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v14Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v15Ev,
  (VTBL_ENTRY)&_ZN7S3451C73v16Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN7S3451C93v21Ev();
extern void _ZN7S3451C93v22Ev();
extern void _ZN7S3451C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S3451C97S3451C2__8S3451C16__7S3451C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(-912,-652),
  ABISELECT(-432,-296),
  ABISELECT(-424,-292),
  ABISELECT(-344,-228),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3451C93v23Ev,
};
extern void _ZN7S3451C63v11Ev();
extern void _ZN7S3451C63v12Ev();
extern void _ZN8S3451C113v20Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16__7S3451C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-432,-296),
  ABISELECT(-920,-656),
  ABISELECT(-440,-300),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN7S3451C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3451C63v12Ev,
  (VTBL_ENTRY)&_ZN8S3451C113v20Ev,
};
extern void _ZN8S3451C123v24Ev();
extern void _ZN8S3451C123v25Ev();
extern void _ZN8S3451C123v26Ev();
extern void _ZN8S3451C123v27Ev();
extern void _ZN8S3451C123v28Ev();
extern void _ZN8S3451C123v29Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C12__8S3451C16__7S3451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S3451C16[0]),
  (VTBL_ENTRY)&_ZN8S3451C123v24Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v25Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v26Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v27Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v28Ev,
  (VTBL_ENTRY)&_ZN8S3451C123v29Ev,
};
extern void _ZN7S3451C83v18Ev();
extern void _ZN8S3451C173v40Ev();
extern void _ZN8S3451C173v41Ev();
extern void _ZN8S3451C173v42Ev();
extern void _ZN8S3451C173v43Ev();
extern void _ZN8S3451C173v44Ev();
static  VTBL_ENTRY _tg__ZTV8S3451C17__7S3451C1[] = {
  ABISELECT(-1232,-896),
  0,
  (VTBL_ENTRY)&(_ZTI8S3451C17[0]),
  (VTBL_ENTRY)&_ZN7S3451C83v18Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v40Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v41Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v42Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v43Ev,
  (VTBL_ENTRY)&_ZN8S3451C173v44Ev,
};
static  VTT_ENTRY vtt_S3451C1[] = {
  {&(_ZTV7S3451C1[12]),  12,256},
  {&(_tg__ZTV7S3451C2__7S3451C1[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C2__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C2__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C2__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C2__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C2__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C2__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C2__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C2__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C14__7S3451C1[8]),  8,12},
  {&(_tg__ZTV8S3451C15__8S3451C14__7S3451C1[11]),  11,17},
  {&(_tg__ZTV7S3451C3__8S3451C14__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C14__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C14__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C10__8S3451C14__7S3451C1[3]),  3,4},
  {&(_ZTV7S3451C1[85]),  85,256},
  {&(_ZTV7S3451C1[92]),  92,256},
  {&(_ZTV7S3451C1[102]),  102,256},
  {&(_ZTV7S3451C1[36]),  36,256},
  {&(_ZTV7S3451C1[111]),  111,256},
  {&(_ZTV7S3451C1[47]),  47,256},
  {&(_ZTV7S3451C1[120]),  120,256},
  {&(_ZTV7S3451C1[73]),  73,256},
  {&(_ZTV7S3451C1[137]),  137,256},
  {&(_ZTV7S3451C1[146]),  146,256},
  {&(_ZTV7S3451C1[177]),  177,256},
  {&(_ZTV7S3451C1[190]),  190,256},
  {&(_ZTV7S3451C1[198]),  198,256},
  {&(_ZTV7S3451C1[209]),  209,256},
  {&(_ZTV7S3451C1[214]),  214,256},
  {&(_ZTV7S3451C1[222]),  222,256},
  {&(_ZTV7S3451C1[226]),  226,256},
  {&(_ZTV7S3451C1[242]),  242,256},
  {&(_ZTV7S3451C1[250]),  250,256},
  {&(_tg__ZTV7S3451C4__7S3451C1[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C4__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C4__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C15__7S3451C1[6]),  6,12},
  {&(_tg__ZTV7S3451C48S3451C15__A1__7S3451C1[5]),  5,8},
  {&(_tg__ZTV7S3451C3__7S3451C48S3451C15__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C48S3451C15__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C3__8S3451C15__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C15__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C8__8S3451C15__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C16__7S3451C1[8]),  8,19},
  {&(_tg__ZTV7S3451C28S3451C16__A1__7S3451C1[8]),  8,12},
  {&(_tg__ZTV7S3451C97S3451C28S3451C16__A1__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__8S3451C117S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__7S3451C97S3451C28S3451C16__A1__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__7S3451C97S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV8S3451C11__7S3451C97S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV7S3451C4__7S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__7S3451C97S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C4__7S3451C28S3451C16__A1__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C3__A1__7S3451C28S3451C16__A1__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C7__7S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C9__7S3451C28S3451C16__A1__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C10__7S3451C28S3451C16__A1__7S3451C1[3]),  3,4},
  {&(_tg__ZTV8S3451C117S3451C9__7S3451C28S3451C16__A1__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__7S3451C28S3451C16__A1__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C10__8S3451C16__7S3451C1[3]),  3,4},
  {&(_tg__ZTV7S3451C3__8S3451C16__7S3451C1[4]),  4,6},
  {&(_tg__ZTV7S3451C4__8S3451C16__7S3451C1[8]),  8,11},
  {&(_tg__ZTV7S3451C7__8S3451C16__7S3451C1[8]),  8,14},
  {&(_tg__ZTV7S3451C97S3451C2__8S3451C16__7S3451C1[7]),  7,12},
  {&(_tg__ZTV8S3451C117S3451C97S3451C2__8S3451C16__7S3451C1[6]),  6,9},
  {&(_tg__ZTV8S3451C12__8S3451C16__7S3451C1[8]),  8,14},
  {&(_tg__ZTV8S3451C17__7S3451C1[3]),  3,9},
};
extern VTBL_ENTRY _ZTI7S3451C1[];
extern  VTBL_ENTRY _ZTV7S3451C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3451C1[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D0Ev,_ZTv0_n40_N8S3451C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3451C14D0Ev,_ZThn192_N8S3451C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3451C14D1Ev,_ZTv0_n40_N8S3451C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3451C14D1Ev,_ZThn192_N8S3451C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3451C1D0Ev,_ZTv0_n40_N7S3451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3451C1D0Ev,_ZThn456_N7S3451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3451C1D1Ev,_ZTv0_n40_N7S3451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3451C1D1Ev,_ZThn456_N7S3451C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3451C1 = {  "S3451C1", // class name
  bases_S3451C1, 44,
  &(vtc_S3451C1[0]), // expected_vtbl_contents
  &(vtt_S3451C1[0]), // expected_vtt_contents
  ABISELECT(1648,1224), // object size
  NSPAIRA(_ZTI7S3451C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3451C1),256, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3451C1),81, //virtual table table var
  40, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C4_nt  {
  ::S17556C5_nt s2345c4f0;
  int s2345c4f1[2];
  char s2345c4f2;
  virtual  ~S2345C4_nt(); // _ZN10S2345C4_ntD1Ev
  virtual void  v5(); // _ZN10S2345C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2345C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2345C4_nt2v7Ev
  S2345C4_nt(); // tgen
};
//SIG(-1 S2345C4_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2345C4_nt ::~S2345C4_nt(){ note_dtor("S2345C4_nt", this);}
void  S2345C4_nt ::v5(){vfunc_called(this, "_ZN10S2345C4_nt2v5Ev");}
void  S2345C4_nt ::v6(){vfunc_called(this, "_ZN10S2345C4_nt2v6Ev");}
void  S2345C4_nt ::v7(){vfunc_called(this, "_ZN10S2345C4_nt2v7Ev");}
S2345C4_nt ::S2345C4_nt(){ note_ctor("S2345C4_nt", this);} // tgen

//skip512 S2345C4_nt

#else // __cplusplus

extern void _ZN10S2345C4_ntC1Ev();
extern void _ZN10S2345C4_ntD1Ev();
Name_Map name_map_S2345C4_nt[] = {
  NSPAIR(_ZN10S2345C4_ntC1Ev),
  NSPAIR(_ZN10S2345C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern void _ZN10S2345C4_ntD1Ev();
extern void _ZN10S2345C4_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
static  VTBL_ENTRY vtc_S2345C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
VTBL_ENTRY *P__ZTI10S2345C4_nt = _ZTI10S2345C4_nt; 
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
Class_Descriptor cd_S2345C4_nt = {  "S2345C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S2345C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2345C4_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  S2345C7_nt  {
  virtual  ~S2345C7_nt(); // _ZN10S2345C7_ntD1Ev
  virtual void  v8(); // _ZN10S2345C7_nt2v8Ev
  virtual void  v9(); // _ZN10S2345C7_nt2v9Ev
  virtual void  v10(); // _ZN10S2345C7_nt3v10Ev
  S2345C7_nt(); // tgen
};
//SIG(-1 S2345C7_nt) C1{ vd v1 v2 v3}


 S2345C7_nt ::~S2345C7_nt(){ note_dtor("S2345C7_nt", this);}
void  S2345C7_nt ::v8(){vfunc_called(this, "_ZN10S2345C7_nt2v8Ev");}
void  S2345C7_nt ::v9(){vfunc_called(this, "_ZN10S2345C7_nt2v9Ev");}
void  S2345C7_nt ::v10(){vfunc_called(this, "_ZN10S2345C7_nt3v10Ev");}
S2345C7_nt ::S2345C7_nt(){ note_ctor("S2345C7_nt", this);} // tgen

//skip512 S2345C7_nt

#else // __cplusplus

extern void _ZN10S2345C7_ntC1Ev();
extern void _ZN10S2345C7_ntD1Ev();
Name_Map name_map_S2345C7_nt[] = {
  NSPAIR(_ZN10S2345C7_ntC1Ev),
  NSPAIR(_ZN10S2345C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern void _ZN10S2345C7_ntD1Ev();
extern void _ZN10S2345C7_ntD0Ev();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2345C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
VTBL_ENTRY *P__ZTI10S2345C7_nt = _ZTI10S2345C7_nt; 
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
Class_Descriptor cd_S2345C7_nt = {  "S2345C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2345C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2345C7_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  S2345C3_nt  : S2345C4_nt , S2345C7_nt {
  void *s2345c3f0;
  char s2345c3f1;
  int s2345c3f2;
  virtual  ~S2345C3_nt(); // _ZN10S2345C3_ntD1Ev
  virtual void  v11(); // _ZN10S2345C3_nt3v11Ev
  virtual void  v12(); // _ZN10S2345C3_nt3v12Ev
  virtual void  v13(); // _ZN10S2345C3_nt3v13Ev
  virtual void  v14(); // _ZN10S2345C3_nt3v14Ev
  virtual void  v15(); // _ZN10S2345C3_nt3v15Ev
  virtual void  v16(); // _ZN10S2345C3_nt3v16Ev
  virtual void  v17(); // _ZN10S2345C3_nt3v17Ev
  virtual void  v18(); // _ZN10S2345C3_nt3v18Ev
  virtual void  v19(); // _ZN10S2345C3_nt3v19Ev
  virtual void  v20(); // _ZN10S2345C3_nt3v20Ev
  S2345C3_nt(); // tgen
};
//SIG(-1 S2345C3_nt) C1{ BC2{ vd v11 v12 v13 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v14 v15 v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fc Fi}


 S2345C3_nt ::~S2345C3_nt(){ note_dtor("S2345C3_nt", this);}
void  S2345C3_nt ::v11(){vfunc_called(this, "_ZN10S2345C3_nt3v11Ev");}
void  S2345C3_nt ::v12(){vfunc_called(this, "_ZN10S2345C3_nt3v12Ev");}
void  S2345C3_nt ::v13(){vfunc_called(this, "_ZN10S2345C3_nt3v13Ev");}
void  S2345C3_nt ::v14(){vfunc_called(this, "_ZN10S2345C3_nt3v14Ev");}
void  S2345C3_nt ::v15(){vfunc_called(this, "_ZN10S2345C3_nt3v15Ev");}
void  S2345C3_nt ::v16(){vfunc_called(this, "_ZN10S2345C3_nt3v16Ev");}
void  S2345C3_nt ::v17(){vfunc_called(this, "_ZN10S2345C3_nt3v17Ev");}
void  S2345C3_nt ::v18(){vfunc_called(this, "_ZN10S2345C3_nt3v18Ev");}
void  S2345C3_nt ::v19(){vfunc_called(this, "_ZN10S2345C3_nt3v19Ev");}
void  S2345C3_nt ::v20(){vfunc_called(this, "_ZN10S2345C3_nt3v20Ev");}
S2345C3_nt ::S2345C3_nt(){ note_ctor("S2345C3_nt", this);} // tgen

//skip512 S2345C3_nt

#else // __cplusplus

extern void _ZN10S2345C3_ntC1Ev();
extern void _ZN10S2345C3_ntD1Ev();
Name_Map name_map_S2345C3_nt[] = {
  NSPAIR(_ZN10S2345C3_ntC1Ev),
  NSPAIR(_ZN10S2345C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
static Base_Class bases_S2345C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S2345C7_nt,    ABISELECT(40,28), //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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern void _ZN10S2345C3_ntD1Ev();
extern void _ZN10S2345C3_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void ABISELECT(_ZThn40_N10S2345C3_ntD1Ev,_ZThn28_N10S2345C3_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2345C3_ntD0Ev,_ZThn28_N10S2345C3_ntD0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2345C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2345C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C3_ntD1Ev,_ZThn28_N10S2345C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C3_ntD0Ev,_ZThn28_N10S2345C3_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
VTBL_ENTRY *P__ZTI10S2345C3_nt = _ZTI10S2345C3_nt; 
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
Class_Descriptor cd_S2345C3_nt = {  "S2345C3_nt", // class name
  bases_S2345C3_nt, 2,
  &(vtc_S2345C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S2345C3_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2345C3_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C10  {
  virtual  ~S2345C10(); // _ZN8S2345C10D1Ev
  virtual void  v21(); // _ZN8S2345C103v21Ev
  virtual void  v22(); // _ZN8S2345C103v22Ev
  virtual void  v23(); // _ZN8S2345C103v23Ev
  S2345C10(); // tgen
};
//SIG(-1 S2345C10) C1{ vd v1 v2 v3}


 S2345C10 ::~S2345C10(){ note_dtor("S2345C10", this);}
void  S2345C10 ::v21(){vfunc_called(this, "_ZN8S2345C103v21Ev");}
void  S2345C10 ::v22(){vfunc_called(this, "_ZN8S2345C103v22Ev");}
void  S2345C10 ::v23(){vfunc_called(this, "_ZN8S2345C103v23Ev");}
S2345C10 ::S2345C10(){ note_ctor("S2345C10", this);} // tgen

static void Test_S2345C10()
{
  extern Class_Descriptor cd_S2345C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2345C10, buf);
    S2345C10 *dp, &lv = *(dp=new (buf) S2345C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2345C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2345C10)");
    test_class_info(&lv, &cd_S2345C10);
    dp->~S2345C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2345C10(Test_S2345C10, "S2345C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S2345C10C1Ev();
extern void _ZN8S2345C10D1Ev();
Name_Map name_map_S2345C10[] = {
  NSPAIR(_ZN8S2345C10C1Ev),
  NSPAIR(_ZN8S2345C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2345C10[];
extern void _ZN8S2345C10D1Ev();
extern void _ZN8S2345C10D0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
static  VTBL_ENTRY vtc_S2345C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2345C10[0]),
  (VTBL_ENTRY)&_ZN8S2345C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2345C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
};
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
Class_Descriptor cd_S2345C10 = {  "S2345C10", // class name
  0,0,//no base classes
  &(vtc_S2345C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2345C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2345C10),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  S2345C9_nt  : S2345C10 {
  ::S17556C15_nt s2345c9f0;
  ::S17556C3_nt s2345c9f1;
  char s2345c9f2;
  virtual  ~S2345C9_nt(); // _ZN10S2345C9_ntD1Ev
  virtual void  v24(); // _ZN10S2345C9_nt3v24Ev
  virtual void  v25(); // _ZN10S2345C9_nt3v25Ev
  virtual void  v26(); // _ZN10S2345C9_nt3v26Ev
  S2345C9_nt(); // tgen
};
//SIG(-1 S2345C9_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} Fc}


 S2345C9_nt ::~S2345C9_nt(){ note_dtor("S2345C9_nt", this);}
void  S2345C9_nt ::v24(){vfunc_called(this, "_ZN10S2345C9_nt3v24Ev");}
void  S2345C9_nt ::v25(){vfunc_called(this, "_ZN10S2345C9_nt3v25Ev");}
void  S2345C9_nt ::v26(){vfunc_called(this, "_ZN10S2345C9_nt3v26Ev");}
S2345C9_nt ::S2345C9_nt(){ note_ctor("S2345C9_nt", this);} // tgen

//skip512 S2345C9_nt

#else // __cplusplus

extern void _ZN10S2345C9_ntC1Ev();
extern void _ZN10S2345C9_ntD1Ev();
Name_Map name_map_S2345C9_nt[] = {
  NSPAIR(_ZN10S2345C9_ntC1Ev),
  NSPAIR(_ZN10S2345C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
static Base_Class bases_S2345C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S2345C9_nt[];
extern void _ZN10S2345C9_ntD1Ev();
extern void _ZN10S2345C9_ntD0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
static  VTBL_ENTRY vtc_S2345C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
VTBL_ENTRY *P__ZTI10S2345C9_nt = _ZTI10S2345C9_nt; 
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
Class_Descriptor cd_S2345C9_nt = {  "S2345C9_nt", // class name
  bases_S2345C9_nt, 1,
  &(vtc_S2345C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2345C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2345C9_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C8_nt  : S2345C9_nt {
  virtual  ~S2345C8_nt(); // _ZN10S2345C8_ntD1Ev
  virtual void  v27(); // _ZN10S2345C8_nt3v27Ev
  virtual void  v28(); // _ZN10S2345C8_nt3v28Ev
  virtual void  v29(); // _ZN10S2345C8_nt3v29Ev
  virtual void  v30(); // _ZN10S2345C8_nt3v30Ev
  S2345C8_nt(); // tgen
};
//SIG(-1 S2345C8_nt) C1{ BC2{ BC3{ vd v5 v6 v7} vd v8 v9 v10 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc} vd v1 v2 v3 v4}


 S2345C8_nt ::~S2345C8_nt(){ note_dtor("S2345C8_nt", this);}
void  S2345C8_nt ::v27(){vfunc_called(this, "_ZN10S2345C8_nt3v27Ev");}
void  S2345C8_nt ::v28(){vfunc_called(this, "_ZN10S2345C8_nt3v28Ev");}
void  S2345C8_nt ::v29(){vfunc_called(this, "_ZN10S2345C8_nt3v29Ev");}
void  S2345C8_nt ::v30(){vfunc_called(this, "_ZN10S2345C8_nt3v30Ev");}
S2345C8_nt ::S2345C8_nt(){ note_ctor("S2345C8_nt", this);} // tgen

//skip512 S2345C8_nt

#else // __cplusplus

extern void _ZN10S2345C8_ntC1Ev();
extern void _ZN10S2345C8_ntD1Ev();
Name_Map name_map_S2345C8_nt[] = {
  NSPAIR(_ZN10S2345C8_ntC1Ev),
  NSPAIR(_ZN10S2345C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
static Base_Class bases_S2345C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S2345C8_nt[];
extern void _ZN10S2345C8_ntD1Ev();
extern void _ZN10S2345C8_ntD0Ev();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
VTBL_ENTRY *P__ZTI10S2345C8_nt = _ZTI10S2345C8_nt; 
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
Class_Descriptor cd_S2345C8_nt = {  "S2345C8_nt", // class name
  bases_S2345C8_nt, 2,
  &(vtc_S2345C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2345C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2345C8_nt),14, //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  S2345C15_nt  : S1868C24_nt {
};
//SIG(-1 S2345C15_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S2345C15_nt

#else // __cplusplus

extern Class_Descriptor cd_S1868C24_nt;
static Base_Class bases_S2345C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C24_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2345C2_nt  : S2345C3_nt , S2345C8_nt {
  int s2345c2f0[3];
  char s2345c2f1;
  ::S2345C15_nt s2345c2f2;
  virtual  ~S2345C2_nt(); // _ZN10S2345C2_ntD1Ev
  virtual void  v31(); // _ZN10S2345C2_nt3v31Ev
  virtual void  v32(); // _ZN10S2345C2_nt3v32Ev
  virtual void  v33(); // _ZN10S2345C2_nt3v33Ev
  virtual void  v34(); // _ZN10S2345C2_nt3v34Ev
  virtual void  v35(); // _ZN10S2345C2_nt3v35Ev
  virtual void  v36(); // _ZN10S2345C2_nt3v36Ev
  S2345C2_nt(); // tgen
};
//SIG(-1 S2345C2_nt) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} BC6{ vd v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc Fi} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ FL[4]}} Fc} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 Fi[3] Fc FC14{ BC15{ m Fp Fi FC11 FC16{ m}}}}


 S2345C2_nt ::~S2345C2_nt(){ note_dtor("S2345C2_nt", this);}
void  S2345C2_nt ::v31(){vfunc_called(this, "_ZN10S2345C2_nt3v31Ev");}
void  S2345C2_nt ::v32(){vfunc_called(this, "_ZN10S2345C2_nt3v32Ev");}
void  S2345C2_nt ::v33(){vfunc_called(this, "_ZN10S2345C2_nt3v33Ev");}
void  S2345C2_nt ::v34(){vfunc_called(this, "_ZN10S2345C2_nt3v34Ev");}
void  S2345C2_nt ::v35(){vfunc_called(this, "_ZN10S2345C2_nt3v35Ev");}
void  S2345C2_nt ::v36(){vfunc_called(this, "_ZN10S2345C2_nt3v36Ev");}
S2345C2_nt ::S2345C2_nt(){ note_ctor("S2345C2_nt", this);} // tgen

//skip512 S2345C2_nt

#else // __cplusplus

extern void _ZN10S2345C2_ntC1Ev();
extern void _ZN10S2345C2_ntD1Ev();
Name_Map name_map_S2345C2_nt[] = {
  NSPAIR(_ZN10S2345C2_ntC1Ev),
  NSPAIR(_ZN10S2345C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
extern Class_Descriptor cd_S2345C3_nt;
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
extern Class_Descriptor cd_S2345C8_nt;
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
static Base_Class bases_S2345C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2345C7_nt,    ABISELECT(40,28), //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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2345C10,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2345C8_nt,    ABISELECT(64,44), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
extern void _ZN10S2345C2_ntD1Ev();
extern void _ZN10S2345C2_ntD0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void _ZN10S2345C2_nt3v31Ev();
extern void _ZN10S2345C2_nt3v32Ev();
extern void _ZN10S2345C2_nt3v33Ev();
extern void _ZN10S2345C2_nt3v34Ev();
extern void _ZN10S2345C2_nt3v35Ev();
extern void _ZN10S2345C2_nt3v36Ev();
extern void ABISELECT(_ZThn40_N10S2345C2_ntD1Ev,_ZThn28_N10S2345C2_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2345C2_ntD0Ev,_ZThn28_N10S2345C2_ntD0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N10S2345C2_ntD1Ev,_ZThn44_N10S2345C2_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2345C2_ntD0Ev,_ZThn44_N10S2345C2_ntD0Ev)();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2345C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v36Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C2_ntD1Ev,_ZThn28_N10S2345C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2345C2_ntD0Ev,_ZThn28_N10S2345C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI10S2345C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2345C2_ntD1Ev,_ZThn44_N10S2345C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2345C2_ntD0Ev,_ZThn44_N10S2345C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
VTBL_ENTRY *P__ZTI10S2345C2_nt = _ZTI10S2345C2_nt; 
extern  VTBL_ENTRY _ZTV10S2345C2_nt[];
Class_Descriptor cd_S2345C2_nt = {  "S2345C2_nt", // class name
  bases_S2345C2_nt, 6,
  &(vtc_S2345C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,128), // object size
  NSPAIRA(_ZTI10S2345C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2345C2_nt),44, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C19_nt  {
  void *s2345c19f0;
  virtual  ~S2345C19_nt(); // _ZN11S2345C19_ntD1Ev
  virtual void  v37(); // _ZN11S2345C19_nt3v37Ev
  virtual void  v38(); // _ZN11S2345C19_nt3v38Ev
  virtual void  v39(); // _ZN11S2345C19_nt3v39Ev
  virtual void  v40(); // _ZN11S2345C19_nt3v40Ev
  virtual void  v41(); // _ZN11S2345C19_nt3v41Ev
  virtual void  v42(); // _ZN11S2345C19_nt3v42Ev
  S2345C19_nt(); // tgen
};
//SIG(-1 S2345C19_nt) C1{ vd v1 v2 v3 v4 v5 v6 Fp}


 S2345C19_nt ::~S2345C19_nt(){ note_dtor("S2345C19_nt", this);}
void  S2345C19_nt ::v37(){vfunc_called(this, "_ZN11S2345C19_nt3v37Ev");}
void  S2345C19_nt ::v38(){vfunc_called(this, "_ZN11S2345C19_nt3v38Ev");}
void  S2345C19_nt ::v39(){vfunc_called(this, "_ZN11S2345C19_nt3v39Ev");}
void  S2345C19_nt ::v40(){vfunc_called(this, "_ZN11S2345C19_nt3v40Ev");}
void  S2345C19_nt ::v41(){vfunc_called(this, "_ZN11S2345C19_nt3v41Ev");}
void  S2345C19_nt ::v42(){vfunc_called(this, "_ZN11S2345C19_nt3v42Ev");}
S2345C19_nt ::S2345C19_nt(){ note_ctor("S2345C19_nt", this);} // tgen

//skip512 S2345C19_nt

#else // __cplusplus

extern void _ZN11S2345C19_ntC1Ev();
extern void _ZN11S2345C19_ntD1Ev();
Name_Map name_map_S2345C19_nt[] = {
  NSPAIR(_ZN11S2345C19_ntC1Ev),
  NSPAIR(_ZN11S2345C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2345C19_nt[];
extern void _ZN11S2345C19_ntD1Ev();
extern void _ZN11S2345C19_ntD0Ev();
extern void _ZN11S2345C19_nt3v37Ev();
extern void _ZN11S2345C19_nt3v38Ev();
extern void _ZN11S2345C19_nt3v39Ev();
extern void _ZN11S2345C19_nt3v40Ev();
extern void _ZN11S2345C19_nt3v41Ev();
extern void _ZN11S2345C19_nt3v42Ev();
static  VTBL_ENTRY vtc_S2345C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C19_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S2345C19_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S2345C19_nt[];
VTBL_ENTRY *P__ZTI11S2345C19_nt = _ZTI11S2345C19_nt; 
extern  VTBL_ENTRY _ZTV11S2345C19_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C21_nt  {
  ::S1868C23_nt s2345c21f0;
  void *s2345c21f1[3];
  char s2345c21f2;
  virtual  ~S2345C21_nt(); // _ZN11S2345C21_ntD1Ev
  virtual void  v44(); // _ZN11S2345C21_nt3v44Ev
  S2345C21_nt(); // tgen
};
//SIG(-1 S2345C21_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC5{ m}}} Fp[3] Fc}


 S2345C21_nt ::~S2345C21_nt(){ note_dtor("S2345C21_nt", this);}
void  S2345C21_nt ::v44(){vfunc_called(this, "_ZN11S2345C21_nt3v44Ev");}
S2345C21_nt ::S2345C21_nt(){ note_ctor("S2345C21_nt", this);} // tgen

//skip512 S2345C21_nt

#else // __cplusplus

extern void _ZN11S2345C21_ntC1Ev();
extern void _ZN11S2345C21_ntD1Ev();
Name_Map name_map_S2345C21_nt[] = {
  NSPAIR(_ZN11S2345C21_ntC1Ev),
  NSPAIR(_ZN11S2345C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
extern void _ZN11S2345C21_ntD1Ev();
extern void _ZN11S2345C21_ntD0Ev();
extern void _ZN11S2345C21_nt3v44Ev();
static  VTBL_ENTRY vtc_S2345C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_nt3v44Ev,
};
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
VTBL_ENTRY *P__ZTI11S2345C21_nt = _ZTI11S2345C21_nt; 
extern  VTBL_ENTRY _ZTV11S2345C21_nt[];
Class_Descriptor cd_S2345C21_nt = {  "S2345C21_nt", // class name
  0,0,//no base classes
  &(vtc_S2345C21_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S2345C21_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S2345C21_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C20_nt  : S2345C21_nt {
  void *s2345c20f0;
  virtual void  v43(); // _ZN11S2345C20_nt3v43Ev
  ~S2345C20_nt(); // tgen
  S2345C20_nt(); // tgen
};
//SIG(-1 S2345C20_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC6{ m}}} Fp[3] Fc} v1 Fp}


void  S2345C20_nt ::v43(){vfunc_called(this, "_ZN11S2345C20_nt3v43Ev");}
S2345C20_nt ::~S2345C20_nt(){ note_dtor("S2345C20_nt", this);} // tgen
S2345C20_nt ::S2345C20_nt(){ note_ctor("S2345C20_nt", this);} // tgen

//skip512 S2345C20_nt

#else // __cplusplus

extern void _ZN11S2345C20_ntC1Ev();
extern void _ZN11S2345C20_ntD1Ev();
Name_Map name_map_S2345C20_nt[] = {
  NSPAIR(_ZN11S2345C20_ntC1Ev),
  NSPAIR(_ZN11S2345C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C21_nt;
extern VTBL_ENTRY _ZTI11S2345C21_nt[];
extern  VTBL_ENTRY _ZTV11S2345C21_nt[];
static Base_Class bases_S2345C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI11S2345C20_nt[];
extern void _ZN11S2345C20_ntD1Ev();
extern void _ZN11S2345C20_ntD0Ev();
extern void _ZN11S2345C21_nt3v44Ev();
extern void _ZN11S2345C20_nt3v43Ev();
static  VTBL_ENTRY vtc_S2345C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2345C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S2345C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2345C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2345C21_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S2345C20_nt3v43Ev,
};
extern VTBL_ENTRY _ZTI11S2345C20_nt[];
VTBL_ENTRY *P__ZTI11S2345C20_nt = _ZTI11S2345C20_nt; 
extern  VTBL_ENTRY _ZTV11S2345C20_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2345C1  : S2345C2_nt {
  ::S2345C19_nt s2345c1f0;
  ::S2345C20_nt s2345c1f1;
  int s2345c1f2;
  ::S17556C5_nt s2345c1f3;
  void *s2345c1f4;
  int s2345c1f5;
  virtual  ~S2345C1(); // _ZN7S2345C1D1Ev
  virtual void  v1(); // _ZN7S2345C12v1Ev
  virtual void  v2(); // _ZN7S2345C12v2Ev
  virtual void  v3(); // _ZN7S2345C12v3Ev
  virtual void  v4(); // _ZN7S2345C12v4Ev
  S2345C1(); // tgen
};
//SIG(1 S2345C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} BC7{ vd v8 v9 v10} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp Fc Fi} BC8{ BC9{ BC10{ vd v21 v22 v23} vd v24 v25 v26 FC11{ m Fp Fi[2] FC12{ m}} FC13{ m FC14{ FL[4]}} Fc} vd v27 v28 v29 v30} vd v31 v32 v33 v34 v35 v36 Fi[3] Fc FC15{ BC16{ m Fp Fi FC12 FC17{ m}}}} vd v1 v2 v3 v4 FC18{ vd v37 v38 v39 v40 v41 v42 Fp} FC19{ BC20{ vd v44 FC21{ m FC16} Fp[3] Fc} v43 Fp} Fi FC5 Fp Fi}


 S2345C1 ::~S2345C1(){ note_dtor("S2345C1", this);}
void  S2345C1 ::v1(){vfunc_called(this, "_ZN7S2345C12v1Ev");}
void  S2345C1 ::v2(){vfunc_called(this, "_ZN7S2345C12v2Ev");}
void  S2345C1 ::v3(){vfunc_called(this, "_ZN7S2345C12v3Ev");}
void  S2345C1 ::v4(){vfunc_called(this, "_ZN7S2345C12v4Ev");}
S2345C1 ::S2345C1(){ note_ctor("S2345C1", this);} // tgen

static void Test_S2345C1()
{
  extern Class_Descriptor cd_S2345C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,50)];
    init_test(&cd_S2345C1, buf);
    S2345C1 *dp, &lv = *(dp=new (buf) S2345C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,196), "sizeof(S2345C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2345C1)");
    check_base_class_offset(lv, (S2345C4_nt*)(S2345C3_nt*)(S2345C2_nt*), 0, "S2345C1");
    check_base_class_offset(lv, (S2345C7_nt*)(S2345C3_nt*)(S2345C2_nt*), ABISELECT(40,28), "S2345C1");
    check_base_class_offset(lv, (S2345C3_nt*)(S2345C2_nt*), 0, "S2345C1");
    check_base_class_offset(lv, (S2345C10*)(S2345C9_nt*)(S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C9_nt*)(S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C8_nt*)(S2345C2_nt*), ABISELECT(64,44), "S2345C1");
    check_base_class_offset(lv, (S2345C2_nt*), 0, "S2345C1");
    check_field_offset(lv, s2345c1f0, ABISELECT(168,128), "S2345C1.s2345c1f0");
    check_field_offset(lv, s2345c1f1, ABISELECT(184,136), "S2345C1.s2345c1f1");
    check_field_offset(lv, s2345c1f2, ABISELECT(248,172), "S2345C1.s2345c1f2");
    check_field_offset(lv, s2345c1f3, ABISELECT(256,176), "S2345C1.s2345c1f3");
    check_field_offset(lv, s2345c1f4, ABISELECT(272,188), "S2345C1.s2345c1f4");
    check_field_offset(lv, s2345c1f5, ABISELECT(280,192), "S2345C1.s2345c1f5");
    test_class_info(&lv, &cd_S2345C1);
    dp->~S2345C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2345C1(Test_S2345C1, "S2345C1", ABISELECT(288,196));

#else // __cplusplus

extern void _ZN7S2345C1C1Ev();
extern void _ZN7S2345C1D1Ev();
Name_Map name_map_S2345C1[] = {
  NSPAIR(_ZN7S2345C1C1Ev),
  NSPAIR(_ZN7S2345C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2345C4_nt;
extern VTBL_ENTRY _ZTI10S2345C4_nt[];
extern  VTBL_ENTRY _ZTV10S2345C4_nt[];
extern Class_Descriptor cd_S2345C7_nt;
extern VTBL_ENTRY _ZTI10S2345C7_nt[];
extern  VTBL_ENTRY _ZTV10S2345C7_nt[];
extern Class_Descriptor cd_S2345C3_nt;
extern VTBL_ENTRY _ZTI10S2345C3_nt[];
extern  VTBL_ENTRY _ZTV10S2345C3_nt[];
extern Class_Descriptor cd_S2345C10;
extern VTBL_ENTRY _ZTI8S2345C10[];
extern  VTBL_ENTRY _ZTV8S2345C10[];
extern Class_Descriptor cd_S2345C9_nt;
extern VTBL_ENTRY _ZTI10S2345C9_nt[];
extern  VTBL_ENTRY _ZTV10S2345C9_nt[];
extern Class_Descriptor cd_S2345C8_nt;
extern VTBL_ENTRY _ZTI10S2345C8_nt[];
extern  VTBL_ENTRY _ZTV10S2345C8_nt[];
extern Class_Descriptor cd_S2345C2_nt;
extern VTBL_ENTRY _ZTI10S2345C2_nt[];
extern  VTBL_ENTRY _ZTV10S2345C2_nt[];
static Base_Class bases_S2345C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2345C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2345C7_nt,    ABISELECT(40,28), //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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2345C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2345C10,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2345C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2345C8_nt,    ABISELECT(64,44), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2345C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2345C1[];
extern void _ZN7S2345C1D1Ev();
extern void _ZN7S2345C1D0Ev();
extern void _ZN10S2345C4_nt2v5Ev();
extern void _ZN10S2345C4_nt2v6Ev();
extern void _ZN10S2345C4_nt2v7Ev();
extern void _ZN10S2345C3_nt3v11Ev();
extern void _ZN10S2345C3_nt3v12Ev();
extern void _ZN10S2345C3_nt3v13Ev();
extern void _ZN10S2345C3_nt3v14Ev();
extern void _ZN10S2345C3_nt3v15Ev();
extern void _ZN10S2345C3_nt3v16Ev();
extern void _ZN10S2345C3_nt3v17Ev();
extern void _ZN10S2345C3_nt3v18Ev();
extern void _ZN10S2345C3_nt3v19Ev();
extern void _ZN10S2345C3_nt3v20Ev();
extern void _ZN10S2345C2_nt3v31Ev();
extern void _ZN10S2345C2_nt3v32Ev();
extern void _ZN10S2345C2_nt3v33Ev();
extern void _ZN10S2345C2_nt3v34Ev();
extern void _ZN10S2345C2_nt3v35Ev();
extern void _ZN10S2345C2_nt3v36Ev();
extern void _ZN7S2345C12v1Ev();
extern void _ZN7S2345C12v2Ev();
extern void _ZN7S2345C12v3Ev();
extern void _ZN7S2345C12v4Ev();
extern void ABISELECT(_ZThn40_N7S2345C1D1Ev,_ZThn28_N7S2345C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2345C1D0Ev,_ZThn28_N7S2345C1D0Ev)();
extern void _ZN10S2345C7_nt2v8Ev();
extern void _ZN10S2345C7_nt2v9Ev();
extern void _ZN10S2345C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N7S2345C1D1Ev,_ZThn44_N7S2345C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2345C1D0Ev,_ZThn44_N7S2345C1D0Ev)();
extern void _ZN8S2345C103v21Ev();
extern void _ZN8S2345C103v22Ev();
extern void _ZN8S2345C103v23Ev();
extern void _ZN10S2345C9_nt3v24Ev();
extern void _ZN10S2345C9_nt3v25Ev();
extern void _ZN10S2345C9_nt3v26Ev();
extern void _ZN10S2345C8_nt3v27Ev();
extern void _ZN10S2345C8_nt3v28Ev();
extern void _ZN10S2345C8_nt3v29Ev();
extern void _ZN10S2345C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2345C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&_ZN7S2345C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2345C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2345C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2345C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2345C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2345C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2345C1D1Ev,_ZThn28_N7S2345C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2345C1D0Ev,_ZThn28_N7S2345C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2345C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2345C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2345C1D1Ev,_ZThn44_N7S2345C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2345C1D0Ev,_ZThn44_N7S2345C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2345C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2345C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2345C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2345C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S2345C1[];
extern  VTBL_ENTRY _ZTV7S2345C1[];
Class_Descriptor cd_S2345C1 = {  "S2345C1", // class name
  bases_S2345C1, 7,
  &(vtc_S2345C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,196), // object size
  NSPAIRA(_ZTI7S2345C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2345C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C4  {
  void *s8033c4f0[3];
  __tsi64 s8033c4f1[8];
  void  mf8033c4(); // _ZN7S8033C48mf8033c4Ev
};
//SIG(-1 S8033C4) C1{ m Fp[3] FL[8]}


void  S8033C4 ::mf8033c4(){}

static void Test_S8033C4()
{
  {
    init_simple_test("S8033C4");
    S8033C4 lv;
    check2(sizeof(lv), ABISELECT(88,76), "sizeof(S8033C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8033C4)");
    check_field_offset(lv, s8033c4f0, 0, "S8033C4.s8033c4f0");
    check_field_offset(lv, s8033c4f1, ABISELECT(24,12), "S8033C4.s8033c4f1");
  }
}
static Arrange_To_Call_Me vS8033C4(Test_S8033C4, "S8033C4", ABISELECT(88,76));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S8033C4[];
VTBL_ENTRY *P__ZTI7S8033C4 = _ZTI7S8033C4; 
Class_Descriptor cd_S8033C4 = {  "S8033C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(88,76), // object size
  NSPAIRA(_ZTI7S8033C4),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  S8033C7  {
  char s8033c7f0;
  char  :0;
  long s8033c7f2[8];
  long double s8033c7f3;
  void  mf8033c7(); // _ZN7S8033C78mf8033c7Ev
  virtual  ~S8033C7(); // _ZN7S8033C7D1Ev
  S8033C7(); // tgen
};
//SIG(-1 S8033C7) C1{ vd m Fc Fc:0 Fl[8] FD}


void  S8033C7 ::mf8033c7(){}
 S8033C7 ::~S8033C7(){ note_dtor("S8033C7", this);}
S8033C7 ::S8033C7(){ note_ctor("S8033C7", this);} // tgen

static void Test_S8033C7()
{
  extern Class_Descriptor cd_S8033C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S8033C7, buf);
    S8033C7 *dp, &lv = *(dp=new (buf) S8033C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S8033C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C7)");
    check_field_offset(lv, s8033c7f0, ABISELECT(8,4), "S8033C7.s8033c7f0");
    check_field_offset(lv, s8033c7f2, ABISELECT(16,8), "S8033C7.s8033c7f2");
    check_field_offset(lv, s8033c7f3, ABISELECT(80,40), "S8033C7.s8033c7f3");
    test_class_info(&lv, &cd_S8033C7);
    dp->~S8033C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C7(Test_S8033C7, "S8033C7", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S8033C7C1Ev();
extern void _ZN7S8033C7D1Ev();
Name_Map name_map_S8033C7[] = {
  NSPAIR(_ZN7S8033C7C1Ev),
  NSPAIR(_ZN7S8033C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8033C7[];
extern void _ZN7S8033C7D1Ev();
extern void _ZN7S8033C7D0Ev();
static  VTBL_ENTRY vtc_S8033C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C7[0]),
  (VTBL_ENTRY)&_ZN7S8033C7D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
Class_Descriptor cd_S8033C7 = {  "S8033C7", // class name
  0,0,//no base classes
  &(vtc_S8033C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S8033C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8033C7),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  S8033C8  : S8033C7 {
  void *s8033c8f0;
  ::S20291C14_nt s8033c8f1;
  void *s8033c8f2;
  long double s8033c8f3;
  ~S8033C8(); // tgen
  S8033C8(); // tgen
};
//SIG(-1 S8033C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S8033C8 ::~S8033C8(){ note_dtor("S8033C8", this);} // tgen
S8033C8 ::S8033C8(){ note_ctor("S8033C8", this);} // tgen

static void Test_S8033C8()
{
  extern Class_Descriptor cd_S8033C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S8033C8, buf);
    S8033C8 *dp, &lv = *(dp=new (buf) S8033C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S8033C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C8)");
    check_base_class_offset(lv, (S8033C7*), 0, "S8033C8");
    check_field_offset(lv, s8033c8f0, ABISELECT(96,52), "S8033C8.s8033c8f0");
    check_field_offset(lv, s8033c8f1, ABISELECT(104,56), "S8033C8.s8033c8f1");
    check_field_offset(lv, s8033c8f2, ABISELECT(112,60), "S8033C8.s8033c8f2");
    check_field_offset(lv, s8033c8f3, ABISELECT(128,64), "S8033C8.s8033c8f3");
    test_class_info(&lv, &cd_S8033C8);
    dp->~S8033C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C8(Test_S8033C8, "S8033C8", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN7S8033C8C1Ev();
extern void _ZN7S8033C8D1Ev();
Name_Map name_map_S8033C8[] = {
  NSPAIR(_ZN7S8033C8C1Ev),
  NSPAIR(_ZN7S8033C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8033C8[];
extern void _ZN7S8033C8D1Ev();
extern void _ZN7S8033C8D0Ev();
static  VTBL_ENTRY vtc_S8033C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C8[0]),
  (VTBL_ENTRY)&_ZN7S8033C8D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C8D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
Class_Descriptor cd_S8033C8 = {  "S8033C8", // class name
  bases_S8033C8, 1,
  &(vtc_S8033C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI7S8033C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8033C8),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  S8033C10  : S8033C8 , virtual S8033C7 {
  ::S8033C7 s8033c10f0;
  void *s8033c10f1;
  virtual  ~S8033C10(); // _ZN8S8033C10D2Ev
  S8033C10(); // tgen
};
//SIG(-1 S8033C10) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S8033C10 ::~S8033C10(){ note_dtor("S8033C10", this);}
S8033C10 ::S8033C10(){ note_ctor("S8033C10", this);} // tgen

static void Test_S8033C10()
{
  extern Class_Descriptor cd_S8033C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S8033C10, buf);
    S8033C10 *dp, &lv = *(dp=new (buf) S8033C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S8033C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C10)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), 0, "S8033C10");
    check_base_class_offset(lv, (S8033C8*), 0, "S8033C10");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S8033C10");
    check_field_offset(lv, s8033c10f0, ABISELECT(144,76), "S8033C10.s8033c10f0");
    check_field_offset(lv, s8033c10f1, ABISELECT(240,128), "S8033C10.s8033c10f1");
    test_class_info(&lv, &cd_S8033C10);
    dp->~S8033C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C10(Test_S8033C10, "S8033C10", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S8033C10C1Ev();
extern void _ZN8S8033C10D2Ev();
Name_Map name_map_S8033C10[] = {
  NSPAIR(_ZN8S8033C10C1Ev),
  NSPAIR(_ZN8S8033C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S8033C10[];
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C10[];
static  VTT_ENTRY vtt_S8033C10[] = {
  {&(_ZTV8S8033C10[3]),  3,10},
  {&(_ZTV8S8033C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C10 = {  "S8033C10", // class name
  bases_S8033C10, 3,
  &(vtc_S8033C10[0]), // expected_vtbl_contents
  &(vtt_S8033C10[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S8033C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C6  : S8033C7 , virtual S8033C8 {
  int s8033c6f0;
  char s8033c6f1;
  void *s8033c6f2;
  int s8033c6f3;
  void *s8033c6f4[2];
  ::S8033C10 s8033c6f5;
  virtual  ~S8033C6(); // _ZN7S8033C6D2Ev
  virtual void  v1(); // _ZN7S8033C62v1Ev
  S8033C6(); // tgen
};
//SIG(-1 S8033C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S8033C6 ::~S8033C6(){ note_dtor("S8033C6", this);}
void  S8033C6 ::v1(){vfunc_called(this, "_ZN7S8033C62v1Ev");}
S8033C6 ::S8033C6(){ note_ctor("S8033C6", this);} // tgen

static void Test_S8033C6()
{
  extern Class_Descriptor cd_S8033C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S8033C6, buf);
    S8033C6 *dp, &lv = *(dp=new (buf) S8033C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S8033C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C6)");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8033C6");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(496,260), "S8033C6");
    check_base_class_offset(lv, (S8033C8*), ABISELECT(496,260), "S8033C6");
    check_field_offset(lv, s8033c6f0, ABISELECT(96,52), "S8033C6.s8033c6f0");
    check_field_offset(lv, s8033c6f1, ABISELECT(100,56), "S8033C6.s8033c6f1");
    check_field_offset(lv, s8033c6f2, ABISELECT(104,60), "S8033C6.s8033c6f2");
    check_field_offset(lv, s8033c6f3, ABISELECT(112,64), "S8033C6.s8033c6f3");
    check_field_offset(lv, s8033c6f4, ABISELECT(120,68), "S8033C6.s8033c6f4");
    check_field_offset(lv, s8033c6f5, ABISELECT(144,76), "S8033C6.s8033c6f5");
    test_class_info(&lv, &cd_S8033C6);
    dp->~S8033C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C6(Test_S8033C6, "S8033C6", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN7S8033C6C1Ev();
extern void _ZN7S8033C6D2Ev();
Name_Map name_map_S8033C6[] = {
  NSPAIR(_ZN7S8033C6C1Ev),
  NSPAIR(_ZN7S8033C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
static Base_Class bases_S8033C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C6[];
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C6[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S8033C6[];
static  VTT_ENTRY vtt_S8033C6[] = {
  {&(_ZTV7S8033C6[3]),  3,11},
  {&(_ZTV7S8033C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C6 = {  "S8033C6", // class name
  bases_S8033C6, 3,
  &(vtc_S8033C6[0]), // expected_vtbl_contents
  &(vtt_S8033C6[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI7S8033C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8033C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C11  : virtual S8033C8 {
  char s8033c11f0;
  short s8033c11f1;
  long double s8033c11f2;
  void *s8033c11f3[2];
  virtual void  v2(); // _ZN8S8033C112v2Ev
  ~S8033C11(); // tgen
  S8033C11(); // tgen
};
//SIG(-1 S8033C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S8033C11 ::v2(){vfunc_called(this, "_ZN8S8033C112v2Ev");}
S8033C11 ::~S8033C11(){ note_dtor("S8033C11", this);} // tgen
S8033C11 ::S8033C11(){ note_ctor("S8033C11", this);} // tgen

static void Test_S8033C11()
{
  extern Class_Descriptor cd_S8033C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S8033C11, buf);
    S8033C11 *dp, &lv = *(dp=new (buf) S8033C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S8033C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C11)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(48,28), "S8033C11");
    check_base_class_offset(lv, (S8033C8*), ABISELECT(48,28), "S8033C11");
    check_field_offset(lv, s8033c11f0, ABISELECT(8,4), "S8033C11.s8033c11f0");
    check_field_offset(lv, s8033c11f1, ABISELECT(10,6), "S8033C11.s8033c11f1");
    check_field_offset(lv, s8033c11f2, ABISELECT(16,8), "S8033C11.s8033c11f2");
    check_field_offset(lv, s8033c11f3, ABISELECT(32,20), "S8033C11.s8033c11f3");
    test_class_info(&lv, &cd_S8033C11);
    dp->~S8033C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C11(Test_S8033C11, "S8033C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S8033C11C1Ev();
extern void _ZN8S8033C11D1Ev();
Name_Map name_map_S8033C11[] = {
  NSPAIR(_ZN8S8033C11C1Ev),
  NSPAIR(_ZN8S8033C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
static Base_Class bases_S8033C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C11[];
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S8033C11D1Ev,_ZThn28_N8S8033C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S8033C11D0Ev,_ZThn28_N8S8033C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C11[];
static  VTT_ENTRY vtt_S8033C11[] = {
  {&(_ZTV8S8033C11[3]),  3,11},
  {&(_ZTV8S8033C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8033C11D0Ev,_ZThn28_N8S8033C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8033C11D1Ev,_ZThn28_N8S8033C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C11 = {  "S8033C11", // class name
  bases_S8033C11, 2,
  &(vtc_S8033C11[0]), // expected_vtbl_contents
  &(vtt_S8033C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S8033C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S8033C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C14  : S8033C7 , virtual S8033C6 {
  void *s8033c14f0;
  __tsi64 s8033c14f1[2];
  char s8033c14f2;
  void *s8033c14f3;
  int s8033c14f4;
  virtual  ~S8033C14(); // _ZN8S8033C14D2Ev
  S8033C14(); // tgen
};
//SIG(-1 S8033C14) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S8033C14 ::~S8033C14(){ note_dtor("S8033C14", this);}
S8033C14 ::S8033C14(){ note_ctor("S8033C14", this);} // tgen

static void Test_S8033C14()
{
  extern Class_Descriptor cd_S8033C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S8033C14, buf);
    S8033C14 *dp, &lv = *(dp=new (buf) S8033C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S8033C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C14)");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8033C14");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(144,84), "S8033C14");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(640,344), "S8033C14");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(640,344), "S8033C14");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(144,84), "S8033C14");
    check_field_offset(lv, s8033c14f0, ABISELECT(96,52), "S8033C14.s8033c14f0");
    check_field_offset(lv, s8033c14f1, ABISELECT(104,56), "S8033C14.s8033c14f1");
    check_field_offset(lv, s8033c14f2, ABISELECT(120,72), "S8033C14.s8033c14f2");
    check_field_offset(lv, s8033c14f3, ABISELECT(128,76), "S8033C14.s8033c14f3");
    check_field_offset(lv, s8033c14f4, ABISELECT(136,80), "S8033C14.s8033c14f4");
    test_class_info(&lv, &cd_S8033C14);
    dp->~S8033C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C14(Test_S8033C14, "S8033C14", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S8033C14C1Ev();
extern void _ZN8S8033C14D2Ev();
Name_Map name_map_S8033C14[] = {
  NSPAIR(_ZN8S8033C14C1Ev),
  NSPAIR(_ZN8S8033C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
static Base_Class bases_S8033C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(144,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S8033C14[];
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S8033C14D1Ev,_ZThn84_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S8033C14D0Ev,_ZThn84_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn640_N8S8033C14D1Ev,_ZThn344_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn640_N8S8033C14D0Ev,_ZThn344_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C14[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C14[];
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C14[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C14[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
static  VTT_ENTRY vtt_S8033C14[] = {
  {&(_ZTV8S8033C14[4]),  4,19},
  {&(_ZTV8S8033C14[11]),  11,19},
  {&(_ZTV8S8033C14[17]),  17,19},
  {&(_tg__ZTV7S8033C6__8S8033C14[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8033C14D0Ev,_ZThn344_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8033C14D1Ev,_ZThn344_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8033C14D0Ev,_ZThn84_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8033C14D1Ev,_ZThn84_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C14 = {  "S8033C14", // class name
  bases_S8033C14, 5,
  &(vtc_S8033C14[0]), // expected_vtbl_contents
  &(vtt_S8033C14[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S8033C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C14),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C14),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C13  : S8033C14 , virtual S8033C11 {
  char s8033c13f0;
  int s8033c13f1:32;
  virtual  ~S8033C13(); // _ZN8S8033C13D2Ev
  S8033C13(); // tgen
};
//SIG(-1 S8033C13) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S8033C13 ::~S8033C13(){ note_dtor("S8033C13", this);}
S8033C13 ::S8033C13(){ note_ctor("S8033C13", this);} // tgen

static void Test_S8033C13()
{
  extern Class_Descriptor cd_S8033C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S8033C13, buf);
    S8033C13 *dp, &lv = *(dp=new (buf) S8033C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S8033C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C13)");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*), 0, "S8033C13");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(160,92), "S8033C13");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(656,352), "S8033C13");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*), ABISELECT(160,92), "S8033C13");
    check_base_class_offset(lv, (S8033C14*), 0, "S8033C13");
    check_base_class_offset(lv, (S8033C11*), ABISELECT(800,428), "S8033C13");
    check_field_offset(lv, s8033c13f0, ABISELECT(140,84), "S8033C13.s8033c13f0");
    set_bf_and_test(lv, s8033c13f1, ABISELECT(144,88), 0, 32, 1, "S8033C13");
    set_bf_and_test(lv, s8033c13f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S8033C13");
    test_class_info(&lv, &cd_S8033C13);
    dp->~S8033C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C13(Test_S8033C13, "S8033C13", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S8033C13C1Ev();
extern void _ZN8S8033C13D2Ev();
Name_Map name_map_S8033C13[] = {
  NSPAIR(_ZN8S8033C13C1Ev),
  NSPAIR(_ZN8S8033C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
static Base_Class bases_S8033C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(656,352), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8033C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C11,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C13[];
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn656_N8S8033C13D1Ev,_ZThn352_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn656_N8S8033C13D0Ev,_ZThn352_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn800_N8S8033C13D1Ev,_ZThn428_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn800_N8S8033C13D0Ev,_ZThn428_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8033C13[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S8033C13[];
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C14__8S8033C13[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C14D1Ev,_ZThn92_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C14D0Ev,_ZThn92_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C14__8S8033C13[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn656_N8S8033C14D1Ev,_ZThn352_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn656_N8S8033C14D0Ev,_ZThn352_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C14__8S8033C13[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__8S8033C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
static  VTT_ENTRY vtt_S8033C13[] = {
  {&(_ZTV8S8033C13[5]),  5,28},
  {&(_tg__ZTV8S8033C14__8S8033C13[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C14__8S8033C13[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C14__8S8033C13[3]),  3,5},
  {&(_ZTV8S8033C13[12]),  12,28},
  {&(_ZTV8S8033C13[18]),  18,28},
  {&(_ZTV8S8033C13[25]),  25,28},
  {&(_tg__ZTV7S8033C6__8S8033C13[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C13[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__8S8033C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C14D0Ev,_ZThn352_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C14D1Ev,_ZThn352_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C14D0Ev,_ZThn92_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C14D1Ev,_ZThn92_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C13D0Ev,_ZThn428_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C13D1Ev,_ZThn428_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C13D0Ev,_ZThn352_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8033C13D1Ev,_ZThn352_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C13 = {  "S8033C13", // class name
  bases_S8033C13, 7,
  &(vtc_S8033C13[0]), // expected_vtbl_contents
  &(vtt_S8033C13[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S8033C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8033C13),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C13),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C15  {
  long double s8033c15f0;
  void *s8033c15f1;
  ::S8033C7 s8033c15f2;
  __tsi64 s8033c15f3;
  long double s8033c15f4;
  int s8033c15f5;
  virtual void  v3(); // _ZN8S8033C152v3Ev
  ~S8033C15(); // tgen
  S8033C15(); // tgen
};
//SIG(-1 S8033C15) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S8033C15 ::v3(){vfunc_called(this, "_ZN8S8033C152v3Ev");}
S8033C15 ::~S8033C15(){ note_dtor("S8033C15", this);} // tgen
S8033C15 ::S8033C15(){ note_ctor("S8033C15", this);} // tgen

static void Test_S8033C15()
{
  extern Class_Descriptor cd_S8033C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S8033C15, buf);
    S8033C15 *dp, &lv = *(dp=new (buf) S8033C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S8033C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C15)");
    check_field_offset(lv, s8033c15f0, ABISELECT(16,4), "S8033C15.s8033c15f0");
    check_field_offset(lv, s8033c15f1, ABISELECT(32,16), "S8033C15.s8033c15f1");
    check_field_offset(lv, s8033c15f2, ABISELECT(48,20), "S8033C15.s8033c15f2");
    check_field_offset(lv, s8033c15f3, ABISELECT(144,72), "S8033C15.s8033c15f3");
    check_field_offset(lv, s8033c15f4, ABISELECT(160,80), "S8033C15.s8033c15f4");
    check_field_offset(lv, s8033c15f5, ABISELECT(176,92), "S8033C15.s8033c15f5");
    test_class_info(&lv, &cd_S8033C15);
    dp->~S8033C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C15(Test_S8033C15, "S8033C15", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN8S8033C15C1Ev();
extern void _ZN8S8033C15D1Ev();
Name_Map name_map_S8033C15[] = {
  NSPAIR(_ZN8S8033C15C1Ev),
  NSPAIR(_ZN8S8033C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S8033C15[];
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C15[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
Class_Descriptor cd_S8033C15 = {  "S8033C15", // class name
  0,0,//no base classes
  &(vtc_S8033C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI8S8033C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S8033C15),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  S8033C12  : virtual S8033C10 , virtual S8033C6 , virtual S8033C13 , virtual S8033C4 , virtual S8033C15 {
  void *s8033c12f0;
  ::S8033C15 s8033c12f1[3];
  ::S8033C15 s8033c12f2;
  char s8033c12f3;
  virtual  ~S8033C12(); // _ZN8S8033C12D2Ev
  S8033C12(); // tgen
};
//SIG(-1 S8033C12) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S8033C12 ::~S8033C12(){ note_dtor("S8033C12", this);}
S8033C12 ::S8033C12(){ note_ctor("S8033C12", this);} // tgen

static void Test_S8033C12()
{
  extern Class_Descriptor cd_S8033C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S8033C12, buf);
    S8033C12 *dp, &lv = *(dp=new (buf) S8033C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S8033C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C12)");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(800,396), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(800,396), "S8033C12");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(1056,528), "S8033C12");
    check_base_class_offset(lv, (S8033C10*), ABISELECT(800,396), "S8033C12");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(1152,580), "S8033C12");
    /*is_ambiguous_... S8033C12::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(1648,840), "S8033C12");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(1152,580), "S8033C12");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(1152,580), "S8033C12");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(1952,1008), "S8033C12");
    check_base_class_offset(lv, (S8033C13*), ABISELECT(1792,916), "S8033C12");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S8033C12");
    check_base_class_offset(lv, (S8033C15*), ABISELECT(2096,1112), "S8033C12");
    check_field_offset(lv, s8033c12f0, ABISELECT(8,4), "S8033C12.s8033c12f0");
    check_field_offset(lv, s8033c12f1, ABISELECT(16,8), "S8033C12.s8033c12f1");
    check_field_offset(lv, s8033c12f2, ABISELECT(592,296), "S8033C12.s8033c12f2");
    check_field_offset(lv, s8033c12f3, ABISELECT(784,392), "S8033C12.s8033c12f3");
    test_class_info(&lv, &cd_S8033C12);
    dp->~S8033C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C12(Test_S8033C12, "S8033C12", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S8033C12C1Ev();
extern void _ZN8S8033C12D2Ev();
Name_Map name_map_S8033C12[] = {
  NSPAIR(_ZN8S8033C12C1Ev),
  NSPAIR(_ZN8S8033C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
static Base_Class bases_S8033C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C8,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C14,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8033C11,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S8033C13,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8033C15,    ABISELECT(2096,1112), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8033C12[];
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn800_N8S8033C12D1Ev,_ZThn396_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn800_N8S8033C12D0Ev,_ZThn396_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1056_N8S8033C12D1Ev,_ZThn528_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1056_N8S8033C12D0Ev,_ZThn528_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1152_N8S8033C12D1Ev,_ZThn580_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1152_N8S8033C12D0Ev,_ZThn580_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1648_N8S8033C12D1Ev,_ZThn840_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1648_N8S8033C12D0Ev,_ZThn840_N8S8033C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1792_N8S8033C12D1Ev,_ZThn916_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1792_N8S8033C12D0Ev,_ZThn916_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1952_N8S8033C12D1Ev,_ZThn1008_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1952_N8S8033C12D0Ev,_ZThn1008_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C12[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV8S8033C12[];
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__8S8033C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__8S8033C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C12[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__8S8033C12[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__8S8033C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__8S8033C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__8S8033C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__8S8033C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__8S8033C12[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C12[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__8S8033C12[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
static  VTT_ENTRY vtt_S8033C12[] = {
  {&(_ZTV8S8033C12[10]),  10,56},
  {&(_ZTV8S8033C12[16]),  16,56},
  {&(_ZTV8S8033C12[21]),  21,56},
  {&(_ZTV8S8033C12[28]),  28,56},
  {&(_ZTV8S8033C12[34]),  34,56},
  {&(_ZTV8S8033C12[42]),  42,56},
  {&(_ZTV8S8033C12[49]),  49,56},
  {&(_ZTV8S8033C12[55]),  55,56},
  {&(_tg__ZTV8S8033C10__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C12[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__8S8033C12[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C12[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__8S8033C12[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__8S8033C12[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__8S8033C12[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__8S8033C12[5]),  5,8},
  {&(_tg__ZTV8S8033C11__8S8033C12[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__8S8033C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D0Ev,_ZThn92_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8033C13D1Ev,_ZThn92_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8033C12D0Ev,_ZThn1008_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8033C12D1Ev,_ZThn1008_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8033C12D0Ev,_ZThn916_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8033C12D1Ev,_ZThn916_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8033C12D0Ev,_ZThn840_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8033C12D0Ev,_ZThn528_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8033C12D1Ev,_ZThn840_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8033C12D1Ev,_ZThn528_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8033C12D0Ev,_ZThn580_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C12D0Ev,_ZThn396_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8033C12D1Ev,_ZThn580_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8033C12D1Ev,_ZThn396_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C12 = {  "S8033C12", // class name
  bases_S8033C12, 14,
  &(vtc_S8033C12[0]), // expected_vtbl_contents
  &(vtt_S8033C12[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S8033C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8033C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8033C12),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C5  : virtual S8033C6 , S8033C4 , virtual S8033C11 , S8033C12 {
  ::S8033C15 s8033c5f0;
  void *s8033c5f1;
  __tsi64 s8033c5f2[2];
  int s8033c5f3:31;
  int s8033c5f4;
  ::S20291C14_nt s8033c5f5;
  ::S8033C15 s8033c5f6;
  ::S8033C15 s8033c5f7;
  void *s8033c5f8;
  ~S8033C5(); // tgen
  S8033C5(); // tgen
};
//SIG(-1 S8033C5) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL[2] Fc Fp Fi} VBC8 vd Fc Fi:32} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp FL[2] Fi:31 Fi FC5 FC12 FC12 Fp}


S8033C5 ::~S8033C5(){ note_dtor("S8033C5", this);} // tgen
S8033C5 ::S8033C5(){ note_ctor("S8033C5", this);} // tgen

static void Test_S8033C5()
{
  extern Class_Descriptor cd_S8033C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,403)];
    init_test(&cd_S8033C5, buf);
    S8033C5 *dp, &lv = *(dp=new (buf) S8033C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1608), "sizeof(S8033C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C5)");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(1520,796), "S8033C5");
    /*is_ambiguous_... S8033C5::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(2016,1056), "S8033C5");
    check_base_class_offset(lv, (S8033C6*), ABISELECT(1520,796), "S8033C5");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*), ABISELECT(1520,796), "S8033C5");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(1520,796), "S8033C5");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S8033C5");
    check_base_class_offset(lv, (S8033C11*), ABISELECT(2160,1132), "S8033C5");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(2160,1132), "S8033C5");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(2208,1160), "S8033C5");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(2208,1160), "S8033C5");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(2464,1292), "S8033C5");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*), ABISELECT(2208,1160), "S8033C5");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*), ABISELECT(2560,1344), "S8033C5");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*), ABISELECT(2712,1436), "S8033C5");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*), ABISELECT(2800,1512), "S8033C5");
    check_base_class_offset(lv, (S8033C12*), 0, "S8033C5");
    check_field_offset(lv, s8033c5f0, ABISELECT(880,472), "S8033C5.s8033c5f0");
    check_field_offset(lv, s8033c5f1, ABISELECT(1072,568), "S8033C5.s8033c5f1");
    check_field_offset(lv, s8033c5f2, ABISELECT(1080,572), "S8033C5.s8033c5f2");
    set_bf_and_test(lv, s8033c5f3, ABISELECT(1096,588), 0, 31, 1, "S8033C5");
    set_bf_and_test(lv, s8033c5f3, ABISELECT(1096,588), 0, 31, hide_sll(1LL<<30), "S8033C5");
    check_field_offset(lv, s8033c5f4, ABISELECT(1100,592), "S8033C5.s8033c5f4");
    check_field_offset(lv, s8033c5f5, ABISELECT(1104,596), "S8033C5.s8033c5f5");
    check_field_offset(lv, s8033c5f6, ABISELECT(1120,600), "S8033C5.s8033c5f6");
    check_field_offset(lv, s8033c5f7, ABISELECT(1312,696), "S8033C5.s8033c5f7");
    check_field_offset(lv, s8033c5f8, ABISELECT(1504,792), "S8033C5.s8033c5f8");
    test_class_info(&lv, &cd_S8033C5);
    dp->~S8033C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C5(Test_S8033C5, "S8033C5", ABISELECT(2992,1608));

#else // __cplusplus

extern void _ZN7S8033C5C1Ev();
extern void _ZN7S8033C5D1Ev();
Name_Map name_map_S8033C5[] = {
  NSPAIR(_ZN7S8033C5C1Ev),
  NSPAIR(_ZN7S8033C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
static Base_Class bases_S8033C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,796), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(2016,1056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(2016,1056), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(1520,796), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S8033C11,    ABISELECT(2160,1132), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C8,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1292), //bcp->offset
    39, //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
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(2208,1160), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C14,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(2560,1344), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(2800,1512), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C5[];
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C5[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C5[];
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C12__7S8033C5[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C12__7S8033C5[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C12__7S8033C5[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C12__7S8033C5[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C12__7S8033C5[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C12__7S8033C5[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C12__7S8033C5[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C12__7S8033C5[] = {
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C5[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C5[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C5[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C5[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__7S8033C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__7S8033C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__7S8033C5[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C5[] = {
  {&(_ZTV7S8033C5[10]),  10,56},
  {&(_tg__ZTV8S8033C12__7S8033C5[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C12__7S8033C5[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C12__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C12__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C12__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C12__7S8033C5[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C12__7S8033C5[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C12__7S8033C5[3]),  3,4},
  {&(_ZTV7S8033C5[17]),  17,56},
  {&(_ZTV7S8033C5[23]),  23,56},
  {&(_ZTV7S8033C5[30]),  30,56},
  {&(_ZTV7S8033C5[37]),  37,56},
  {&(_ZTV7S8033C5[42]),  42,56},
  {&(_ZTV7S8033C5[50]),  50,56},
  {&(_ZTV7S8033C5[55]),  55,56},
  {&(_tg__ZTV7S8033C6__7S8033C5[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C5[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C5[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__7S8033C5[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__7S8033C5[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__7S8033C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C5 = {  "S8033C5", // class name
  bases_S8033C5, 16,
  &(vtc_S8033C5[0]), // expected_vtbl_contents
  &(vtt_S8033C5[0]), // expected_vtt_contents
  ABISELECT(2992,1608), // object size
  NSPAIRA(_ZTI7S8033C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8033C5),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C5),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C3  : virtual S8033C4 , virtual S8033C5 , S8033C15 , S8033C7 {
  ::S8033C15 s8033c3f0;
  int s8033c3f1;
  char s8033c3f2[6];
  long double s8033c3f3;
  int s8033c3f4;
  __tsi64 s8033c3f5;
  virtual void  v4(); // _ZN7S8033C32v4Ev
  ~S8033C3(); // tgen
  S8033C3(); // tgen
};
//SIG(-1 S8033C3) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL[2] Fc Fp Fi} VBC9 vd Fc Fi:32} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp FL[2] Fi:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


void  S8033C3 ::v4(){vfunc_called(this, "_ZN7S8033C32v4Ev");}
S8033C3 ::~S8033C3(){ note_dtor("S8033C3", this);} // tgen
S8033C3 ::S8033C3(){ note_ctor("S8033C3", this);} // tgen

static void Test_S8033C3()
{
  extern Class_Descriptor cd_S8033C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,473)];
    init_test(&cd_S8033C3, buf);
    S8033C3 *dp, &lv = *(dp=new (buf) S8033C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1888), "sizeof(S8033C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C3)");
    /*is_ambiguous_... S8033C3::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S8033C3");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*)(S8033C5*), ABISELECT(528,280), "S8033C3");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(2144,1152), "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(2640,1412), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C5*), ABISELECT(2144,1152), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*)(S8033C5*), ABISELECT(2144,1152), "S8033C3");
    check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(2144,1152), "S8033C3");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8033C5*), ABISELECT(1416,752), "S8033C3");
    check_base_class_offset(lv, (S8033C11*)(S8033C5*), ABISELECT(2784,1488), "S8033C3");
    check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(2784,1488), "S8033C3");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(2832,1516), "S8033C3");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(2832,1516), "S8033C3");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(3088,1648), "S8033C3");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*)(S8033C5*), ABISELECT(2832,1516), "S8033C3");
    /*is_ambiguous_... S8033C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*)(S8033C5*), ABISELECT(3184,1700), "S8033C3");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*)(S8033C5*), ABISELECT(3344,1792), "S8033C3");
    check_base_class_offset(lv, (S8033C12*)(S8033C5*), ABISELECT(624,356), "S8033C3");
    check_base_class_offset(lv, (S8033C5*), ABISELECT(624,356), "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C15 */ AMB_check_base_class_offset(lv, (S8033C15*), 0, "S8033C3");
    /*is_ambiguous_... S8033C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S8033C3");
    check_field_offset(lv, s8033c3f0, ABISELECT(288,148), "S8033C3.s8033c3f0");
    check_field_offset(lv, s8033c3f1, ABISELECT(480,244), "S8033C3.s8033c3f1");
    check_field_offset(lv, s8033c3f2, ABISELECT(484,248), "S8033C3.s8033c3f2");
    check_field_offset(lv, s8033c3f3, ABISELECT(496,256), "S8033C3.s8033c3f3");
    check_field_offset(lv, s8033c3f4, ABISELECT(512,268), "S8033C3.s8033c3f4");
    check_field_offset(lv, s8033c3f5, ABISELECT(520,272), "S8033C3.s8033c3f5");
    test_class_info(&lv, &cd_S8033C3);
    dp->~S8033C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C3(Test_S8033C3, "S8033C3", ABISELECT(3536,1888));

#else // __cplusplus

extern void _ZN7S8033C3C1Ev();
extern void _ZN7S8033C3D1Ev();
Name_Map name_map_S8033C3[] = {
  NSPAIR(_ZN7S8033C3C1Ev),
  NSPAIR(_ZN7S8033C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
extern Class_Descriptor cd_S8033C5;
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8033C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    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_S8033C7,    ABISELECT(2144,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(2640,1412), //bcp->offset
    40, //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
    4, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(2144,1152), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C11,    ABISELECT(2784,1488), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1648), //bcp->offset
    59, //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
    10, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(2832,1516), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(3184,1700), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(3344,1792), //bcp->offset
    72, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C12,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C5,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C3[];
extern void _ZN8S8033C152v3Ev();
extern void _ZN7S8033C32v4Ev();
extern void _ZN7S8033C3D1Ev();
extern void _ZN7S8033C3D0Ev();
extern void ABISELECT(_ZThn192_N7S8033C3D1Ev,_ZThn96_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S8033C3D0Ev,_ZThn96_N7S8033C3D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn624_N7S8033C3D1Ev,_ZThn356_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn624_N7S8033C3D0Ev,_ZThn356_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2144_N7S8033C3D1Ev,_ZThn1152_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2144_N7S8033C3D0Ev,_ZThn1152_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2640_N7S8033C3D1Ev,_ZThn1412_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2640_N7S8033C3D0Ev,_ZThn1412_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2784_N7S8033C3D1Ev,_ZThn1488_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2784_N7S8033C3D0Ev,_ZThn1488_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn2832_N7S8033C3D1Ev,_ZThn1516_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn2832_N7S8033C3D0Ev,_ZThn1516_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn3088_N7S8033C3D1Ev,_ZThn1648_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn3088_N7S8033C3D0Ev,_ZThn1648_N7S8033C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev)();
extern void ABISELECT(_ZThn3184_N7S8033C3D1Ev,_ZThn1700_N7S8033C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev)();
extern void ABISELECT(_ZThn3184_N7S8033C3D0Ev,_ZThn1700_N7S8033C3D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C3[] = {
  ABISELECT(3344,1792),
  ABISELECT(3184,1700),
  ABISELECT(3088,1648),
  ABISELECT(2832,1516),
  ABISELECT(2784,1488),
  ABISELECT(2640,1412),
  ABISELECT(2144,1152),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
  (VTBL_ENTRY)&_ZN7S8033C32v4Ev,
  (VTBL_ENTRY)&_ZN7S8033C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C3D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8033C3D1Ev,_ZThn96_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8033C3D0Ev,_ZThn96_N7S8033C3D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev),
  0,
  ABISELECT(-2144,-1152),
  ABISELECT(496,260),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-2640,-1412),
  ABISELECT(-2640,-1412),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev),
  ABISELECT(-2784,-1488),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1488),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev),
  ABISELECT(-2832,-1516),
  ABISELECT(256,132),
  ABISELECT(-2832,-1516),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev),
  ABISELECT(-3088,-1648),
  ABISELECT(-3088,-1648),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev),
  ABISELECT(-3184,-1700),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1700),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev),
  0,
  ABISELECT(-3344,-1792),
  (VTBL_ENTRY)&(_ZTI7S8033C3[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C3[];
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C5__7S8033C3[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
};
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C3[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C5__7S8033C3[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5__7S8033C3[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5__7S8033C3[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8033C5__7S8033C3[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5__7S8033C3[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__7S8033C5__7S8033C3[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C3[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C3[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__7S8033C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__7S8033C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__7S8033C3[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C3[] = {
  {&(_ZTV7S8033C3[11]),  11,76},
  {&(_ZTV7S8033C3[30]),  30,76},
  {&(_ZTV7S8033C3[37]),  37,76},
  {&(_ZTV7S8033C3[43]),  43,76},
  {&(_ZTV7S8033C3[50]),  50,76},
  {&(_ZTV7S8033C3[57]),  57,76},
  {&(_ZTV7S8033C3[62]),  62,76},
  {&(_ZTV7S8033C3[70]),  70,76},
  {&(_ZTV7S8033C3[75]),  75,76},
  {&(_tg__ZTV7S8033C5__7S8033C3[10]),  10,12},
  {&(_tg__ZTV8S8033C127S8033C5__7S8033C3[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C3[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C3[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__7S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5__7S8033C3[5]),  5,8},
  {&(_tg__ZTV8S8033C10__7S8033C5__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8033C5__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5__7S8033C3[6]),  6,8},
  {&(_tg__ZTV8S8033C15__7S8033C5__7S8033C3[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C3[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C3[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C3[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C3[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C3[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__7S8033C3[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__7S8033C3[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__7S8033C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C3[];
extern  VTBL_ENTRY _ZTV7S8033C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C3[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1344_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1344_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D0Ev,_ZThn1132_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8033C5D1Ev,_ZThn1132_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D0Ev,_ZThn1292_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D0Ev,_ZThn1056_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8033C5D1Ev,_ZThn1292_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8033C5D1Ev,_ZThn1056_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D0Ev,_ZThn1160_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D0Ev,_ZThn796_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8033C5D1Ev,_ZThn1160_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8033C5D1Ev,_ZThn796_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D0Ev,_ZThn1132_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8033C12D1Ev,_ZThn1132_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1344_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1344_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D0Ev,_ZThn1056_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D0Ev,_ZThn1292_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8033C12D1Ev,_ZThn1056_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8033C12D1Ev,_ZThn1292_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D0Ev,_ZThn796_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D0Ev,_ZThn1160_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8033C12D1Ev,_ZThn796_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8033C12D1Ev,_ZThn1160_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C3D0Ev,_ZTv0_n24_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8033C3D0Ev,_ZThn1700_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C3D1Ev,_ZTv0_n24_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8033C3D1Ev,_ZThn1700_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C3D0Ev,_ZTv0_n20_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8033C3D0Ev,_ZThn1488_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C3D1Ev,_ZTv0_n20_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8033C3D1Ev,_ZThn1488_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C3D0Ev,_ZTv0_n12_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8033C3D0Ev,_ZThn1648_N7S8033C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8033C3D0Ev,_ZThn1412_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C3D1Ev,_ZTv0_n12_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8033C3D1Ev,_ZThn1648_N7S8033C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8033C3D1Ev,_ZThn1412_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C3D0Ev,_ZTv0_n16_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8033C3D0Ev,_ZThn1516_N7S8033C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8033C3D0Ev,_ZThn1152_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C3D1Ev,_ZTv0_n16_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8033C3D1Ev,_ZThn1516_N7S8033C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8033C3D1Ev,_ZThn1152_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8033C3D0Ev,_ZTv0_n44_N7S8033C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8033C3D0Ev,_ZThn356_N7S8033C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8033C3D1Ev,_ZTv0_n44_N7S8033C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8033C3D1Ev,_ZThn356_N7S8033C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C3 = {  "S8033C3", // class name
  bases_S8033C3, 19,
  &(vtc_S8033C3[0]), // expected_vtbl_contents
  &(vtt_S8033C3[0]), // expected_vtt_contents
  ABISELECT(3536,1888), // object size
  NSPAIRA(_ZTI7S8033C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8033C3),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C3),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8033C2  {
  int s8033c2f0;
  long s8033c2f1;
  int s8033c2f2;
  ::S8033C3 s8033c2f3;
  int s8033c2f4;
  void *s8033c2f5[4];
  void  mf8033c2(); // _ZN7S8033C28mf8033c2Ev
  virtual  ~S8033C2(); // _ZN7S8033C2D1Ev
  S8033C2(); // tgen
};
//SIG(-1 S8033C2) C1{ vd m Fi Fl Fi FC2{ VBC3{ m Fp[3] FL[8]} VBC4{ VBC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} VBC7{ BC6 Fp FC8{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC9{ BC7 VBC6 vd FC6 Fp}} BC3 VBC10{ VBC7 v3 Fc Fs FD Fp[2]} BC11{ VBC9 VBC5 VBC12{ BC13{ BC6 VBC5 vd Fp FL[2] Fc Fp Fi} VBC10 vd Fc Fi:32} VBC3 VBC14{ v4 FD Fp FC6 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp FL[2] Fi:31 Fi FC8 FC14 FC14 Fp} BC14 BC6 v1 FC14 Fi Fc[6] FD Fi FL} Fi Fp[4]}


void  S8033C2 ::mf8033c2(){}
 S8033C2 ::~S8033C2(){ note_dtor("S8033C2", this);}
S8033C2 ::S8033C2(){ note_ctor("S8033C2", this);} // tgen

static void Test_S8033C2()
{
  extern Class_Descriptor cd_S8033C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,482)];
    init_test(&cd_S8033C2, buf);
    S8033C2 *dp, &lv = *(dp=new (buf) S8033C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,1924), "sizeof(S8033C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C2)");
    check_field_offset(lv, s8033c2f0, ABISELECT(8,4), "S8033C2.s8033c2f0");
    check_field_offset(lv, s8033c2f1, ABISELECT(16,8), "S8033C2.s8033c2f1");
    check_field_offset(lv, s8033c2f2, ABISELECT(24,12), "S8033C2.s8033c2f2");
    check_field_offset(lv, s8033c2f3, ABISELECT(32,16), "S8033C2.s8033c2f3");
    check_field_offset(lv, s8033c2f4, ABISELECT(3568,1904), "S8033C2.s8033c2f4");
    check_field_offset(lv, s8033c2f5, ABISELECT(3576,1908), "S8033C2.s8033c2f5");
    test_class_info(&lv, &cd_S8033C2);
    dp->~S8033C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C2(Test_S8033C2, "S8033C2", ABISELECT(3616,1924));

#else // __cplusplus

extern void _ZN7S8033C2C1Ev();
extern void _ZN7S8033C2D1Ev();
Name_Map name_map_S8033C2[] = {
  NSPAIR(_ZN7S8033C2C1Ev),
  NSPAIR(_ZN7S8033C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8033C2[];
extern void _ZN7S8033C2D1Ev();
extern void _ZN7S8033C2D0Ev();
static  VTBL_ENTRY vtc_S8033C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C2[0]),
  (VTBL_ENTRY)&_ZN7S8033C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8033C2[];
extern  VTBL_ENTRY _ZTV7S8033C2[];
Class_Descriptor cd_S8033C2 = {  "S8033C2", // class name
  0,0,//no base classes
  &(vtc_S8033C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3616,1924), // object size
  NSPAIRA(_ZTI7S8033C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8033C2),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  S8033C1  : S8033C2 , S8033C13 , S8033C5 {
  int s8033c1f0;
  ::S8033C15 s8033c1f1;
  long double s8033c1f2;
  ::S8033C15 s8033c1f3;
  virtual  ~S8033C1(); // _ZN7S8033C1D2Ev
  S8033C1(); // tgen
};
//SIG(1 S8033C1) C1{ BC2{ vd m Fi Fl Fi FC3{ VBC4{ m Fp[3] FL[8]} VBC5{ VBC6{ BC7{ vd m Fc Fc:0 Fl[8] FD} VBC8{ BC7 Fp FC9{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC10{ BC8 VBC7 vd FC7 Fp}} BC4 VBC11{ VBC8 v2 Fc Fs FD Fp[2]} BC12{ VBC10 VBC6 VBC13{ BC14{ BC7 VBC6 vd Fp FL[2] Fc Fp Fi} VBC11 vd Fc Fi:32} VBC4 VBC15{ v3 FD Fp FC7 FL FD Fi} vd Fp FC15[3] FC15 Fc} FC15 Fp FL[2] Fi:31 Fi FC9 FC15 FC15 Fp} BC15 BC7 v4 FC15 Fi Fc[6] FD Fi FL} Fi Fp[4]} BC13 BC5 vd Fi FC15 FD FC15}


 S8033C1 ::~S8033C1(){ note_dtor("S8033C1", this);}
S8033C1 ::S8033C1(){ note_ctor("S8033C1", this);} // tgen

static void Test_S8033C1()
{
  extern Class_Descriptor cd_S8033C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(449,959)];
    init_test(&cd_S8033C1, buf);
    S8033C1 *dp, &lv = *(dp=new (buf) S8033C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7168,3832), "sizeof(S8033C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8033C1)");
    check_base_class_offset(lv, (S8033C2*), 0, "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C6*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C8*), ABISELECT(6192,3280), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C6*), ABISELECT(6192,3280), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C11*), ABISELECT(6192,3280), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(5696,3020), "S8033C1");
    check_base_class_offset(lv, (S8033C6*)(S8033C5*), ABISELECT(5696,3020), "S8033C1");
    check_base_class_offset(lv, (S8033C6*)(S8033C12*)(S8033C5*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C6*)(S8033C14*)(S8033C13*), ABISELECT(5696,3020), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(6336,3356), "S8033C1");
    check_base_class_offset(lv, (S8033C11*)(S8033C5*), ABISELECT(6336,3356), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C11*)(S8033C13*), ABISELECT(6336,3356), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C13*), ABISELECT(3616,1924), "S8033C1");
    /*is_ambiguous_... S8033C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8033C5*), ABISELECT(4568,2412), "S8033C1");
    check_base_class_offset(lv, (S8033C7*)(S8033C8*)(S8033C10*), ABISELECT(6384,3384), "S8033C1");
    check_base_class_offset(lv, (S8033C8*)(S8033C10*), ABISELECT(6384,3384), "S8033C1");
    /*is_ambiguous_... S8033C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C10*), ABISELECT(6640,3516), "S8033C1");
    check_base_class_offset(lv, (S8033C10*)(S8033C12*)(S8033C5*), ABISELECT(6384,3384), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8033C14*)(S8033C13*), ABISELECT(6736,3568), "S8033C1");
    /*is_ambiguous_... S8033C1::S8033C13 */ AMB_check_base_class_offset(lv, (S8033C14*)(S8033C13*), ABISELECT(6736,3568), "S8033C1");
    check_base_class_offset(lv, (S8033C13*)(S8033C12*)(S8033C5*), ABISELECT(6736,3568), "S8033C1");
    check_base_class_offset(lv, (S8033C4*)(S8033C12*)(S8033C5*), ABISELECT(6888,3660), "S8033C1");
    check_base_class_offset(lv, (S8033C15*)(S8033C12*)(S8033C5*), ABISELECT(6976,3736), "S8033C1");
    check_base_class_offset(lv, (S8033C12*)(S8033C5*), ABISELECT(3776,2016), "S8033C1");
    check_base_class_offset(lv, (S8033C5*), ABISELECT(3776,2016), "S8033C1");
    check_field_offset(lv, s8033c1f0, ABISELECT(5288,2812), "S8033C1.s8033c1f0");
    check_field_offset(lv, s8033c1f1, ABISELECT(5296,2816), "S8033C1.s8033c1f1");
    check_field_offset(lv, s8033c1f2, ABISELECT(5488,2912), "S8033C1.s8033c1f2");
    check_field_offset(lv, s8033c1f3, ABISELECT(5504,2924), "S8033C1.s8033c1f3");
    test_class_info(&lv, &cd_S8033C1);
    dp->~S8033C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8033C1(Test_S8033C1, "S8033C1", ABISELECT(7168,3832));

#else // __cplusplus

extern void _ZN7S8033C1C1Ev();
extern void _ZN7S8033C1D2Ev();
Name_Map name_map_S8033C1[] = {
  NSPAIR(_ZN7S8033C1C1Ev),
  NSPAIR(_ZN7S8033C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C2;
extern VTBL_ENTRY _ZTI7S8033C2[];
extern  VTBL_ENTRY _ZTV7S8033C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C6;
extern VTBL_ENTRY _ZTI7S8033C6[];
extern  VTBL_ENTRY _ZTV7S8033C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C6[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C11;
extern VTBL_ENTRY _ZTI8S8033C11[];
extern  VTBL_ENTRY _ZTV8S8033C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C11[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C8;
extern VTBL_ENTRY _ZTI7S8033C8[];
extern  VTBL_ENTRY _ZTV7S8033C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C10;
extern VTBL_ENTRY _ZTI8S8033C10[];
extern  VTBL_ENTRY _ZTV8S8033C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C14;
extern VTBL_ENTRY _ZTI8S8033C14[];
extern  VTBL_ENTRY _ZTV8S8033C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C14[];
extern Class_Descriptor cd_S8033C13;
extern VTBL_ENTRY _ZTI8S8033C13[];
extern  VTBL_ENTRY _ZTV8S8033C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C15;
extern VTBL_ENTRY _ZTI8S8033C15[];
extern  VTBL_ENTRY _ZTV8S8033C15[];
extern Class_Descriptor cd_S8033C12;
extern VTBL_ENTRY _ZTI8S8033C12[];
extern  VTBL_ENTRY _ZTV8S8033C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8033C12[];
extern Class_Descriptor cd_S8033C5;
extern VTBL_ENTRY _ZTI7S8033C5[];
extern  VTBL_ENTRY _ZTV7S8033C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C5[];
static Base_Class bases_S8033C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(3616,1924), //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(5696,3020), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(6192,3280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C8,    ABISELECT(6192,3280), //bcp->offset
    39, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8033C6,    ABISELECT(5696,3020), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8033C14,    ABISELECT(3616,1924), //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
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C11,    ABISELECT(6336,3356), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8033C13,    ABISELECT(3616,1924), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C4,    ABISELECT(4568,2412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C7,    ABISELECT(6384,3384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8033C8,    ABISELECT(6384,3384), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6640,3516), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C10,    ABISELECT(6384,3384), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(6736,3568), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S8033C14,    ABISELECT(6736,3568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8033C13,    ABISELECT(6736,3568), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(6888,3660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C15,    ABISELECT(6976,3736), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C12,    ABISELECT(3776,2016), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8033C5,    ABISELECT(3776,2016), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8033C1[];
extern void _ZN7S8033C1D1Ev();
extern void _ZN7S8033C1D0Ev();
extern void ABISELECT(_ZThn3616_N7S8033C1D1Ev,_ZThn1924_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn3616_N7S8033C1D0Ev,_ZThn1924_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn3776_N7S8033C1D1Ev,_ZThn2016_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn3776_N7S8033C1D0Ev,_ZThn2016_N7S8033C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn5696_N7S8033C1D1Ev,_ZThn3020_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn5696_N7S8033C1D0Ev,_ZThn3020_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6192_N7S8033C1D1Ev,_ZThn3280_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6192_N7S8033C1D0Ev,_ZThn3280_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6336_N7S8033C1D1Ev,_ZThn3356_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6336_N7S8033C1D0Ev,_ZThn3356_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6384_N7S8033C1D1Ev,_ZThn3384_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6384_N7S8033C1D0Ev,_ZThn3384_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6640_N7S8033C1D1Ev,_ZThn3516_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6640_N7S8033C1D0Ev,_ZThn3516_N7S8033C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev)();
extern void ABISELECT(_ZThn6736_N7S8033C1D1Ev,_ZThn3568_N7S8033C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev)();
extern void ABISELECT(_ZThn6736_N7S8033C1D0Ev,_ZThn3568_N7S8033C1D0Ev)() __attribute__((weak));
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY vtc_S8033C1[] = {
  ABISELECT(6976,3736),
  ABISELECT(6888,3660),
  ABISELECT(6736,3568),
  ABISELECT(6640,3516),
  ABISELECT(6384,3384),
  ABISELECT(6336,3356),
  ABISELECT(6192,3280),
  ABISELECT(5696,3020),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN7S8033C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C1D0Ev,
  ABISELECT(2720,1432),
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  ABISELECT(-3616,-1924),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8033C1D1Ev,_ZThn1924_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8033C1D0Ev,_ZThn1924_N7S8033C1D0Ev),
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  ABISELECT(-3776,-2016),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8033C1D1Ev,_ZThn2016_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8033C1D0Ev,_ZThn2016_N7S8033C1D0Ev),
  0,
  ABISELECT(-5696,-3020),
  ABISELECT(496,260),
  ABISELECT(-5696,-3020),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
  ABISELECT(-6192,-3280),
  ABISELECT(-6192,-3280),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev),
  ABISELECT(-6336,-3356),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6336,-3356),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev),
  ABISELECT(-6384,-3384),
  ABISELECT(256,132),
  ABISELECT(-6384,-3384),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev),
  ABISELECT(-6640,-3516),
  ABISELECT(-6640,-3516),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev),
  ABISELECT(-6736,-3568),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-6736,-3568),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev),
  0,
  ABISELECT(-6976,-3736),
  (VTBL_ENTRY)&(_ZTI7S8033C1[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8033C1[];
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__A__7S8033C1[] = {
  ABISELECT(2720,1432),
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__7S8033C1[] = {
  ABISELECT(2576,1356),
  ABISELECT(2080,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C14D1Ev,_ZThn1096_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C14D0Ev,_ZThn1096_N8S8033C14D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C1[] = {
  0,
  ABISELECT(-2080,-1096),
  ABISELECT(496,260),
  ABISELECT(-2080,-1096),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C14D1Ev,_ZThn1356_N8S8033C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C14D0Ev,_ZThn1356_N8S8033C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C1[] = {
  ABISELECT(-2576,-1356),
  ABISELECT(-2576,-1356),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C13D1Ev,_ZThn1096_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8033C13D0Ev,_ZThn1096_N8S8033C13D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__A__7S8033C1[] = {
  0,
  ABISELECT(-2080,-1096),
  ABISELECT(496,260),
  ABISELECT(-2080,-1096),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C13D1Ev,_ZThn1356_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8033C13D0Ev,_ZThn1356_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__A__7S8033C1[] = {
  ABISELECT(-2576,-1356),
  ABISELECT(-2576,-1356),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZThn2720_N8S8033C13D1Ev,_ZThn1432_N8S8033C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
extern void ABISELECT(_ZThn2720_N8S8033C13D0Ev,_ZThn1432_N8S8033C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__A__7S8033C1[] = {
  ABISELECT(-2720,-1432),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2720,-1432),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
extern void _ZN7S8033C5D1Ev();
extern void _ZN7S8033C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C5__7S8033C1[] = {
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN7S8033C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C5D0Ev,
};
extern void _ZN8S8033C12D1Ev();
extern void _ZN8S8033C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(3200,1720),
  ABISELECT(3112,1644),
  ABISELECT(2560,1340),
  ABISELECT(2960,1552),
  ABISELECT(2416,1264),
  ABISELECT(1920,1004),
  ABISELECT(2864,1500),
  ABISELECT(2608,1368),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2608_N8S8033C12D1Ev,_ZThn1368_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2608_N8S8033C12D0Ev,_ZThn1368_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2608,-1368),
  ABISELECT(256,132),
  ABISELECT(-2608,-1368),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2864_N8S8033C12D1Ev,_ZThn1500_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2864_N8S8033C12D0Ev,_ZThn1500_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2864,-1500),
  ABISELECT(-2864,-1500),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn1920_N8S8033C12D1Ev,_ZThn1004_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn1920_N8S8033C12D0Ev,_ZThn1004_N8S8033C12D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-1920,-1004),
  ABISELECT(496,260),
  ABISELECT(-1920,-1004),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2416_N8S8033C12D1Ev,_ZThn1264_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2416_N8S8033C12D0Ev,_ZThn1264_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2416,-1264),
  ABISELECT(-2416,-1264),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2960_N8S8033C12D1Ev,_ZThn1552_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2960_N8S8033C12D0Ev,_ZThn1552_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2960,-1552),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1552),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1340_N8S8033C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1340_N8S8033C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C1[] = {
  ABISELECT(-2560,-1340),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1340),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-3200,-1720),
  (VTBL_ENTRY)&(_ZTI8S8033C12[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn1920_N7S8033C5D1Ev,_ZThn1004_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn1920_N7S8033C5D0Ev,_ZThn1004_N7S8033C5D0Ev)() __attribute__((weak));
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-1920,-1004),
  ABISELECT(496,260),
  ABISELECT(-1920,-1004),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2416_N7S8033C5D1Ev,_ZThn1264_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2416_N7S8033C5D0Ev,_ZThn1264_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C5__7S8033C1[] = {
  ABISELECT(-2416,-1264),
  ABISELECT(-2416,-1264),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1340_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1340_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C5__7S8033C1[] = {
  ABISELECT(-2560,-1340),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1340),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2608_N7S8033C5D1Ev,_ZThn1368_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2608_N7S8033C5D0Ev,_ZThn1368_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C5__7S8033C1[] = {
  ABISELECT(-2608,-1368),
  ABISELECT(256,132),
  ABISELECT(-2608,-1368),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2864_N7S8033C5D1Ev,_ZThn1500_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2864_N7S8033C5D0Ev,_ZThn1500_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8033C5__7S8033C1[] = {
  ABISELECT(-2864,-1500),
  ABISELECT(-2864,-1500),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev)();
extern void ABISELECT(_ZThn2960_N7S8033C5D1Ev,_ZThn1552_N7S8033C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev)();
extern void ABISELECT(_ZThn2960_N7S8033C5D0Ev,_ZThn1552_N7S8033C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8033C13__7S8033C5__7S8033C1[] = {
  ABISELECT(-2960,-1552),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1552),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev),
};
extern void _ZN8S8033C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C15__7S8033C5__7S8033C1[] = {
  0,
  ABISELECT(-3200,-1720),
  (VTBL_ENTRY)&(_ZTI7S8033C5[0]),
  (VTBL_ENTRY)&_ZN8S8033C152v3Ev,
};
extern void _ZN7S8033C6D1Ev();
extern void _ZN7S8033C6D0Ev();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__7S8033C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&_ZN7S8033C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8033C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C8__7S8033C6__7S8033C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8033C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void _ZN8S8033C11D1Ev();
extern void _ZN8S8033C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C11__7S8033C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C11__7S8033C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8033C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D1Ev,_ZTv0_n12_N8S8033C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C11D0Ev,_ZTv0_n12_N8S8033C11D0Ev),
};
extern void _ZN8S8033C10D1Ev();
extern void _ZN8S8033C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C10__7S8033C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&_ZN8S8033C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8033C10__7S8033C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8033C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev),
};
extern void _ZN8S8033C13D1Ev();
extern void _ZN8S8033C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C13__A1__7S8033C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C13D0Ev,
};
extern void _ZN8S8033C14D1Ev();
extern void _ZN8S8033C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8033C148S8033C13__A1__7S8033C1[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&_ZN8S8033C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8033C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C148S8033C13__A1__7S8033C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C148S8033C13__A1__7S8033C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev)();
extern void _ZN7S8033C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8033C6__8S8033C13__A1__7S8033C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8033C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8033C8__8S8033C13__A1__7S8033C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev),
};
extern void _ZN8S8033C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8033C11__8S8033C13__A1__7S8033C1[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8033C13[0]),
  (VTBL_ENTRY)&_ZN8S8033C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev),
};
static  VTT_ENTRY vtt_S8033C1[] = {
  {&(_ZTV7S8033C1[10]),  10,75},
  {&(_tg__ZTV8S8033C13__A__7S8033C1[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__A__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__A__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__A__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C5__7S8033C1[10]),  10,12},
  {&(_tg__ZTV8S8033C127S8033C5__7S8033C1[10]),  10,12},
  {&(_tg__ZTV8S8033C10__8S8033C127S8033C5__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8033C127S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C127S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__A1__8S8033C127S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__8S8033C127S8033C5__7S8033C1[6]),  6,8},
  {&(_tg__ZTV8S8033C11__8S8033C127S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV8S8033C15__8S8033C127S8033C5__7S8033C1[3]),  3,4},
  {&(_tg__ZTV7S8033C6__7S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__7S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C5__7S8033C1[5]),  5,8},
  {&(_tg__ZTV8S8033C10__7S8033C5__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8033C5__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__7S8033C5__7S8033C1[6]),  6,8},
  {&(_tg__ZTV8S8033C15__7S8033C5__7S8033C1[3]),  3,4},
  {&(_ZTV7S8033C1[17]),  17,75},
  {&(_ZTV7S8033C1[36]),  36,75},
  {&(_ZTV7S8033C1[42]),  42,75},
  {&(_ZTV7S8033C1[49]),  49,75},
  {&(_ZTV7S8033C1[29]),  29,75},
  {&(_ZTV7S8033C1[56]),  56,75},
  {&(_ZTV7S8033C1[61]),  61,75},
  {&(_ZTV7S8033C1[69]),  69,75},
  {&(_ZTV7S8033C1[74]),  74,75},
  {&(_tg__ZTV7S8033C6__7S8033C1[3]),  3,6},
  {&(_tg__ZTV7S8033C8__7S8033C6__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__7S8033C1[3]),  3,6},
  {&(_tg__ZTV7S8033C8__8S8033C11__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C10__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8033C10__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C13__A1__7S8033C1[5]),  5,7},
  {&(_tg__ZTV8S8033C148S8033C13__A1__7S8033C1[4]),  4,6},
  {&(_tg__ZTV7S8033C6__8S8033C148S8033C13__A1__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C148S8033C13__A1__7S8033C1[3]),  3,5},
  {&(_tg__ZTV7S8033C6__8S8033C13__A1__7S8033C1[5]),  5,8},
  {&(_tg__ZTV7S8033C8__8S8033C13__A1__7S8033C1[3]),  3,5},
  {&(_tg__ZTV8S8033C11__8S8033C13__A1__7S8033C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8033C1[];
extern  VTBL_ENTRY _ZTV7S8033C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8033C1[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D0Ev,_ZTv0_n12_N8S8033C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D0Ev,_ZThn132_N8S8033C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C10D1Ev,_ZTv0_n12_N8S8033C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8033C10D1Ev,_ZThn132_N8S8033C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D0Ev,_ZTv0_n12_N7S8033C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D0Ev,_ZThn260_N7S8033C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C6D1Ev,_ZTv0_n12_N7S8033C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8033C6D1Ev,_ZThn260_N7S8033C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D0Ev,_ZTv0_n24_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8033C5D0Ev,_ZThn1552_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C5D1Ev,_ZTv0_n24_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8033C5D1Ev,_ZThn1552_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D0Ev,_ZTv0_n20_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D0Ev,_ZThn1340_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C5D1Ev,_ZTv0_n20_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8033C5D1Ev,_ZThn1340_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D0Ev,_ZTv0_n12_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8033C5D0Ev,_ZThn1500_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8033C5D0Ev,_ZThn1264_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C5D1Ev,_ZTv0_n12_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8033C5D1Ev,_ZThn1500_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8033C5D1Ev,_ZThn1264_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D0Ev,_ZTv0_n16_N7S8033C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8033C5D0Ev,_ZThn1368_N7S8033C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8033C5D0Ev,_ZThn1004_N7S8033C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C5D1Ev,_ZTv0_n16_N7S8033C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8033C5D1Ev,_ZThn1368_N7S8033C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8033C5D1Ev,_ZThn1004_N7S8033C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D0Ev,_ZTv0_n20_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D0Ev,_ZThn1340_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C12D1Ev,_ZTv0_n20_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8033C12D1Ev,_ZThn1340_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D0Ev,_ZTv0_n24_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8033C12D0Ev,_ZThn1552_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8033C12D1Ev,_ZTv0_n24_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8033C12D1Ev,_ZThn1552_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D0Ev,_ZTv0_n12_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8033C12D0Ev,_ZThn1264_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8033C12D0Ev,_ZThn1500_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C12D1Ev,_ZTv0_n12_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8033C12D1Ev,_ZThn1264_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8033C12D1Ev,_ZThn1500_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D0Ev,_ZTv0_n16_N8S8033C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8033C12D0Ev,_ZThn1004_N8S8033C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8033C12D0Ev,_ZThn1368_N8S8033C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C12D1Ev,_ZTv0_n16_N8S8033C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8033C12D1Ev,_ZThn1004_N8S8033C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8033C12D1Ev,_ZThn1368_N8S8033C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D0Ev,_ZTv0_n20_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8033C13D0Ev,_ZThn1432_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8033C13D1Ev,_ZTv0_n20_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8033C13D1Ev,_ZThn1432_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D0Ev,_ZTv0_n12_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C13D0Ev,_ZThn1356_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C13D1Ev,_ZTv0_n12_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C13D1Ev,_ZThn1356_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D0Ev,_ZTv0_n16_N8S8033C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C13D0Ev,_ZThn1096_N8S8033C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C13D1Ev,_ZTv0_n16_N8S8033C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C13D1Ev,_ZThn1096_N8S8033C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D0Ev,_ZTv0_n12_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C14D0Ev,_ZThn1356_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8033C14D1Ev,_ZTv0_n12_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8033C14D1Ev,_ZThn1356_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D0Ev,_ZTv0_n16_N8S8033C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C14D0Ev,_ZThn1096_N8S8033C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8033C14D1Ev,_ZTv0_n16_N8S8033C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8033C14D1Ev,_ZThn1096_N8S8033C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C1D0Ev,_ZTv0_n24_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8033C1D0Ev,_ZThn3568_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8033C1D1Ev,_ZTv0_n24_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8033C1D1Ev,_ZThn3568_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C1D0Ev,_ZTv0_n20_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8033C1D0Ev,_ZThn3356_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8033C1D1Ev,_ZTv0_n20_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8033C1D1Ev,_ZThn3356_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C1D0Ev,_ZTv0_n12_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8033C1D0Ev,_ZThn3516_N7S8033C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8033C1D0Ev,_ZThn3280_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8033C1D1Ev,_ZTv0_n12_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8033C1D1Ev,_ZThn3516_N7S8033C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8033C1D1Ev,_ZThn3280_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C1D0Ev,_ZTv0_n16_N7S8033C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8033C1D0Ev,_ZThn3384_N7S8033C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8033C1D0Ev,_ZThn3020_N7S8033C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8033C1D1Ev,_ZTv0_n16_N7S8033C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8033C1D1Ev,_ZThn3384_N7S8033C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8033C1D1Ev,_ZThn3020_N7S8033C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8033C1 = {  "S8033C1", // class name
  bases_S8033C1, 21,
  &(vtc_S8033C1[0]), // expected_vtbl_contents
  &(vtt_S8033C1[0]), // expected_vtt_contents
  ABISELECT(7168,3832), // object size
  NSPAIRA(_ZTI7S8033C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8033C1),75, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8033C1),46, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C8  : S8033C7 {
  void *s8032c8f0;
  ::S20291C14_nt s8032c8f1;
  void *s8032c8f2;
  long double s8032c8f3;
  ~S8032C8(); // tgen
  S8032C8(); // tgen
};
//SIG(-1 S8032C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S8032C8 ::~S8032C8(){ note_dtor("S8032C8", this);} // tgen
S8032C8 ::S8032C8(){ note_ctor("S8032C8", this);} // tgen

static void Test_S8032C8()
{
  extern Class_Descriptor cd_S8032C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S8032C8, buf);
    S8032C8 *dp, &lv = *(dp=new (buf) S8032C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S8032C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C8)");
    check_base_class_offset(lv, (S8033C7*), 0, "S8032C8");
    check_field_offset(lv, s8032c8f0, ABISELECT(96,52), "S8032C8.s8032c8f0");
    check_field_offset(lv, s8032c8f1, ABISELECT(104,56), "S8032C8.s8032c8f1");
    check_field_offset(lv, s8032c8f2, ABISELECT(112,60), "S8032C8.s8032c8f2");
    check_field_offset(lv, s8032c8f3, ABISELECT(128,64), "S8032C8.s8032c8f3");
    test_class_info(&lv, &cd_S8032C8);
    dp->~S8032C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C8(Test_S8032C8, "S8032C8", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN7S8032C8C1Ev();
extern void _ZN7S8032C8D1Ev();
Name_Map name_map_S8032C8[] = {
  NSPAIR(_ZN7S8032C8C1Ev),
  NSPAIR(_ZN7S8032C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8032C8[];
extern void _ZN7S8032C8D1Ev();
extern void _ZN7S8032C8D0Ev();
static  VTBL_ENTRY vtc_S8032C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C8[0]),
  (VTBL_ENTRY)&_ZN7S8032C8D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C8D0Ev,
};
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
Class_Descriptor cd_S8032C8 = {  "S8032C8", // class name
  bases_S8032C8, 1,
  &(vtc_S8032C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI7S8032C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8032C8),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  S8032C10  : S8032C8 , virtual S8033C7 {
  ::S8033C7 s8032c10f0;
  void *s8032c10f1;
  virtual  ~S8032C10(); // _ZN8S8032C10D2Ev
  S8032C10(); // tgen
};
//SIG(-1 S8032C10) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S8032C10 ::~S8032C10(){ note_dtor("S8032C10", this);}
S8032C10 ::S8032C10(){ note_ctor("S8032C10", this);} // tgen

static void Test_S8032C10()
{
  extern Class_Descriptor cd_S8032C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S8032C10, buf);
    S8032C10 *dp, &lv = *(dp=new (buf) S8032C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S8032C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C10)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), 0, "S8032C10");
    check_base_class_offset(lv, (S8032C8*), 0, "S8032C10");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S8032C10");
    check_field_offset(lv, s8032c10f0, ABISELECT(144,76), "S8032C10.s8032c10f0");
    check_field_offset(lv, s8032c10f1, ABISELECT(240,128), "S8032C10.s8032c10f1");
    test_class_info(&lv, &cd_S8032C10);
    dp->~S8032C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C10(Test_S8032C10, "S8032C10", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S8032C10C1Ev();
extern void _ZN8S8032C10D2Ev();
Name_Map name_map_S8032C10[] = {
  NSPAIR(_ZN8S8032C10C1Ev),
  NSPAIR(_ZN8S8032C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S8032C10[];
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C10[];
static  VTT_ENTRY vtt_S8032C10[] = {
  {&(_ZTV8S8032C10[3]),  3,10},
  {&(_ZTV8S8032C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C10 = {  "S8032C10", // class name
  bases_S8032C10, 3,
  &(vtc_S8032C10[0]), // expected_vtbl_contents
  &(vtt_S8032C10[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S8032C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C6  : S8033C7 , virtual S8032C8 {
  int s8032c6f0;
  char s8032c6f1;
  void *s8032c6f2;
  int s8032c6f3;
  void *s8032c6f4[2];
  ::S8032C10 s8032c6f5;
  virtual  ~S8032C6(); // _ZN7S8032C6D2Ev
  virtual void  v1(); // _ZN7S8032C62v1Ev
  S8032C6(); // tgen
};
//SIG(-1 S8032C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S8032C6 ::~S8032C6(){ note_dtor("S8032C6", this);}
void  S8032C6 ::v1(){vfunc_called(this, "_ZN7S8032C62v1Ev");}
S8032C6 ::S8032C6(){ note_ctor("S8032C6", this);} // tgen

static void Test_S8032C6()
{
  extern Class_Descriptor cd_S8032C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S8032C6, buf);
    S8032C6 *dp, &lv = *(dp=new (buf) S8032C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S8032C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C6)");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8032C6");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(496,260), "S8032C6");
    check_base_class_offset(lv, (S8032C8*), ABISELECT(496,260), "S8032C6");
    check_field_offset(lv, s8032c6f0, ABISELECT(96,52), "S8032C6.s8032c6f0");
    check_field_offset(lv, s8032c6f1, ABISELECT(100,56), "S8032C6.s8032c6f1");
    check_field_offset(lv, s8032c6f2, ABISELECT(104,60), "S8032C6.s8032c6f2");
    check_field_offset(lv, s8032c6f3, ABISELECT(112,64), "S8032C6.s8032c6f3");
    check_field_offset(lv, s8032c6f4, ABISELECT(120,68), "S8032C6.s8032c6f4");
    check_field_offset(lv, s8032c6f5, ABISELECT(144,76), "S8032C6.s8032c6f5");
    test_class_info(&lv, &cd_S8032C6);
    dp->~S8032C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C6(Test_S8032C6, "S8032C6", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN7S8032C6C1Ev();
extern void _ZN7S8032C6D2Ev();
Name_Map name_map_S8032C6[] = {
  NSPAIR(_ZN7S8032C6C1Ev),
  NSPAIR(_ZN7S8032C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
static Base_Class bases_S8032C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C6[];
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C6[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S8032C6[];
static  VTT_ENTRY vtt_S8032C6[] = {
  {&(_ZTV7S8032C6[3]),  3,11},
  {&(_ZTV7S8032C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C6 = {  "S8032C6", // class name
  bases_S8032C6, 3,
  &(vtc_S8032C6[0]), // expected_vtbl_contents
  &(vtt_S8032C6[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI7S8032C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8032C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C11  : virtual S8032C8 {
  char s8032c11f0;
  short s8032c11f1;
  long double s8032c11f2;
  void *s8032c11f3[2];
  virtual void  v2(); // _ZN8S8032C112v2Ev
  ~S8032C11(); // tgen
  S8032C11(); // tgen
};
//SIG(-1 S8032C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S8032C11 ::v2(){vfunc_called(this, "_ZN8S8032C112v2Ev");}
S8032C11 ::~S8032C11(){ note_dtor("S8032C11", this);} // tgen
S8032C11 ::S8032C11(){ note_ctor("S8032C11", this);} // tgen

static void Test_S8032C11()
{
  extern Class_Descriptor cd_S8032C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S8032C11, buf);
    S8032C11 *dp, &lv = *(dp=new (buf) S8032C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S8032C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C11)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(48,28), "S8032C11");
    check_base_class_offset(lv, (S8032C8*), ABISELECT(48,28), "S8032C11");
    check_field_offset(lv, s8032c11f0, ABISELECT(8,4), "S8032C11.s8032c11f0");
    check_field_offset(lv, s8032c11f1, ABISELECT(10,6), "S8032C11.s8032c11f1");
    check_field_offset(lv, s8032c11f2, ABISELECT(16,8), "S8032C11.s8032c11f2");
    check_field_offset(lv, s8032c11f3, ABISELECT(32,20), "S8032C11.s8032c11f3");
    test_class_info(&lv, &cd_S8032C11);
    dp->~S8032C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C11(Test_S8032C11, "S8032C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S8032C11C1Ev();
extern void _ZN8S8032C11D1Ev();
Name_Map name_map_S8032C11[] = {
  NSPAIR(_ZN8S8032C11C1Ev),
  NSPAIR(_ZN8S8032C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
static Base_Class bases_S8032C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C11[];
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S8032C11D1Ev,_ZThn28_N8S8032C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S8032C11D0Ev,_ZThn28_N8S8032C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C11[];
static  VTT_ENTRY vtt_S8032C11[] = {
  {&(_ZTV8S8032C11[3]),  3,11},
  {&(_ZTV8S8032C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8032C11D0Ev,_ZThn28_N8S8032C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S8032C11D1Ev,_ZThn28_N8S8032C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C11 = {  "S8032C11", // class name
  bases_S8032C11, 2,
  &(vtc_S8032C11[0]), // expected_vtbl_contents
  &(vtt_S8032C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S8032C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S8032C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C14  : S8033C7 , virtual S8032C6 {
  void *s8032c14f0;
  __tsi64 s8032c14f1;
  long s8032c14f2;
  char s8032c14f3;
  void *s8032c14f4;
  int s8032c14f5;
  virtual  ~S8032C14(); // _ZN8S8032C14D2Ev
  S8032C14(); // tgen
};
//SIG(-1 S8032C14) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S8032C14 ::~S8032C14(){ note_dtor("S8032C14", this);}
S8032C14 ::S8032C14(){ note_ctor("S8032C14", this);} // tgen

static void Test_S8032C14()
{
  extern Class_Descriptor cd_S8032C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S8032C14, buf);
    S8032C14 *dp, &lv = *(dp=new (buf) S8032C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S8032C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C14)");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S8032C14");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(144,80), "S8032C14");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(640,340), "S8032C14");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(640,340), "S8032C14");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(144,80), "S8032C14");
    check_field_offset(lv, s8032c14f0, ABISELECT(96,52), "S8032C14.s8032c14f0");
    check_field_offset(lv, s8032c14f1, ABISELECT(104,56), "S8032C14.s8032c14f1");
    check_field_offset(lv, s8032c14f2, ABISELECT(112,64), "S8032C14.s8032c14f2");
    check_field_offset(lv, s8032c14f3, ABISELECT(120,68), "S8032C14.s8032c14f3");
    check_field_offset(lv, s8032c14f4, ABISELECT(128,72), "S8032C14.s8032c14f4");
    check_field_offset(lv, s8032c14f5, ABISELECT(136,76), "S8032C14.s8032c14f5");
    test_class_info(&lv, &cd_S8032C14);
    dp->~S8032C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C14(Test_S8032C14, "S8032C14", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S8032C14C1Ev();
extern void _ZN8S8032C14D2Ev();
Name_Map name_map_S8032C14[] = {
  NSPAIR(_ZN8S8032C14C1Ev),
  NSPAIR(_ZN8S8032C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
static Base_Class bases_S8032C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,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
    3, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S8032C14[];
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S8032C14D1Ev,_ZThn80_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S8032C14D0Ev,_ZThn80_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn640_N8S8032C14D1Ev,_ZThn340_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn640_N8S8032C14D0Ev,_ZThn340_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C14[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C14[];
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C14[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C14[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
static  VTT_ENTRY vtt_S8032C14[] = {
  {&(_ZTV8S8032C14[4]),  4,19},
  {&(_ZTV8S8032C14[11]),  11,19},
  {&(_ZTV8S8032C14[17]),  17,19},
  {&(_tg__ZTV7S8032C6__8S8032C14[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8032C14D0Ev,_ZThn340_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S8032C14D1Ev,_ZThn340_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8032C14D0Ev,_ZThn80_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S8032C14D1Ev,_ZThn80_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C14 = {  "S8032C14", // class name
  bases_S8032C14, 5,
  &(vtc_S8032C14[0]), // expected_vtbl_contents
  &(vtt_S8032C14[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S8032C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C14),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C14),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C13  : S8032C14 , virtual S8032C11 {
  char s8032c13f0;
  __tsi64 s8032c13f1:35;
  virtual  ~S8032C13(); // _ZN8S8032C13D2Ev
  S8032C13(); // tgen
};
//SIG(-1 S8032C13) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S8032C13 ::~S8032C13(){ note_dtor("S8032C13", this);}
S8032C13 ::S8032C13(){ note_ctor("S8032C13", this);} // tgen

static void Test_S8032C13()
{
  extern Class_Descriptor cd_S8032C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S8032C13, buf);
    S8032C13 *dp, &lv = *(dp=new (buf) S8032C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S8032C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C13)");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*), 0, "S8032C13");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(160,88), "S8032C13");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(656,348), "S8032C13");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*), ABISELECT(160,88), "S8032C13");
    check_base_class_offset(lv, (S8032C14*), 0, "S8032C13");
    check_base_class_offset(lv, (S8032C11*), ABISELECT(800,424), "S8032C13");
    check_field_offset(lv, s8032c13f0, ABISELECT(140,80), "S8032C13.s8032c13f0");
    set_bf_and_test(lv, s8032c13f1, ABISELECT(144,81), 0, 35, 1, "S8032C13");
    set_bf_and_test(lv, s8032c13f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S8032C13");
    test_class_info(&lv, &cd_S8032C13);
    dp->~S8032C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C13(Test_S8032C13, "S8032C13", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S8032C13C1Ev();
extern void _ZN8S8032C13D2Ev();
Name_Map name_map_S8032C13[] = {
  NSPAIR(_ZN8S8032C13C1Ev),
  NSPAIR(_ZN8S8032C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
static Base_Class bases_S8032C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(656,348), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8032C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8032C11,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C13[];
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn656_N8S8032C13D1Ev,_ZThn348_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn656_N8S8032C13D0Ev,_ZThn348_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn800_N8S8032C13D1Ev,_ZThn424_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn800_N8S8032C13D0Ev,_ZThn424_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8032C13[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S8032C13[];
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C14__8S8032C13[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C14D1Ev,_ZThn88_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C14D0Ev,_ZThn88_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C14__8S8032C13[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn656_N8S8032C14D1Ev,_ZThn348_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn656_N8S8032C14D0Ev,_ZThn348_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C14__8S8032C13[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__8S8032C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
static  VTT_ENTRY vtt_S8032C13[] = {
  {&(_ZTV8S8032C13[5]),  5,28},
  {&(_tg__ZTV8S8032C14__8S8032C13[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C14__8S8032C13[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C14__8S8032C13[3]),  3,5},
  {&(_ZTV8S8032C13[12]),  12,28},
  {&(_ZTV8S8032C13[18]),  18,28},
  {&(_ZTV8S8032C13[25]),  25,28},
  {&(_tg__ZTV7S8032C6__8S8032C13[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C13[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__8S8032C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C14D0Ev,_ZThn348_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C14D1Ev,_ZThn348_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C14D0Ev,_ZThn88_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C14D1Ev,_ZThn88_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C13D0Ev,_ZThn424_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C13D1Ev,_ZThn424_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C13D0Ev,_ZThn348_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S8032C13D1Ev,_ZThn348_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C13 = {  "S8032C13", // class name
  bases_S8032C13, 7,
  &(vtc_S8032C13[0]), // expected_vtbl_contents
  &(vtt_S8032C13[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S8032C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8032C13),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C13),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C15  {
  long double s8032c15f0;
  void *s8032c15f1;
  ::S8033C7 s8032c15f2;
  __tsi64 s8032c15f3;
  long double s8032c15f4;
  int s8032c15f5;
  virtual void  v3(); // _ZN8S8032C152v3Ev
  ~S8032C15(); // tgen
  S8032C15(); // tgen
};
//SIG(-1 S8032C15) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S8032C15 ::v3(){vfunc_called(this, "_ZN8S8032C152v3Ev");}
S8032C15 ::~S8032C15(){ note_dtor("S8032C15", this);} // tgen
S8032C15 ::S8032C15(){ note_ctor("S8032C15", this);} // tgen

static void Test_S8032C15()
{
  extern Class_Descriptor cd_S8032C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S8032C15, buf);
    S8032C15 *dp, &lv = *(dp=new (buf) S8032C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S8032C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C15)");
    check_field_offset(lv, s8032c15f0, ABISELECT(16,4), "S8032C15.s8032c15f0");
    check_field_offset(lv, s8032c15f1, ABISELECT(32,16), "S8032C15.s8032c15f1");
    check_field_offset(lv, s8032c15f2, ABISELECT(48,20), "S8032C15.s8032c15f2");
    check_field_offset(lv, s8032c15f3, ABISELECT(144,72), "S8032C15.s8032c15f3");
    check_field_offset(lv, s8032c15f4, ABISELECT(160,80), "S8032C15.s8032c15f4");
    check_field_offset(lv, s8032c15f5, ABISELECT(176,92), "S8032C15.s8032c15f5");
    test_class_info(&lv, &cd_S8032C15);
    dp->~S8032C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C15(Test_S8032C15, "S8032C15", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN8S8032C15C1Ev();
extern void _ZN8S8032C15D1Ev();
Name_Map name_map_S8032C15[] = {
  NSPAIR(_ZN8S8032C15C1Ev),
  NSPAIR(_ZN8S8032C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S8032C15[];
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C15[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
Class_Descriptor cd_S8032C15 = {  "S8032C15", // class name
  0,0,//no base classes
  &(vtc_S8032C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI8S8032C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S8032C15),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  S8032C12  : virtual S8032C10 , virtual S8032C6 , virtual S8032C13 , virtual S8033C4 , virtual S8032C15 {
  void *s8032c12f0;
  ::S8032C15 s8032c12f1[3];
  ::S8032C15 s8032c12f2;
  char s8032c12f3;
  virtual  ~S8032C12(); // _ZN8S8032C12D2Ev
  S8032C12(); // tgen
};
//SIG(-1 S8032C12) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S8032C12 ::~S8032C12(){ note_dtor("S8032C12", this);}
S8032C12 ::S8032C12(){ note_ctor("S8032C12", this);} // tgen

static void Test_S8032C12()
{
  extern Class_Descriptor cd_S8032C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S8032C12, buf);
    S8032C12 *dp, &lv = *(dp=new (buf) S8032C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S8032C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C12)");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(800,396), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(800,396), "S8032C12");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(1056,528), "S8032C12");
    check_base_class_offset(lv, (S8032C10*), ABISELECT(800,396), "S8032C12");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(1152,580), "S8032C12");
    /*is_ambiguous_... S8032C12::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(1648,840), "S8032C12");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(1152,580), "S8032C12");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(1152,580), "S8032C12");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(1952,1004), "S8032C12");
    check_base_class_offset(lv, (S8032C13*), ABISELECT(1792,916), "S8032C12");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S8032C12");
    check_base_class_offset(lv, (S8032C15*), ABISELECT(2096,1108), "S8032C12");
    check_field_offset(lv, s8032c12f0, ABISELECT(8,4), "S8032C12.s8032c12f0");
    check_field_offset(lv, s8032c12f1, ABISELECT(16,8), "S8032C12.s8032c12f1");
    check_field_offset(lv, s8032c12f2, ABISELECT(592,296), "S8032C12.s8032c12f2");
    check_field_offset(lv, s8032c12f3, ABISELECT(784,392), "S8032C12.s8032c12f3");
    test_class_info(&lv, &cd_S8032C12);
    dp->~S8032C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C12(Test_S8032C12, "S8032C12", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S8032C12C1Ev();
extern void _ZN8S8032C12D2Ev();
Name_Map name_map_S8032C12[] = {
  NSPAIR(_ZN8S8032C12C1Ev),
  NSPAIR(_ZN8S8032C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
static Base_Class bases_S8032C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C8,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8032C8,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8032C14,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8032C11,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S8032C13,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8032C15,    ABISELECT(2096,1108), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8032C12[];
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn800_N8S8032C12D1Ev,_ZThn396_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn800_N8S8032C12D0Ev,_ZThn396_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1056_N8S8032C12D1Ev,_ZThn528_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1056_N8S8032C12D0Ev,_ZThn528_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1152_N8S8032C12D1Ev,_ZThn580_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1152_N8S8032C12D0Ev,_ZThn580_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1648_N8S8032C12D1Ev,_ZThn840_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1648_N8S8032C12D0Ev,_ZThn840_N8S8032C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1792_N8S8032C12D1Ev,_ZThn916_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1792_N8S8032C12D0Ev,_ZThn916_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1952_N8S8032C12D1Ev,_ZThn1004_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1952_N8S8032C12D0Ev,_ZThn1004_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C12[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV8S8032C12[];
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__8S8032C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__8S8032C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C12[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__8S8032C12[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__8S8032C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__8S8032C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__8S8032C12[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__8S8032C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__8S8032C12[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C12[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__8S8032C12[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
static  VTT_ENTRY vtt_S8032C12[] = {
  {&(_ZTV8S8032C12[10]),  10,56},
  {&(_ZTV8S8032C12[16]),  16,56},
  {&(_ZTV8S8032C12[21]),  21,56},
  {&(_ZTV8S8032C12[28]),  28,56},
  {&(_ZTV8S8032C12[34]),  34,56},
  {&(_ZTV8S8032C12[42]),  42,56},
  {&(_ZTV8S8032C12[49]),  49,56},
  {&(_ZTV8S8032C12[55]),  55,56},
  {&(_tg__ZTV8S8032C10__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C12[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__8S8032C12[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C12[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__8S8032C12[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__8S8032C12[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__8S8032C12[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__8S8032C12[5]),  5,8},
  {&(_tg__ZTV8S8032C11__8S8032C12[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__8S8032C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D0Ev,_ZThn88_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S8032C13D1Ev,_ZThn88_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8032C12D0Ev,_ZThn1004_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S8032C12D1Ev,_ZThn1004_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8032C12D0Ev,_ZThn916_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S8032C12D1Ev,_ZThn916_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8032C12D0Ev,_ZThn840_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8032C12D0Ev,_ZThn528_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S8032C12D1Ev,_ZThn840_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S8032C12D1Ev,_ZThn528_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8032C12D0Ev,_ZThn580_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C12D0Ev,_ZThn396_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S8032C12D1Ev,_ZThn580_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S8032C12D1Ev,_ZThn396_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C12 = {  "S8032C12", // class name
  bases_S8032C12, 14,
  &(vtc_S8032C12[0]), // expected_vtbl_contents
  &(vtt_S8032C12[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S8032C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8032C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8032C12),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C5  : virtual S8032C6 , S8033C4 , virtual S8032C11 , S8032C12 {
  ::S8032C15 s8032c5f0;
  void *s8032c5f1;
  long s8032c5f2[2];
  __tsi64 s8032c5f3:31;
  int s8032c5f4;
  ::S20291C14_nt s8032c5f5;
  ::S8032C15 s8032c5f6;
  ::S8032C15 s8032c5f7;
  void *s8032c5f8;
  ~S8032C5(); // tgen
  S8032C5(); // tgen
};
//SIG(-1 S8032C5) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL Fl Fc Fp Fi} VBC8 vd Fc FL:35} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp Fl[2] FL:31 Fi FC5 FC12 FC12 Fp}


S8032C5 ::~S8032C5(){ note_dtor("S8032C5", this);} // tgen
S8032C5 ::S8032C5(){ note_ctor("S8032C5", this);} // tgen

static void Test_S8032C5()
{
  extern Class_Descriptor cd_S8032C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,400)];
    init_test(&cd_S8032C5, buf);
    S8032C5 *dp, &lv = *(dp=new (buf) S8032C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1596), "sizeof(S8032C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C5)");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(1520,788), "S8032C5");
    /*is_ambiguous_... S8032C5::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(2016,1048), "S8032C5");
    check_base_class_offset(lv, (S8032C6*), ABISELECT(1520,788), "S8032C5");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*), ABISELECT(1520,788), "S8032C5");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(1520,788), "S8032C5");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S8032C5");
    check_base_class_offset(lv, (S8032C11*), ABISELECT(2160,1124), "S8032C5");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(2160,1124), "S8032C5");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(2208,1152), "S8032C5");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(2208,1152), "S8032C5");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(2464,1284), "S8032C5");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*), ABISELECT(2208,1152), "S8032C5");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*), ABISELECT(2560,1336), "S8032C5");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*), ABISELECT(2712,1424), "S8032C5");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*), ABISELECT(2800,1500), "S8032C5");
    check_base_class_offset(lv, (S8032C12*), 0, "S8032C5");
    check_field_offset(lv, s8032c5f0, ABISELECT(880,472), "S8032C5.s8032c5f0");
    check_field_offset(lv, s8032c5f1, ABISELECT(1072,568), "S8032C5.s8032c5f1");
    check_field_offset(lv, s8032c5f2, ABISELECT(1080,572), "S8032C5.s8032c5f2");
    set_bf_and_test(lv, s8032c5f3, ABISELECT(1096,580), 0, 31, 1, "S8032C5");
    set_bf_and_test(lv, s8032c5f3, ABISELECT(1096,580), 0, 31, hide_sll(1LL<<30), "S8032C5");
    check_field_offset(lv, s8032c5f4, ABISELECT(1100,584), "S8032C5.s8032c5f4");
    check_field_offset(lv, s8032c5f5, ABISELECT(1104,588), "S8032C5.s8032c5f5");
    check_field_offset(lv, s8032c5f6, ABISELECT(1120,592), "S8032C5.s8032c5f6");
    check_field_offset(lv, s8032c5f7, ABISELECT(1312,688), "S8032C5.s8032c5f7");
    check_field_offset(lv, s8032c5f8, ABISELECT(1504,784), "S8032C5.s8032c5f8");
    test_class_info(&lv, &cd_S8032C5);
    dp->~S8032C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C5(Test_S8032C5, "S8032C5", ABISELECT(2992,1596));

#else // __cplusplus

extern void _ZN7S8032C5C1Ev();
extern void _ZN7S8032C5D1Ev();
Name_Map name_map_S8032C5[] = {
  NSPAIR(_ZN7S8032C5C1Ev),
  NSPAIR(_ZN7S8032C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
static Base_Class bases_S8032C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C8,    ABISELECT(2016,1048), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(1520,788), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S8032C11,    ABISELECT(2160,1124), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8032C8,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1284), //bcp->offset
    39, //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
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(2208,1152), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8032C14,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(2560,1336), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(2800,1500), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C5[];
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C5[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C5[];
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C12__7S8032C5[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C12__7S8032C5[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C12__7S8032C5[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C12__7S8032C5[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C12__7S8032C5[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C12__7S8032C5[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C12__7S8032C5[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C12__7S8032C5[] = {
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C5[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C5[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C5[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C5[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__7S8032C5[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__7S8032C5[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__7S8032C5[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C5[] = {
  {&(_ZTV7S8032C5[10]),  10,56},
  {&(_tg__ZTV8S8032C12__7S8032C5[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C12__7S8032C5[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C12__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C12__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C12__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C12__7S8032C5[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C12__7S8032C5[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C12__7S8032C5[3]),  3,4},
  {&(_ZTV7S8032C5[17]),  17,56},
  {&(_ZTV7S8032C5[23]),  23,56},
  {&(_ZTV7S8032C5[30]),  30,56},
  {&(_ZTV7S8032C5[37]),  37,56},
  {&(_ZTV7S8032C5[42]),  42,56},
  {&(_ZTV7S8032C5[50]),  50,56},
  {&(_ZTV7S8032C5[55]),  55,56},
  {&(_tg__ZTV7S8032C6__7S8032C5[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C5[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C5[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__7S8032C5[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__7S8032C5[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__7S8032C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C5 = {  "S8032C5", // class name
  bases_S8032C5, 16,
  &(vtc_S8032C5[0]), // expected_vtbl_contents
  &(vtt_S8032C5[0]), // expected_vtt_contents
  ABISELECT(2992,1596), // object size
  NSPAIRA(_ZTI7S8032C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8032C5),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C5),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C3  : virtual S8033C4 , virtual S8032C5 , S8032C15 , S8033C7 {
  ::S8032C15 s8032c3f0;
  int s8032c3f1;
  char s8032c3f2[6];
  long double s8032c3f3;
  int s8032c3f4;
  __tsi64 s8032c3f5;
  virtual void  v4(); // _ZN7S8032C32v4Ev
  ~S8032C3(); // tgen
  S8032C3(); // tgen
};
//SIG(-1 S8032C3) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL Fl Fc Fp Fi} VBC9 vd Fc FL:35} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp Fl[2] FL:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


void  S8032C3 ::v4(){vfunc_called(this, "_ZN7S8032C32v4Ev");}
S8032C3 ::~S8032C3(){ note_dtor("S8032C3", this);} // tgen
S8032C3 ::S8032C3(){ note_ctor("S8032C3", this);} // tgen

static void Test_S8032C3()
{
  extern Class_Descriptor cd_S8032C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,470)];
    init_test(&cd_S8032C3, buf);
    S8032C3 *dp, &lv = *(dp=new (buf) S8032C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1876), "sizeof(S8032C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C3)");
    /*is_ambiguous_... S8032C3::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S8032C3");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*)(S8032C5*), ABISELECT(528,280), "S8032C3");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(2144,1144), "S8032C3");
    /*is_ambiguous_... S8032C3::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(2640,1404), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C5*), ABISELECT(2144,1144), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*)(S8032C5*), ABISELECT(2144,1144), "S8032C3");
    check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(2144,1144), "S8032C3");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8032C5*), ABISELECT(1416,752), "S8032C3");
    check_base_class_offset(lv, (S8032C11*)(S8032C5*), ABISELECT(2784,1480), "S8032C3");
    check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(2784,1480), "S8032C3");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(2832,1508), "S8032C3");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(2832,1508), "S8032C3");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(3088,1640), "S8032C3");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*)(S8032C5*), ABISELECT(2832,1508), "S8032C3");
    /*is_ambiguous_... S8032C14::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*)(S8032C5*), ABISELECT(3184,1692), "S8032C3");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*)(S8032C5*), ABISELECT(3344,1780), "S8032C3");
    check_base_class_offset(lv, (S8032C12*)(S8032C5*), ABISELECT(624,356), "S8032C3");
    check_base_class_offset(lv, (S8032C5*), ABISELECT(624,356), "S8032C3");
    /*is_ambiguous_... S8032C3::S8032C15 */ AMB_check_base_class_offset(lv, (S8032C15*), 0, "S8032C3");
    /*is_ambiguous_... S8032C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S8032C3");
    check_field_offset(lv, s8032c3f0, ABISELECT(288,148), "S8032C3.s8032c3f0");
    check_field_offset(lv, s8032c3f1, ABISELECT(480,244), "S8032C3.s8032c3f1");
    check_field_offset(lv, s8032c3f2, ABISELECT(484,248), "S8032C3.s8032c3f2");
    check_field_offset(lv, s8032c3f3, ABISELECT(496,256), "S8032C3.s8032c3f3");
    check_field_offset(lv, s8032c3f4, ABISELECT(512,268), "S8032C3.s8032c3f4");
    check_field_offset(lv, s8032c3f5, ABISELECT(520,272), "S8032C3.s8032c3f5");
    test_class_info(&lv, &cd_S8032C3);
    dp->~S8032C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C3(Test_S8032C3, "S8032C3", ABISELECT(3536,1876));

#else // __cplusplus

extern void _ZN7S8032C3C1Ev();
extern void _ZN7S8032C3D1Ev();
Name_Map name_map_S8032C3[] = {
  NSPAIR(_ZN7S8032C3C1Ev),
  NSPAIR(_ZN7S8032C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
extern Class_Descriptor cd_S8032C5;
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S8032C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    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_S8033C7,    ABISELECT(2144,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C8,    ABISELECT(2640,1404), //bcp->offset
    40, //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
    4, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(2144,1144), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C11,    ABISELECT(2784,1480), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1640), //bcp->offset
    59, //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
    10, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(2832,1508), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(3184,1692), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(3344,1780), //bcp->offset
    72, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8032C12,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8032C5,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8032C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C3[];
extern void _ZN8S8032C152v3Ev();
extern void _ZN7S8032C32v4Ev();
extern void _ZN7S8032C3D1Ev();
extern void _ZN7S8032C3D0Ev();
extern void ABISELECT(_ZThn192_N7S8032C3D1Ev,_ZThn96_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S8032C3D0Ev,_ZThn96_N7S8032C3D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn624_N7S8032C3D1Ev,_ZThn356_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn624_N7S8032C3D0Ev,_ZThn356_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2144_N7S8032C3D1Ev,_ZThn1144_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2144_N7S8032C3D0Ev,_ZThn1144_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2640_N7S8032C3D1Ev,_ZThn1404_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2640_N7S8032C3D0Ev,_ZThn1404_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2784_N7S8032C3D1Ev,_ZThn1480_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2784_N7S8032C3D0Ev,_ZThn1480_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn2832_N7S8032C3D1Ev,_ZThn1508_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn2832_N7S8032C3D0Ev,_ZThn1508_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn3088_N7S8032C3D1Ev,_ZThn1640_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn3088_N7S8032C3D0Ev,_ZThn1640_N7S8032C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev)();
extern void ABISELECT(_ZThn3184_N7S8032C3D1Ev,_ZThn1692_N7S8032C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev)();
extern void ABISELECT(_ZThn3184_N7S8032C3D0Ev,_ZThn1692_N7S8032C3D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C3[] = {
  ABISELECT(3344,1780),
  ABISELECT(3184,1692),
  ABISELECT(3088,1640),
  ABISELECT(2832,1508),
  ABISELECT(2784,1480),
  ABISELECT(2640,1404),
  ABISELECT(2144,1144),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
  (VTBL_ENTRY)&_ZN7S8032C32v4Ev,
  (VTBL_ENTRY)&_ZN7S8032C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C3D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8032C3D1Ev,_ZThn96_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S8032C3D0Ev,_ZThn96_N7S8032C3D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev),
  0,
  ABISELECT(-2144,-1144),
  ABISELECT(496,260),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-2640,-1404),
  ABISELECT(-2640,-1404),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev),
  ABISELECT(-2784,-1480),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1480),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev),
  ABISELECT(-2832,-1508),
  ABISELECT(256,132),
  ABISELECT(-2832,-1508),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev),
  ABISELECT(-3088,-1640),
  ABISELECT(-3088,-1640),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev),
  ABISELECT(-3184,-1692),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1692),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev),
  0,
  ABISELECT(-3344,-1780),
  (VTBL_ENTRY)&(_ZTI7S8032C3[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C3[];
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C5__7S8032C3[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
};
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C3[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C5__7S8032C3[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5__7S8032C3[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5__7S8032C3[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8032C5__7S8032C3[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5__7S8032C3[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__7S8032C5__7S8032C3[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C3[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C3[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C3[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__7S8032C3[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__7S8032C3[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__7S8032C3[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C3[] = {
  {&(_ZTV7S8032C3[11]),  11,76},
  {&(_ZTV7S8032C3[30]),  30,76},
  {&(_ZTV7S8032C3[37]),  37,76},
  {&(_ZTV7S8032C3[43]),  43,76},
  {&(_ZTV7S8032C3[50]),  50,76},
  {&(_ZTV7S8032C3[57]),  57,76},
  {&(_ZTV7S8032C3[62]),  62,76},
  {&(_ZTV7S8032C3[70]),  70,76},
  {&(_ZTV7S8032C3[75]),  75,76},
  {&(_tg__ZTV7S8032C5__7S8032C3[10]),  10,12},
  {&(_tg__ZTV8S8032C127S8032C5__7S8032C3[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C3[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C3[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__7S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5__7S8032C3[5]),  5,8},
  {&(_tg__ZTV8S8032C10__7S8032C5__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8032C5__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5__7S8032C3[6]),  6,8},
  {&(_tg__ZTV8S8032C15__7S8032C5__7S8032C3[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C3[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C3[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C3[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C3[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C3[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__7S8032C3[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__7S8032C3[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__7S8032C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C3[];
extern  VTBL_ENTRY _ZTV7S8032C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C3[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1336_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1336_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D0Ev,_ZThn1124_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S8032C5D1Ev,_ZThn1124_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D0Ev,_ZThn1284_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D0Ev,_ZThn1048_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N7S8032C5D1Ev,_ZThn1284_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N7S8032C5D1Ev,_ZThn1048_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D0Ev,_ZThn1152_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D0Ev,_ZThn788_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N7S8032C5D1Ev,_ZThn1152_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N7S8032C5D1Ev,_ZThn788_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D0Ev,_ZThn1124_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S8032C12D1Ev,_ZThn1124_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1336_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1336_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D0Ev,_ZThn1048_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D0Ev,_ZThn1284_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N8S8032C12D1Ev,_ZThn1048_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N8S8032C12D1Ev,_ZThn1284_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D0Ev,_ZThn788_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D0Ev,_ZThn1152_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N8S8032C12D1Ev,_ZThn788_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N8S8032C12D1Ev,_ZThn1152_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C3D0Ev,_ZTv0_n24_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8032C3D0Ev,_ZThn1692_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C3D1Ev,_ZTv0_n24_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N7S8032C3D1Ev,_ZThn1692_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C3D0Ev,_ZTv0_n20_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8032C3D0Ev,_ZThn1480_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C3D1Ev,_ZTv0_n20_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N7S8032C3D1Ev,_ZThn1480_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C3D0Ev,_ZTv0_n12_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8032C3D0Ev,_ZThn1640_N7S8032C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8032C3D0Ev,_ZThn1404_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C3D1Ev,_ZTv0_n12_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N7S8032C3D1Ev,_ZThn1640_N7S8032C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S8032C3D1Ev,_ZThn1404_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C3D0Ev,_ZTv0_n16_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8032C3D0Ev,_ZThn1508_N7S8032C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8032C3D0Ev,_ZThn1144_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C3D1Ev,_ZTv0_n16_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N7S8032C3D1Ev,_ZThn1508_N7S8032C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N7S8032C3D1Ev,_ZThn1144_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8032C3D0Ev,_ZTv0_n44_N7S8032C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8032C3D0Ev,_ZThn356_N7S8032C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S8032C3D1Ev,_ZTv0_n44_N7S8032C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S8032C3D1Ev,_ZThn356_N7S8032C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C3 = {  "S8032C3", // class name
  bases_S8032C3, 19,
  &(vtc_S8032C3[0]), // expected_vtbl_contents
  &(vtt_S8032C3[0]), // expected_vtt_contents
  ABISELECT(3536,1876), // object size
  NSPAIRA(_ZTI7S8032C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8032C3),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C3),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8032C2  {
  int s8032c2f0;
  long s8032c2f1;
  int s8032c2f2;
  ::S8032C3 s8032c2f3;
  int s8032c2f4;
  void *s8032c2f5[4];
  void  mf8032c2(); // _ZN7S8032C28mf8032c2Ev
  virtual  ~S8032C2(); // _ZN7S8032C2D1Ev
  S8032C2(); // tgen
};
//SIG(-1 S8032C2) C1{ vd m Fi Fl Fi FC2{ VBC3{ m Fp[3] FL[8]} VBC4{ VBC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} VBC7{ BC6 Fp FC8{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC9{ BC7 VBC6 vd FC6 Fp}} BC3 VBC10{ VBC7 v3 Fc Fs FD Fp[2]} BC11{ VBC9 VBC5 VBC12{ BC13{ BC6 VBC5 vd Fp FL Fl Fc Fp Fi} VBC10 vd Fc FL:35} VBC3 VBC14{ v4 FD Fp FC6 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp Fl[2] FL:31 Fi FC8 FC14 FC14 Fp} BC14 BC6 v1 FC14 Fi Fc[6] FD Fi FL} Fi Fp[4]}


void  S8032C2 ::mf8032c2(){}
 S8032C2 ::~S8032C2(){ note_dtor("S8032C2", this);}
S8032C2 ::S8032C2(){ note_ctor("S8032C2", this);} // tgen

static void Test_S8032C2()
{
  extern Class_Descriptor cd_S8032C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(227,479)];
    init_test(&cd_S8032C2, buf);
    S8032C2 *dp, &lv = *(dp=new (buf) S8032C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3616,1912), "sizeof(S8032C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C2)");
    check_field_offset(lv, s8032c2f0, ABISELECT(8,4), "S8032C2.s8032c2f0");
    check_field_offset(lv, s8032c2f1, ABISELECT(16,8), "S8032C2.s8032c2f1");
    check_field_offset(lv, s8032c2f2, ABISELECT(24,12), "S8032C2.s8032c2f2");
    check_field_offset(lv, s8032c2f3, ABISELECT(32,16), "S8032C2.s8032c2f3");
    check_field_offset(lv, s8032c2f4, ABISELECT(3568,1892), "S8032C2.s8032c2f4");
    check_field_offset(lv, s8032c2f5, ABISELECT(3576,1896), "S8032C2.s8032c2f5");
    test_class_info(&lv, &cd_S8032C2);
    dp->~S8032C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C2(Test_S8032C2, "S8032C2", ABISELECT(3616,1912));

#else // __cplusplus

extern void _ZN7S8032C2C1Ev();
extern void _ZN7S8032C2D1Ev();
Name_Map name_map_S8032C2[] = {
  NSPAIR(_ZN7S8032C2C1Ev),
  NSPAIR(_ZN7S8032C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8032C2[];
extern void _ZN7S8032C2D1Ev();
extern void _ZN7S8032C2D0Ev();
static  VTBL_ENTRY vtc_S8032C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C2[0]),
  (VTBL_ENTRY)&_ZN7S8032C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8032C2[];
extern  VTBL_ENTRY _ZTV7S8032C2[];
Class_Descriptor cd_S8032C2 = {  "S8032C2", // class name
  0,0,//no base classes
  &(vtc_S8032C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3616,1912), // object size
  NSPAIRA(_ZTI7S8032C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8032C2),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  S8032C1  : S8032C2 , S8032C13 , S8032C5 {
  int s8032c1f0;
  ::S8032C15 s8032c1f1;
  long double s8032c1f2;
  ::S8032C15 s8032c1f3;
  virtual  ~S8032C1(); // _ZN7S8032C1D2Ev
  S8032C1(); // tgen
};
//SIG(1 S8032C1) C1{ BC2{ vd m Fi Fl Fi FC3{ VBC4{ m Fp[3] FL[8]} VBC5{ VBC6{ BC7{ vd m Fc Fc:0 Fl[8] FD} VBC8{ BC7 Fp FC9{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC10{ BC8 VBC7 vd FC7 Fp}} BC4 VBC11{ VBC8 v2 Fc Fs FD Fp[2]} BC12{ VBC10 VBC6 VBC13{ BC14{ BC7 VBC6 vd Fp FL Fl Fc Fp Fi} VBC11 vd Fc FL:35} VBC4 VBC15{ v3 FD Fp FC7 FL FD Fi} vd Fp FC15[3] FC15 Fc} FC15 Fp Fl[2] FL:31 Fi FC9 FC15 FC15 Fp} BC15 BC7 v4 FC15 Fi Fc[6] FD Fi FL} Fi Fp[4]} BC13 BC5 vd Fi FC15 FD FC15}


 S8032C1 ::~S8032C1(){ note_dtor("S8032C1", this);}
S8032C1 ::S8032C1(){ note_ctor("S8032C1", this);} // tgen

static void Test_S8032C1()
{
  extern Class_Descriptor cd_S8032C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(449,952)];
    init_test(&cd_S8032C1, buf);
    S8032C1 *dp, &lv = *(dp=new (buf) S8032C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7168,3804), "sizeof(S8032C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8032C1)");
    check_base_class_offset(lv, (S8032C2*), 0, "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C6::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C6*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C8 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C8*), ABISELECT(6192,3256), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C6*), ABISELECT(6192,3256), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C11*), ABISELECT(6192,3256), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(5696,2996), "S8032C1");
    check_base_class_offset(lv, (S8032C6*)(S8032C5*), ABISELECT(5696,2996), "S8032C1");
    check_base_class_offset(lv, (S8032C6*)(S8032C12*)(S8032C5*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C6*)(S8032C14*)(S8032C13*), ABISELECT(5696,2996), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(6336,3332), "S8032C1");
    check_base_class_offset(lv, (S8032C11*)(S8032C5*), ABISELECT(6336,3332), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C11*)(S8032C13*), ABISELECT(6336,3332), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C13*), ABISELECT(3616,1912), "S8032C1");
    /*is_ambiguous_... S8032C5::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S8032C5*), ABISELECT(4568,2396), "S8032C1");
    check_base_class_offset(lv, (S8033C7*)(S8032C8*)(S8032C10*), ABISELECT(6384,3360), "S8032C1");
    check_base_class_offset(lv, (S8032C8*)(S8032C10*), ABISELECT(6384,3360), "S8032C1");
    /*is_ambiguous_... S8032C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C10*), ABISELECT(6640,3492), "S8032C1");
    check_base_class_offset(lv, (S8032C10*)(S8032C12*)(S8032C5*), ABISELECT(6384,3360), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8033C7*)(S8032C14*)(S8032C13*), ABISELECT(6736,3544), "S8032C1");
    /*is_ambiguous_... S8032C1::S8032C13 */ AMB_check_base_class_offset(lv, (S8032C14*)(S8032C13*), ABISELECT(6736,3544), "S8032C1");
    check_base_class_offset(lv, (S8032C13*)(S8032C12*)(S8032C5*), ABISELECT(6736,3544), "S8032C1");
    check_base_class_offset(lv, (S8033C4*)(S8032C12*)(S8032C5*), ABISELECT(6888,3632), "S8032C1");
    check_base_class_offset(lv, (S8032C15*)(S8032C12*)(S8032C5*), ABISELECT(6976,3708), "S8032C1");
    check_base_class_offset(lv, (S8032C12*)(S8032C5*), ABISELECT(3776,2000), "S8032C1");
    check_base_class_offset(lv, (S8032C5*), ABISELECT(3776,2000), "S8032C1");
    check_field_offset(lv, s8032c1f0, ABISELECT(5288,2788), "S8032C1.s8032c1f0");
    check_field_offset(lv, s8032c1f1, ABISELECT(5296,2792), "S8032C1.s8032c1f1");
    check_field_offset(lv, s8032c1f2, ABISELECT(5488,2888), "S8032C1.s8032c1f2");
    check_field_offset(lv, s8032c1f3, ABISELECT(5504,2900), "S8032C1.s8032c1f3");
    test_class_info(&lv, &cd_S8032C1);
    dp->~S8032C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8032C1(Test_S8032C1, "S8032C1", ABISELECT(7168,3804));

#else // __cplusplus

extern void _ZN7S8032C1C1Ev();
extern void _ZN7S8032C1D2Ev();
Name_Map name_map_S8032C1[] = {
  NSPAIR(_ZN7S8032C1C1Ev),
  NSPAIR(_ZN7S8032C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8032C2;
extern VTBL_ENTRY _ZTI7S8032C2[];
extern  VTBL_ENTRY _ZTV7S8032C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8032C6;
extern VTBL_ENTRY _ZTI7S8032C6[];
extern  VTBL_ENTRY _ZTV7S8032C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C6[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C11;
extern VTBL_ENTRY _ZTI8S8032C11[];
extern  VTBL_ENTRY _ZTV8S8032C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C11[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C8;
extern VTBL_ENTRY _ZTI7S8032C8[];
extern  VTBL_ENTRY _ZTV7S8032C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C10;
extern VTBL_ENTRY _ZTI8S8032C10[];
extern  VTBL_ENTRY _ZTV8S8032C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C10[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8032C14;
extern VTBL_ENTRY _ZTI8S8032C14[];
extern  VTBL_ENTRY _ZTV8S8032C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C14[];
extern Class_Descriptor cd_S8032C13;
extern VTBL_ENTRY _ZTI8S8032C13[];
extern  VTBL_ENTRY _ZTV8S8032C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C13[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8032C15;
extern VTBL_ENTRY _ZTI8S8032C15[];
extern  VTBL_ENTRY _ZTV8S8032C15[];
extern Class_Descriptor cd_S8032C12;
extern VTBL_ENTRY _ZTI8S8032C12[];
extern  VTBL_ENTRY _ZTV8S8032C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8032C12[];
extern Class_Descriptor cd_S8032C5;
extern VTBL_ENTRY _ZTI7S8032C5[];
extern  VTBL_ENTRY _ZTV7S8032C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C5[];
static Base_Class bases_S8032C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8032C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(3616,1912), //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(5696,2996), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(6192,3256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8032C8,    ABISELECT(6192,3256), //bcp->offset
    39, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S8032C6,    ABISELECT(5696,2996), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S8032C14,    ABISELECT(3616,1912), //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
    16, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8032C11,    ABISELECT(6336,3332), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S8032C13,    ABISELECT(3616,1912), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C4,    ABISELECT(4568,2396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C7,    ABISELECT(6384,3360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S8032C8,    ABISELECT(6384,3360), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6640,3492), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8032C10,    ABISELECT(6384,3360), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(6736,3544), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S8032C14,    ABISELECT(6736,3544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S8032C13,    ABISELECT(6736,3544), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(6888,3632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8032C15,    ABISELECT(6976,3708), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S8032C12,    ABISELECT(3776,2000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8032C5,    ABISELECT(3776,2000), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8032C1[];
extern void _ZN7S8032C1D1Ev();
extern void _ZN7S8032C1D0Ev();
extern void ABISELECT(_ZThn3616_N7S8032C1D1Ev,_ZThn1912_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn3616_N7S8032C1D0Ev,_ZThn1912_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn3776_N7S8032C1D1Ev,_ZThn2000_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn3776_N7S8032C1D0Ev,_ZThn2000_N7S8032C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn5696_N7S8032C1D1Ev,_ZThn2996_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn5696_N7S8032C1D0Ev,_ZThn2996_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6192_N7S8032C1D1Ev,_ZThn3256_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6192_N7S8032C1D0Ev,_ZThn3256_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6336_N7S8032C1D1Ev,_ZThn3332_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6336_N7S8032C1D0Ev,_ZThn3332_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6384_N7S8032C1D1Ev,_ZThn3360_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6384_N7S8032C1D0Ev,_ZThn3360_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6640_N7S8032C1D1Ev,_ZThn3492_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6640_N7S8032C1D0Ev,_ZThn3492_N7S8032C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev)();
extern void ABISELECT(_ZThn6736_N7S8032C1D1Ev,_ZThn3544_N7S8032C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev)();
extern void ABISELECT(_ZThn6736_N7S8032C1D0Ev,_ZThn3544_N7S8032C1D0Ev)() __attribute__((weak));
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY vtc_S8032C1[] = {
  ABISELECT(6976,3708),
  ABISELECT(6888,3632),
  ABISELECT(6736,3544),
  ABISELECT(6640,3492),
  ABISELECT(6384,3360),
  ABISELECT(6336,3332),
  ABISELECT(6192,3256),
  ABISELECT(5696,2996),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN7S8032C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C1D0Ev,
  ABISELECT(2720,1420),
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  ABISELECT(-3616,-1912),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8032C1D1Ev,_ZThn1912_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3616_N7S8032C1D0Ev,_ZThn1912_N7S8032C1D0Ev),
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  ABISELECT(-3776,-2000),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8032C1D1Ev,_ZThn2000_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3776_N7S8032C1D0Ev,_ZThn2000_N7S8032C1D0Ev),
  0,
  ABISELECT(-5696,-2996),
  ABISELECT(496,260),
  ABISELECT(-5696,-2996),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
  ABISELECT(-6192,-3256),
  ABISELECT(-6192,-3256),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev),
  ABISELECT(-6336,-3332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6336,-3332),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev),
  ABISELECT(-6384,-3360),
  ABISELECT(256,132),
  ABISELECT(-6384,-3360),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev),
  ABISELECT(-6640,-3492),
  ABISELECT(-6640,-3492),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev),
  ABISELECT(-6736,-3544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-6736,-3544),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev),
  0,
  ABISELECT(-6976,-3708),
  (VTBL_ENTRY)&(_ZTI7S8032C1[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern VTBL_ENTRY _ZTV7S8032C1[];
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__A__7S8032C1[] = {
  ABISELECT(2720,1420),
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__7S8032C1[] = {
  ABISELECT(2576,1344),
  ABISELECT(2080,1084),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C14D1Ev,_ZThn1084_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C14D0Ev,_ZThn1084_N8S8032C14D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C1[] = {
  0,
  ABISELECT(-2080,-1084),
  ABISELECT(496,260),
  ABISELECT(-2080,-1084),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C14D1Ev,_ZThn1344_N8S8032C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C14D0Ev,_ZThn1344_N8S8032C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C1[] = {
  ABISELECT(-2576,-1344),
  ABISELECT(-2576,-1344),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C13D1Ev,_ZThn1084_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2080_N8S8032C13D0Ev,_ZThn1084_N8S8032C13D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__A__7S8032C1[] = {
  0,
  ABISELECT(-2080,-1084),
  ABISELECT(496,260),
  ABISELECT(-2080,-1084),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C13D1Ev,_ZThn1344_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2576_N8S8032C13D0Ev,_ZThn1344_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__A__7S8032C1[] = {
  ABISELECT(-2576,-1344),
  ABISELECT(-2576,-1344),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZThn2720_N8S8032C13D1Ev,_ZThn1420_N8S8032C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
extern void ABISELECT(_ZThn2720_N8S8032C13D0Ev,_ZThn1420_N8S8032C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__A__7S8032C1[] = {
  ABISELECT(-2720,-1420),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2720,-1420),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
extern void _ZN7S8032C5D1Ev();
extern void _ZN7S8032C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C5__7S8032C1[] = {
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN7S8032C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C5D0Ev,
};
extern void _ZN8S8032C12D1Ev();
extern void _ZN8S8032C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(3200,1708),
  ABISELECT(3112,1632),
  ABISELECT(2560,1332),
  ABISELECT(2960,1544),
  ABISELECT(2416,1256),
  ABISELECT(1920,996),
  ABISELECT(2864,1492),
  ABISELECT(2608,1360),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2608_N8S8032C12D1Ev,_ZThn1360_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2608_N8S8032C12D0Ev,_ZThn1360_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2608,-1360),
  ABISELECT(256,132),
  ABISELECT(-2608,-1360),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2864_N8S8032C12D1Ev,_ZThn1492_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2864_N8S8032C12D0Ev,_ZThn1492_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2864,-1492),
  ABISELECT(-2864,-1492),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn1920_N8S8032C12D1Ev,_ZThn996_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn1920_N8S8032C12D0Ev,_ZThn996_N8S8032C12D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-1920,-996),
  ABISELECT(496,260),
  ABISELECT(-1920,-996),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2416_N8S8032C12D1Ev,_ZThn1256_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2416_N8S8032C12D0Ev,_ZThn1256_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2416,-1256),
  ABISELECT(-2416,-1256),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2960_N8S8032C12D1Ev,_ZThn1544_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2960_N8S8032C12D0Ev,_ZThn1544_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2960,-1544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1544),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1332_N8S8032C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev)();
extern void ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1332_N8S8032C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C1[] = {
  ABISELECT(-2560,-1332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1332),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-3200,-1708),
  (VTBL_ENTRY)&(_ZTI8S8032C12[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn1920_N7S8032C5D1Ev,_ZThn996_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn1920_N7S8032C5D0Ev,_ZThn996_N7S8032C5D0Ev)() __attribute__((weak));
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-1920,-996),
  ABISELECT(496,260),
  ABISELECT(-1920,-996),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2416_N7S8032C5D1Ev,_ZThn1256_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2416_N7S8032C5D0Ev,_ZThn1256_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C5__7S8032C1[] = {
  ABISELECT(-2416,-1256),
  ABISELECT(-2416,-1256),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1332_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1332_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C5__7S8032C1[] = {
  ABISELECT(-2560,-1332),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2560,-1332),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2608_N7S8032C5D1Ev,_ZThn1360_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2608_N7S8032C5D0Ev,_ZThn1360_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C5__7S8032C1[] = {
  ABISELECT(-2608,-1360),
  ABISELECT(256,132),
  ABISELECT(-2608,-1360),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2864_N7S8032C5D1Ev,_ZThn1492_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2864_N7S8032C5D0Ev,_ZThn1492_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__7S8032C5__7S8032C1[] = {
  ABISELECT(-2864,-1492),
  ABISELECT(-2864,-1492),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev)();
extern void ABISELECT(_ZThn2960_N7S8032C5D1Ev,_ZThn1544_N7S8032C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev)();
extern void ABISELECT(_ZThn2960_N7S8032C5D0Ev,_ZThn1544_N7S8032C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8032C13__7S8032C5__7S8032C1[] = {
  ABISELECT(-2960,-1544),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2960,-1544),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev),
};
extern void _ZN8S8032C152v3Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C15__7S8032C5__7S8032C1[] = {
  0,
  ABISELECT(-3200,-1708),
  (VTBL_ENTRY)&(_ZTI7S8032C5[0]),
  (VTBL_ENTRY)&_ZN8S8032C152v3Ev,
};
extern void _ZN7S8032C6D1Ev();
extern void _ZN7S8032C6D0Ev();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__7S8032C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&_ZN7S8032C6D1Ev,
  (VTBL_ENTRY)&_ZN7S8032C6D0Ev,
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev)();
extern void ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8032C8__7S8032C6__7S8032C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI7S8032C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void _ZN8S8032C11D1Ev();
extern void _ZN8S8032C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C11__7S8032C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C11__7S8032C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S8032C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D1Ev,_ZTv0_n12_N8S8032C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C11D0Ev,_ZTv0_n12_N8S8032C11D0Ev),
};
extern void _ZN8S8032C10D1Ev();
extern void _ZN8S8032C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C10__7S8032C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&_ZN8S8032C10D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S8032C10__7S8032C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S8032C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev),
};
extern void _ZN8S8032C13D1Ev();
extern void _ZN8S8032C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C13__A1__7S8032C1[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C13D0Ev,
};
extern void _ZN8S8032C14D1Ev();
extern void _ZN8S8032C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8032C148S8032C13__A1__7S8032C1[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&_ZN8S8032C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8032C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C148S8032C13__A1__7S8032C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C148S8032C13__A1__7S8032C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev)();
extern void _ZN7S8032C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S8032C6__8S8032C13__A1__7S8032C1[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev),
  (VTBL_ENTRY)&_ZN7S8032C62v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8032C8__8S8032C13__A1__7S8032C1[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev),
};
extern void _ZN8S8032C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S8032C11__8S8032C13__A1__7S8032C1[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S8032C13[0]),
  (VTBL_ENTRY)&_ZN8S8032C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev),
};
static  VTT_ENTRY vtt_S8032C1[] = {
  {&(_ZTV7S8032C1[10]),  10,75},
  {&(_tg__ZTV8S8032C13__A__7S8032C1[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__A__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__A__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__A__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C5__7S8032C1[10]),  10,12},
  {&(_tg__ZTV8S8032C127S8032C5__7S8032C1[10]),  10,12},
  {&(_tg__ZTV8S8032C10__8S8032C127S8032C5__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S8032C127S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C127S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__A1__8S8032C127S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__8S8032C127S8032C5__7S8032C1[6]),  6,8},
  {&(_tg__ZTV8S8032C11__8S8032C127S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV8S8032C15__8S8032C127S8032C5__7S8032C1[3]),  3,4},
  {&(_tg__ZTV7S8032C6__7S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__7S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C5__7S8032C1[5]),  5,8},
  {&(_tg__ZTV8S8032C10__7S8032C5__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__7S8032C5__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__7S8032C5__7S8032C1[6]),  6,8},
  {&(_tg__ZTV8S8032C15__7S8032C5__7S8032C1[3]),  3,4},
  {&(_ZTV7S8032C1[17]),  17,75},
  {&(_ZTV7S8032C1[36]),  36,75},
  {&(_ZTV7S8032C1[42]),  42,75},
  {&(_ZTV7S8032C1[49]),  49,75},
  {&(_ZTV7S8032C1[29]),  29,75},
  {&(_ZTV7S8032C1[56]),  56,75},
  {&(_ZTV7S8032C1[61]),  61,75},
  {&(_ZTV7S8032C1[69]),  69,75},
  {&(_ZTV7S8032C1[74]),  74,75},
  {&(_tg__ZTV7S8032C6__7S8032C1[3]),  3,6},
  {&(_tg__ZTV7S8032C8__7S8032C6__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__7S8032C1[3]),  3,6},
  {&(_tg__ZTV7S8032C8__8S8032C11__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C10__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S8032C10__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C13__A1__7S8032C1[5]),  5,7},
  {&(_tg__ZTV8S8032C148S8032C13__A1__7S8032C1[4]),  4,6},
  {&(_tg__ZTV7S8032C6__8S8032C148S8032C13__A1__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C148S8032C13__A1__7S8032C1[3]),  3,5},
  {&(_tg__ZTV7S8032C6__8S8032C13__A1__7S8032C1[5]),  5,8},
  {&(_tg__ZTV7S8032C8__8S8032C13__A1__7S8032C1[3]),  3,5},
  {&(_tg__ZTV8S8032C11__8S8032C13__A1__7S8032C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S8032C1[];
extern  VTBL_ENTRY _ZTV7S8032C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8032C1[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D0Ev,_ZTv0_n12_N8S8032C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D0Ev,_ZThn132_N8S8032C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C10D1Ev,_ZTv0_n12_N8S8032C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S8032C10D1Ev,_ZThn132_N8S8032C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D0Ev,_ZTv0_n12_N7S8032C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D0Ev,_ZThn260_N7S8032C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C6D1Ev,_ZTv0_n12_N7S8032C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S8032C6D1Ev,_ZThn260_N7S8032C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D0Ev,_ZTv0_n24_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8032C5D0Ev,_ZThn1544_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C5D1Ev,_ZTv0_n24_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N7S8032C5D1Ev,_ZThn1544_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D0Ev,_ZTv0_n20_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D0Ev,_ZThn1332_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C5D1Ev,_ZTv0_n20_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N7S8032C5D1Ev,_ZThn1332_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D0Ev,_ZTv0_n12_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8032C5D0Ev,_ZThn1492_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8032C5D0Ev,_ZThn1256_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C5D1Ev,_ZTv0_n12_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N7S8032C5D1Ev,_ZThn1492_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N7S8032C5D1Ev,_ZThn1256_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D0Ev,_ZTv0_n16_N7S8032C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8032C5D0Ev,_ZThn1360_N7S8032C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8032C5D0Ev,_ZThn996_N7S8032C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C5D1Ev,_ZTv0_n16_N7S8032C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N7S8032C5D1Ev,_ZThn1360_N7S8032C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N7S8032C5D1Ev,_ZThn996_N7S8032C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D0Ev,_ZTv0_n20_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D0Ev,_ZThn1332_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C12D1Ev,_ZTv0_n20_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S8032C12D1Ev,_ZThn1332_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D0Ev,_ZTv0_n24_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8032C12D0Ev,_ZThn1544_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S8032C12D1Ev,_ZTv0_n24_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S8032C12D1Ev,_ZThn1544_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D0Ev,_ZTv0_n12_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8032C12D0Ev,_ZThn1256_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8032C12D0Ev,_ZThn1492_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C12D1Ev,_ZTv0_n12_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2416_N8S8032C12D1Ev,_ZThn1256_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2864_N8S8032C12D1Ev,_ZThn1492_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D0Ev,_ZTv0_n16_N8S8032C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8032C12D0Ev,_ZThn996_N8S8032C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8032C12D0Ev,_ZThn1360_N8S8032C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C12D1Ev,_ZTv0_n16_N8S8032C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1920_N8S8032C12D1Ev,_ZThn996_N8S8032C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2608_N8S8032C12D1Ev,_ZThn1360_N8S8032C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D0Ev,_ZTv0_n20_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8032C13D0Ev,_ZThn1420_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S8032C13D1Ev,_ZTv0_n20_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2720_N8S8032C13D1Ev,_ZThn1420_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D0Ev,_ZTv0_n12_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C13D0Ev,_ZThn1344_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C13D1Ev,_ZTv0_n12_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C13D1Ev,_ZThn1344_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D0Ev,_ZTv0_n16_N8S8032C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C13D0Ev,_ZThn1084_N8S8032C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C13D1Ev,_ZTv0_n16_N8S8032C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C13D1Ev,_ZThn1084_N8S8032C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D0Ev,_ZTv0_n12_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C14D0Ev,_ZThn1344_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S8032C14D1Ev,_ZTv0_n12_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S8032C14D1Ev,_ZThn1344_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D0Ev,_ZTv0_n16_N8S8032C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C14D0Ev,_ZThn1084_N8S8032C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8032C14D1Ev,_ZTv0_n16_N8S8032C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S8032C14D1Ev,_ZThn1084_N8S8032C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C1D0Ev,_ZTv0_n24_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8032C1D0Ev,_ZThn3544_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8032C1D1Ev,_ZTv0_n24_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6736_N7S8032C1D1Ev,_ZThn3544_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C1D0Ev,_ZTv0_n20_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8032C1D0Ev,_ZThn3332_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S8032C1D1Ev,_ZTv0_n20_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6336_N7S8032C1D1Ev,_ZThn3332_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C1D0Ev,_ZTv0_n12_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8032C1D0Ev,_ZThn3492_N7S8032C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8032C1D0Ev,_ZThn3256_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S8032C1D1Ev,_ZTv0_n12_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6640_N7S8032C1D1Ev,_ZThn3492_N7S8032C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6192_N7S8032C1D1Ev,_ZThn3256_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C1D0Ev,_ZTv0_n16_N7S8032C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8032C1D0Ev,_ZThn3360_N7S8032C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8032C1D0Ev,_ZThn2996_N7S8032C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8032C1D1Ev,_ZTv0_n16_N7S8032C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6384_N7S8032C1D1Ev,_ZThn3360_N7S8032C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn5696_N7S8032C1D1Ev,_ZThn2996_N7S8032C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8032C1 = {  "S8032C1", // class name
  bases_S8032C1, 21,
  &(vtc_S8032C1[0]), // expected_vtbl_contents
  &(vtt_S8032C1[0]), // expected_vtt_contents
  ABISELECT(7168,3804), // object size
  NSPAIRA(_ZTI7S8032C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8032C1),75, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8032C1),46, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C3  {
  char s18423c3f0[2];
  void  mf18423c3(); // _ZN8S18423C39mf18423c3Ev
};
//SIG(-1 S18423C3) C1{ m Fc[2]}


void  S18423C3 ::mf18423c3(){}

static void Test_S18423C3()
{
  {
    init_simple_test("S18423C3");
    S18423C3 lv;
    check2(sizeof(lv), 2, "sizeof(S18423C3)");
    check2(__alignof__(lv), 1, "__alignof__(S18423C3)");
    check_field_offset(lv, s18423c3f0, 0, "S18423C3.s18423c3f0");
  }
}
static Arrange_To_Call_Me vS18423C3(Test_S18423C3, "S18423C3", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C5  {
  char s18423c5f0[4];
  short s18423c5f1[5];
  int s18423c5f2[4];
  char s18423c5f3;
  short s18423c5f4[8];
};
//SIG(-1 S18423C5) C1{ Fc[4] Fs[5] Fi[4] Fc Fs[8]}



static void Test_S18423C5()
{
  {
    init_simple_test("S18423C5");
    S18423C5 lv;
    check2(sizeof(lv), 52, "sizeof(S18423C5)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C5)");
    check_field_offset(lv, s18423c5f0, 0, "S18423C5.s18423c5f0");
    check_field_offset(lv, s18423c5f1, 4, "S18423C5.s18423c5f1");
    check_field_offset(lv, s18423c5f2, 16, "S18423C5.s18423c5f2");
    check_field_offset(lv, s18423c5f3, 32, "S18423C5.s18423c5f3");
    check_field_offset(lv, s18423c5f4, 34, "S18423C5.s18423c5f4");
  }
}
static Arrange_To_Call_Me vS18423C5(Test_S18423C5, "S18423C5", 52);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C4  {
  char s18423c4f0;
  int s18423c4f1[3];
  char s18423c4f2[9];
  int s18423c4f3;
  short s18423c4f4[64];
  int s18423c4f5[13];
  ::S18423C5 s18423c4f6;
  void *s18423c4f7[2];
  ::S17556C5_nt s18423c4f8;
  char s18423c4f9;
  void  mf18423c4(); // _ZN8S18423C49mf18423c4Ev
};
//SIG(-1 S18423C4) C1{ m Fc Fi[3] Fc[9] Fi Fs[64] Fi[13] FC2{ Fc[4] Fs[5] Fi[4] Fc Fs[8]} Fp[2] FC3{ m Fp Fi FC4{ m}} Fc}


void  S18423C4 ::mf18423c4(){}

static void Test_S18423C4()
{
  {
    init_simple_test("S18423C4");
    S18423C4 lv;
    check2(sizeof(lv), ABISELECT(304,288), "sizeof(S18423C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C4)");
    check_field_offset(lv, s18423c4f0, 0, "S18423C4.s18423c4f0");
    check_field_offset(lv, s18423c4f1, 4, "S18423C4.s18423c4f1");
    check_field_offset(lv, s18423c4f2, 16, "S18423C4.s18423c4f2");
    check_field_offset(lv, s18423c4f3, 28, "S18423C4.s18423c4f3");
    check_field_offset(lv, s18423c4f4, 32, "S18423C4.s18423c4f4");
    check_field_offset(lv, s18423c4f5, 160, "S18423C4.s18423c4f5");
    check_field_offset(lv, s18423c4f6, 212, "S18423C4.s18423c4f6");
    check_field_offset(lv, s18423c4f7, 264, "S18423C4.s18423c4f7");
    check_field_offset(lv, s18423c4f8, ABISELECT(280,272), "S18423C4.s18423c4f8");
    check_field_offset(lv, s18423c4f9, ABISELECT(296,284), "S18423C4.s18423c4f9");
  }
}
static Arrange_To_Call_Me vS18423C4(Test_S18423C4, "S18423C4", ABISELECT(304,288));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C11  {
  char s18423c11f0;
  int s18423c11f1;
  short s18423c11f2[66];
  void  mf18423c11(); // _ZN9S18423C1110mf18423c11Ev
};
//SIG(-1 S18423C11) C1{ m Fc Fi Fs[66]}


void  S18423C11 ::mf18423c11(){}

static void Test_S18423C11()
{
  {
    init_simple_test("S18423C11");
    S18423C11 lv;
    check2(sizeof(lv), 140, "sizeof(S18423C11)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C11)");
    check_field_offset(lv, s18423c11f0, 0, "S18423C11.s18423c11f0");
    check_field_offset(lv, s18423c11f1, 4, "S18423C11.s18423c11f1");
    check_field_offset(lv, s18423c11f2, 8, "S18423C11.s18423c11f2");
  }
}
static Arrange_To_Call_Me vS18423C11(Test_S18423C11, "S18423C11", 140);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C12  {
  char s18423c12f0;
  short s18423c12f1[176];
  void  mf18423c12(); // _ZN9S18423C1210mf18423c12Ev
};
//SIG(-1 S18423C12) C1{ m Fc Fs[176]}


void  S18423C12 ::mf18423c12(){}

static void Test_S18423C12()
{
  {
    init_simple_test("S18423C12");
    S18423C12 lv;
    check2(sizeof(lv), 354, "sizeof(S18423C12)");
    check2(__alignof__(lv), 2, "__alignof__(S18423C12)");
    check_field_offset(lv, s18423c12f0, 0, "S18423C12.s18423c12f0");
    check_field_offset(lv, s18423c12f1, 2, "S18423C12.s18423c12f1");
  }
}
static Arrange_To_Call_Me vS18423C12(Test_S18423C12, "S18423C12", 354);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C13  {
  char s18423c13f0;
  short s18423c13f1[99];
  void  mf18423c13(); // _ZN9S18423C1310mf18423c13Ev
};
//SIG(-1 S18423C13) C1{ m Fc Fs[99]}


void  S18423C13 ::mf18423c13(){}

static void Test_S18423C13()
{
  {
    init_simple_test("S18423C13");
    S18423C13 lv;
    check2(sizeof(lv), 200, "sizeof(S18423C13)");
    check2(__alignof__(lv), 2, "__alignof__(S18423C13)");
    check_field_offset(lv, s18423c13f0, 0, "S18423C13.s18423c13f0");
    check_field_offset(lv, s18423c13f1, 2, "S18423C13.s18423c13f1");
  }
}
static Arrange_To_Call_Me vS18423C13(Test_S18423C13, "S18423C13", 200);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C14  {
  char s18423c14f0;
  int s18423c14f1[2];
  void  mf18423c14(); // _ZN9S18423C1410mf18423c14Ev
};
//SIG(-1 S18423C14) C1{ m Fc Fi[2]}


void  S18423C14 ::mf18423c14(){}

static void Test_S18423C14()
{
  {
    init_simple_test("S18423C14");
    S18423C14 lv;
    check2(sizeof(lv), 12, "sizeof(S18423C14)");
    check2(__alignof__(lv), 4, "__alignof__(S18423C14)");
    check_field_offset(lv, s18423c14f0, 0, "S18423C14.s18423c14f0");
    check_field_offset(lv, s18423c14f1, 4, "S18423C14.s18423c14f1");
  }
}
static Arrange_To_Call_Me vS18423C14(Test_S18423C14, "S18423C14", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C15_nt  {
  void *s18423c15f0;
  int s18423c15f1;
  ::S7856C24 s18423c15f2;
  void  mf18423c15(); // _ZN12S18423C15_nt10mf18423c15Ev
};
//SIG(-1 S18423C15_nt) C1{ m Fp Fi FC2{ m}}


void  S18423C15_nt ::mf18423c15(){}

//skip512 S18423C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C17  {
  int s18423c17f0[4];
  ::S17556C5_nt s18423c17f1;
  char s18423c17f2[2];
  void  mf18423c17(); // _ZN9S18423C1710mf18423c17Ev
};
//SIG(-1 S18423C17) C1{ m Fi[4] FC2{ m Fp Fi FC3{ m}} Fc[2]}


void  S18423C17 ::mf18423c17(){}

static void Test_S18423C17()
{
  {
    init_simple_test("S18423C17");
    S18423C17 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18423C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C17)");
    check_field_offset(lv, s18423c17f0, 0, "S18423C17.s18423c17f0");
    check_field_offset(lv, s18423c17f1, 16, "S18423C17.s18423c17f1");
    check_field_offset(lv, s18423c17f2, ABISELECT(32,28), "S18423C17.s18423c17f2");
  }
}
static Arrange_To_Call_Me vS18423C17(Test_S18423C17, "S18423C17", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C20  {
  ::S17556C15_nt s18423c20f0;
  ::S40C18_nt s18423c20f1[4];
  void  mf18423c20(); // _ZN9S18423C2010mf18423c20Ev
};
//SIG(-1 S18423C20) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m Fi[3]}[4]}


void  S18423C20 ::mf18423c20(){}

static void Test_S18423C20()
{
  {
    init_simple_test("S18423C20");
    S18423C20 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S18423C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C20)");
    check_field_offset(lv, s18423c20f0, 0, "S18423C20.s18423c20f0");
    check_field_offset(lv, s18423c20f1, ABISELECT(24,16), "S18423C20.s18423c20f1");
  }
}
static Arrange_To_Call_Me vS18423C20(Test_S18423C20, "S18423C20", ABISELECT(72,64));

#else // __cplusplus

Class_Descriptor cd_S18423C20 = {  "S18423C20", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(72,64), // 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  S18423C24  {
  int s18423c24f0;
  ::S18423C15_nt s18423c24f1;
};
//SIG(1 S18423C24) C1{ Fi FC2{ m Fp Fi FC3{ m}}}



static void Test_S18423C24()
{
  {
    init_simple_test("S18423C24");
    S18423C24 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18423C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C24)");
    check_field_offset(lv, s18423c24f0, 0, "S18423C24.s18423c24f0");
    check_field_offset(lv, s18423c24f1, ABISELECT(8,4), "S18423C24.s18423c24f1");
  }
}
static Arrange_To_Call_Me vS18423C24(Test_S18423C24, "S18423C24", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C19  : S18423C20 {
  ::S18423C24 s18423c19f0[256];
};
//SIG(-1 S18423C19) C1{ BC2{ m FC3{ m Fp Fi[2] FC4{ m}} FC5{ m Fi[3]}[4]} FC6{ Fi FC7{ m Fp Fi FC8{ m}}}[256]}



static void Test_S18423C19()
{
  extern Class_Descriptor cd_S18423C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(778,1041)];
    init_test(&cd_S18423C19, buf);
    S18423C19 &lv = *(new (buf) S18423C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6216,4160), "sizeof(S18423C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C19)");
    check_base_class_offset(lv, (S18423C20*), 0, "S18423C19");
    check_field_offset(lv, s18423c19f0, ABISELECT(72,64), "S18423C19.s18423c19f0");
    test_class_info(&lv, &cd_S18423C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18423C19(Test_S18423C19, "S18423C19", ABISELECT(6216,4160));

#else // __cplusplus

extern Class_Descriptor cd_S18423C20;
static Base_Class bases_S18423C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18423C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S18423C19 = {  "S18423C19", // class name
  bases_S18423C19, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(6216,4160), // 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  S18423C26  {
  int s18423c26f0;
  ::S18423C15_nt s18423c26f1;
  int s18423c26f2;
};
//SIG(-1 S18423C26) C1{ Fi FC2{ m Fp Fi FC3{ m}} Fi}



static void Test_S18423C26()
{
  {
    init_simple_test("S18423C26");
    S18423C26 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18423C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C26)");
    check_field_offset(lv, s18423c26f0, 0, "S18423C26.s18423c26f0");
    check_field_offset(lv, s18423c26f1, ABISELECT(8,4), "S18423C26.s18423c26f1");
    check_field_offset(lv, s18423c26f2, ABISELECT(24,16), "S18423C26.s18423c26f2");
  }
}
static Arrange_To_Call_Me vS18423C26(Test_S18423C26, "S18423C26", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18423C25  : S18423C20 {
  ::S18423C26 s18423c25f0[256];
};
//SIG(-1 S18423C25) C1{ BC2{ m FC3{ m Fp Fi[2] FC4{ m}} FC5{ m Fi[3]}[4]} FC6{ Fi FC7{ m Fp Fi FC8{ m}} Fi}[256]}



static void Test_S18423C25()
{
  extern Class_Descriptor cd_S18423C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1034,1297)];
    init_test(&cd_S18423C25, buf);
    S18423C25 &lv = *(new (buf) S18423C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8264,5184), "sizeof(S18423C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C25)");
    check_base_class_offset(lv, (S18423C20*), 0, "S18423C25");
    check_field_offset(lv, s18423c25f0, ABISELECT(72,64), "S18423C25.s18423c25f0");
    test_class_info(&lv, &cd_S18423C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18423C25(Test_S18423C25, "S18423C25", ABISELECT(8264,5184));

#else // __cplusplus

extern Class_Descriptor cd_S18423C20;
static Base_Class bases_S18423C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18423C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S18423C25 = {  "S18423C25", // class name
  bases_S18423C25, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(8264,5184), // 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  S18423C1  {
  short s18423c1f0;
  int s18423c1f1;
  ::S17556C9_nt s18423c1f2;
  char s18423c1f3;
  ::S18423C3 s18423c1f4;
  ::S18423C4 s18423c1f5;
  ::S17556C12 s18423c1f6;
  ::S18423C11 s18423c1f7;
  ::S18423C12 s18423c1f8;
  ::S18423C13 s18423c1f9;
  void *s18423c1f10;
  ::S18423C14 s18423c1f11;
  char s18423c1f12[2];
  ::S18423C15_nt s18423c1f13;
  ::S18423C17 s18423c1f14;
  ::S40C13_nt s18423c1f15;
  ::S18423C19 s18423c1f16;
  ::S18423C25 s18423c1f17;
  int s18423c1f18[6];
  void  mf18423c1(); // _ZN8S18423C19mf18423c1Ev
};
//SIG(1 S18423C1) C1{ m Fs Fi FC2{ m Fc[2]} Fc FC3{ m Fc[2]} FC4{ m Fc Fi[3] Fc[9] Fi Fs[64] Fi[13] FC5{ Fc[4] Fs[5] Fi[4] Fc Fs[8]} Fp[2] FC6{ m Fp Fi FC7{ m}} Fc} FC8{ m Fc FC9{ m Fp Fi[2] FC7}} FC10{ m Fc Fi Fs[66]} FC11{ m Fc Fs[176]} FC12{ m Fc Fs[99]} Fp FC13{ m Fc Fi[2]} Fc[2] FC14{ m Fp Fi FC7} FC15{ m Fi[4] FC6 Fc[2]} FC16{ m Fi} FC17{ BC18{ m FC19{ m Fp Fi[2] FC20{ m}} FC21{ m Fi[3]}[4]} FC22{ Fi FC14}[256]} FC23{ BC18 FC24{ Fi FC14 Fi}[256]} Fi[6]}


void  S18423C1 ::mf18423c1(){}

static void Test_S18423C1()
{
  {
    init_simple_test("S18423C1");
    S18423C1 lv;
    check2(sizeof(lv), ABISELECT(15640,10456), "sizeof(S18423C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18423C1)");
    check_field_offset(lv, s18423c1f0, 0, "S18423C1.s18423c1f0");
    check_field_offset(lv, s18423c1f1, 4, "S18423C1.s18423c1f1");
    check_field_offset(lv, s18423c1f2, 8, "S18423C1.s18423c1f2");
    check_field_offset(lv, s18423c1f3, 10, "S18423C1.s18423c1f3");
    check_field_offset(lv, s18423c1f4, 11, "S18423C1.s18423c1f4");
    check_field_offset(lv, s18423c1f5, 16, "S18423C1.s18423c1f5");
    check_field_offset(lv, s18423c1f6, ABISELECT(320,304), "S18423C1.s18423c1f6");
    check_field_offset(lv, s18423c1f7, ABISELECT(352,324), "S18423C1.s18423c1f7");
    check_field_offset(lv, s18423c1f8, ABISELECT(492,464), "S18423C1.s18423c1f8");
    check_field_offset(lv, s18423c1f9, ABISELECT(846,818), "S18423C1.s18423c1f9");
    check_field_offset(lv, s18423c1f10, ABISELECT(1048,1020), "S18423C1.s18423c1f10");
    check_field_offset(lv, s18423c1f11, ABISELECT(1056,1024), "S18423C1.s18423c1f11");
    check_field_offset(lv, s18423c1f12, ABISELECT(1068,1036), "S18423C1.s18423c1f12");
    check_field_offset(lv, s18423c1f13, ABISELECT(1072,1040), "S18423C1.s18423c1f13");
    check_field_offset(lv, s18423c1f14, ABISELECT(1088,1052), "S18423C1.s18423c1f14");
    check_field_offset(lv, s18423c1f15, ABISELECT(1128,1084), "S18423C1.s18423c1f15");
    check_field_offset(lv, s18423c1f16, ABISELECT(1136,1088), "S18423C1.s18423c1f16");
    check_field_offset(lv, s18423c1f17, ABISELECT(7352,5248), "S18423C1.s18423c1f17");
    check_field_offset(lv, s18423c1f18, ABISELECT(15616,10432), "S18423C1.s18423c1f18");
  }
}
static Arrange_To_Call_Me vS18423C1(Test_S18423C1, "S18423C1", ABISELECT(15640,10456));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C10  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7853C10(); // tgen
  S7853C10(); // tgen
};
//SIG(-1 S7853C10) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7853C10 ::~S7853C10(){ note_dtor("S7853C10", this);} // tgen
S7853C10 ::S7853C10(){ note_ctor("S7853C10", this);} // tgen

static void Test_S7853C10()
{
  extern Class_Descriptor cd_S7853C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7853C10, buf);
    S7853C10 *dp, &lv = *(dp=new (buf) S7853C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7853C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C10)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7853C10");
    check_base_class_offset(lv, (S7856C15*), 0, "S7853C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S7853C10");
    test_class_info(&lv, &cd_S7853C10);
    dp->~S7853C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C10(Test_S7853C10, "S7853C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7853C10C1Ev();
extern void _ZN8S7853C10D1Ev();
Name_Map name_map_S7853C10[] = {
  NSPAIR(_ZN8S7853C10C1Ev),
  NSPAIR(_ZN8S7853C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7853C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7853C10[];
static  VTBL_ENTRY vtc_S7853C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern VTBL_ENTRY _ZTV8S7853C10[];
static  VTT_ENTRY vtt_S7853C10[] = {
  {&(_ZTV8S7853C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
Class_Descriptor cd_S7853C10 = {  "S7853C10", // class name
  bases_S7853C10, 3,
  &(vtc_S7853C10[0]), // expected_vtbl_contents
  &(vtt_S7853C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7853C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7853C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C10),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  S7853C9  : S7856C24 , virtual S7853C10 , virtual S7856C15 {
  ~S7853C9(); // tgen
  S7853C9(); // tgen
};
//SIG(-1 S7853C9) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7853C9 ::~S7853C9(){ note_dtor("S7853C9", this);} // tgen
S7853C9 ::S7853C9(){ note_ctor("S7853C9", this);} // tgen

static void Test_S7853C9()
{
  extern Class_Descriptor cd_S7853C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7853C9, buf);
    S7853C9 *dp, &lv = *(dp=new (buf) S7853C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7853C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C9)");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C9");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(8,4), "S7853C9");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C9");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C9");
    check_base_class_offset(lv, (S7853C10*), 0, "S7853C9");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C9");
    test_class_info(&lv, &cd_S7853C9);
    dp->~S7853C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C9(Test_S7853C9, "S7853C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7853C9C1Ev();
extern void _ZN7S7853C9D1Ev();
Name_Map name_map_S7853C9[] = {
  NSPAIR(_ZN7S7853C9C1Ev),
  NSPAIR(_ZN7S7853C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7853C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    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},
  {&cd_S7856C15,    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 _ZTI7S7853C9[];
static  VTBL_ENTRY vtc_S7853C9[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern VTBL_ENTRY _ZTV7S7853C9[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C9[] = {
  {&(_ZTV7S7853C9[6]),  6,6},
  {&(_ZTV7S7853C9[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
Class_Descriptor cd_S7853C9 = {  "S7853C9", // class name
  bases_S7853C9, 6,
  &(vtc_S7853C9[0]), // expected_vtbl_contents
  &(vtt_S7853C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7853C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7853C9),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C9),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  S7853C12  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7853C10 , virtual S7853C9 {
  virtual  ~S7853C12(); // _ZN8S7853C12D2Ev
  S7853C12(); // tgen
};
//SIG(-1 S7853C12) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S7853C12 ::~S7853C12(){ note_dtor("S7853C12", this);}
S7853C12 ::S7853C12(){ note_ctor("S7853C12", this);} // tgen

static void Test_S7853C12()
{
  extern Class_Descriptor cd_S7853C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C12, buf);
    S7853C12 *dp, &lv = *(dp=new (buf) S7853C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C12)");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C12");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C12");
    check_base_class_offset(lv, (S7856C12*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*), 0, "S7853C12");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C12");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C12");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C12");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(24,12), "S7853C12");
    check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C12");
    test_class_info(&lv, &cd_S7853C12);
    dp->~S7853C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C12(Test_S7853C12, "S7853C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7853C12C1Ev();
extern void _ZN8S7853C12D2Ev();
Name_Map name_map_S7853C12[] = {
  NSPAIR(_ZN8S7853C12C1Ev),
  NSPAIR(_ZN8S7853C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
static Base_Class bases_S7853C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C12[];
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY vtc_S7853C12[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern VTBL_ENTRY _ZTV8S7853C12[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__A__8S7853C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C12[] = {
  {&(_ZTV8S7853C12[7]),  7,15},
  {&(_tg__ZTV8S7853C10__A__8S7853C12[4]),  4,4},
  {&(_ZTV8S7853C12[15]),  15,15},
  {&(_ZTV8S7853C12[15]),  15,15},
  {&(_tg__ZTV7S7853C9__8S7853C12[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
Class_Descriptor cd_S7853C12 = {  "S7853C12", // class name
  bases_S7853C12, 10,
  &(vtc_S7853C12[0]), // expected_vtbl_contents
  &(vtt_S7853C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7853C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C12),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C12),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  S7853C6  : virtual S7856C24 , virtual S7856C15 , virtual S7853C9 , S7856C12 , S7853C12 {
  virtual  ~S7853C6(); // _ZN7S7853C6D2Ev
  S7853C6(); // tgen
};
//SIG(-1 S7853C6) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S7853C6 ::~S7853C6(){ note_dtor("S7853C6", this);}
S7853C6 ::S7853C6(){ note_ctor("S7853C6", this);} // tgen

static void Test_S7853C6()
{
  extern Class_Descriptor cd_S7853C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C6, buf);
    S7853C6 *dp, &lv = *(dp=new (buf) S7853C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C6)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7853C6");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(9,5), "S7853C6");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(24,12), "S7853C6");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(24,12), "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C6");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C6");
    check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C6");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(16,8), "S7853C6");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(8,4), "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), 0, "S7853C6");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), 0, "S7853C6");
    check_base_class_offset(lv, (S7853C12*), 0, "S7853C6");
    test_class_info(&lv, &cd_S7853C6);
    dp->~S7853C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C6(Test_S7853C6, "S7853C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7853C6C1Ev();
extern void _ZN7S7853C6D2Ev();
Name_Map name_map_S7853C6[] = {
  NSPAIR(_ZN7S7853C6C1Ev),
  NSPAIR(_ZN7S7853C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
static Base_Class bases_S7853C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C6[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY vtc_S7853C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern VTBL_ENTRY _ZTV7S7853C6[];
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__7S7853C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A1__7S7853C6[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__7S7853C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C6[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C6[] = {
  {&(_ZTV7S7853C6[7]),  7,15},
  {&(_tg__ZTV8S7853C12__7S7853C6[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A1__7S7853C6[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__7S7853C6[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__7S7853C6[6]),  6,6},
  {&(_ZTV7S7853C6[15]),  15,15},
  {&(_ZTV7S7853C6[15]),  15,15},
  {&(_tg__ZTV7S7853C9__7S7853C6[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
Class_Descriptor cd_S7853C6 = {  "S7853C6", // class name
  bases_S7853C6, 12,
  &(vtc_S7853C6[0]), // expected_vtbl_contents
  &(vtt_S7853C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7853C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7853C6),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C6),10, //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  S7853C13  : S7856C12 , S7856C15 , S7853C10 {
  int s7853c13f0;
  ~S7853C13(); // tgen
  S7853C13(); // tgen
};
//SIG(-1 S7853C13) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S7853C13 ::~S7853C13(){ note_dtor("S7853C13", this);} // tgen
S7853C13 ::S7853C13(){ note_ctor("S7853C13", this);} // tgen

static void Test_S7853C13()
{
  extern Class_Descriptor cd_S7853C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7853C13, buf);
    S7853C13 *dp, &lv = *(dp=new (buf) S7853C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7853C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C13)");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C13");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7853C13");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C13");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C13");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(12,8), "S7853C13");
    check_base_class_offset(lv, (S7853C10*), 0, "S7853C13");
    check_field_offset(lv, s7853c13f0, ABISELECT(8,4), "S7853C13.s7853c13f0");
    test_class_info(&lv, &cd_S7853C13);
    dp->~S7853C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C13(Test_S7853C13, "S7853C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7853C13C1Ev();
extern void _ZN8S7853C13D1Ev();
Name_Map name_map_S7853C13[] = {
  NSPAIR(_ZN8S7853C13C1Ev),
  NSPAIR(_ZN8S7853C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
static Base_Class bases_S7853C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S7853C10,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C13[];
static  VTBL_ENTRY vtc_S7853C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
extern VTBL_ENTRY _ZTV8S7853C13[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C13[] = {
  {&(_ZTV8S7853C13[4]),  4,4},
  {&(_tg__ZTV8S7853C10__8S7853C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
Class_Descriptor cd_S7853C13 = {  "S7853C13", // class name
  bases_S7853C13, 6,
  &(vtc_S7853C13[0]), // expected_vtbl_contents
  &(vtt_S7853C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7853C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7853C13),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C13),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  S7853C5  : virtual S7853C6 , virtual S7853C13 , virtual S7853C12 {
  int s7853c5f0[2];
  virtual  ~S7853C5(); // _ZN7S7853C5D2Ev
  S7853C5(); // tgen
};
//SIG(-1 S7853C5) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S7853C5 ::~S7853C5(){ note_dtor("S7853C5", this);}
S7853C5 ::S7853C5(){ note_ctor("S7853C5", this);} // tgen

static void Test_S7853C5()
{
  extern Class_Descriptor cd_S7853C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7853C5, buf);
    S7853C5 *dp, &lv = *(dp=new (buf) S7853C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7853C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C5)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(25,17), "S7853C5");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C5");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C5");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C5");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(24,16), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C5");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(16,12), "S7853C5");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C5");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C5");
    check_base_class_offset(lv, (S7853C13*), ABISELECT(32,20), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(56,32), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C5");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*), ABISELECT(48,28), "S7853C5");
    check_field_offset(lv, s7853c5f0, ABISELECT(8,4), "S7853C5.s7853c5f0");
    test_class_info(&lv, &cd_S7853C5);
    dp->~S7853C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C5(Test_S7853C5, "S7853C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7853C5C1Ev();
extern void _ZN7S7853C5D2Ev();
Name_Map name_map_S7853C5[] = {
  NSPAIR(_ZN7S7853C5C1Ev),
  NSPAIR(_ZN7S7853C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
static Base_Class bases_S7853C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C5[];
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7853C5[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C5[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTT_ENTRY vtt_S7853C5[] = {
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[20]),  20,36},
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[10]),  10,36},
  {&(_ZTV7S7853C5[26]),  26,36},
  {&(_ZTV7S7853C5[34]),  34,36},
  {&(_tg__ZTV7S7853C6__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C5[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C5[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C5[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C5[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C5 = {  "S7853C5", // class name
  bases_S7853C5, 22,
  &(vtc_S7853C5[0]), // expected_vtbl_contents
  &(vtt_S7853C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7853C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7853C5),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C5),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C16  : virtual S7856C15 {
  ~S7853C16(); // tgen
  S7853C16(); // tgen
};
//SIG(-1 S7853C16) C1{ VBC2{ m}}


S7853C16 ::~S7853C16(){ note_dtor("S7853C16", this);} // tgen
S7853C16 ::S7853C16(){ note_ctor("S7853C16", this);} // tgen

static void Test_S7853C16()
{
  extern Class_Descriptor cd_S7853C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7853C16, buf);
    S7853C16 *dp, &lv = *(dp=new (buf) S7853C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7853C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C16)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7853C16");
    test_class_info(&lv, &cd_S7853C16);
    dp->~S7853C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C16(Test_S7853C16, "S7853C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7853C16C1Ev();
extern void _ZN8S7853C16D1Ev();
Name_Map name_map_S7853C16[] = {
  NSPAIR(_ZN8S7853C16C1Ev),
  NSPAIR(_ZN8S7853C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7853C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S7853C16[];
static  VTBL_ENTRY vtc_S7853C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern VTBL_ENTRY _ZTV8S7853C16[];
static  VTT_ENTRY vtt_S7853C16[] = {
  {&(_ZTV8S7853C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
Class_Descriptor cd_S7853C16 = {  "S7853C16", // class name
  bases_S7853C16, 1,
  &(vtc_S7853C16[0]), // expected_vtbl_contents
  &(vtt_S7853C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7853C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7853C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C16),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  S7853C15  : virtual S7853C10 , virtual S7853C16 , virtual S7853C13 , S7856C12 , virtual S7853C6 {
  int s7853c15f0;
  virtual  ~S7853C15(); // _ZN8S7853C15D2Ev
  S7853C15(); // tgen
};
//SIG(-1 S7853C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S7853C15 ::~S7853C15(){ note_dtor("S7853C15", this);}
S7853C15 ::S7853C15(){ note_ctor("S7853C15", this);} // tgen

static void Test_S7853C15()
{
  extern Class_Descriptor cd_S7853C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7853C15, buf);
    S7853C15 *dp, &lv = *(dp=new (buf) S7853C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7853C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C15)");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C15");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(48,28), "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(12,8), "S7853C15");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(12,8), "S7853C15");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(12,8), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(12,8), "S7853C15");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), 0, "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), 0, "S7853C15");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C15");
    check_base_class_offset(lv, (S7853C16*), 0, "S7853C15");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(24,16), "S7853C15");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C15");
    check_base_class_offset(lv, (S7853C13*), ABISELECT(16,12), "S7853C15");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C15");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C15");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C15");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(40,24), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(32,20), "S7853C15");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(32,20), "S7853C15");
    check_field_offset(lv, s7853c15f0, ABISELECT(8,4), "S7853C15.s7853c15f0");
    test_class_info(&lv, &cd_S7853C15);
    dp->~S7853C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C15(Test_S7853C15, "S7853C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7853C15C1Ev();
extern void _ZN8S7853C15D2Ev();
Name_Map name_map_S7853C15[] = {
  NSPAIR(_ZN8S7853C15C1Ev),
  NSPAIR(_ZN8S7853C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
static Base_Class bases_S7853C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C15[];
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S7853C15D1Ev,_ZThn20_N8S7853C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S7853C15D0Ev,_ZThn20_N8S7853C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern VTBL_ENTRY _ZTV8S7853C15[];
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A1__8S7853C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A2__8S7853C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTT_ENTRY vtt_S7853C15[] = {
  {&(_ZTV8S7853C15[10]),  10,32},
  {&(_ZTV8S7853C15[32]),  32,32},
  {&(_ZTV8S7853C15[10]),  10,32},
  {&(_ZTV8S7853C15[16]),  16,32},
  {&(_ZTV8S7853C15[24]),  24,32},
  {&(_ZTV8S7853C15[32]),  32,32},
  {&(_tg__ZTV8S7853C10__8S7853C15[4]),  4,4},
  {&(_tg__ZTV8S7853C16__8S7853C15[3]),  3,3},
  {&(_tg__ZTV8S7853C13__8S7853C15[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A1__8S7853C15[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C15[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A2__8S7853C15[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C15[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7853C15D0Ev,_ZThn20_N8S7853C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7853C15D1Ev,_ZThn20_N8S7853C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C15 = {  "S7853C15", // class name
  bases_S7853C15, 20,
  &(vtc_S7853C15[0]), // expected_vtbl_contents
  &(vtt_S7853C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7853C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C17  : virtual S7853C12 , S7853C13 , S7853C9 , S7856C12 {
  virtual  ~S7853C17(); // _ZN8S7853C17D2Ev
  S7853C17(); // tgen
};
//SIG(-1 S7853C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S7853C17 ::~S7853C17(){ note_dtor("S7853C17", this);}
S7853C17 ::S7853C17(){ note_ctor("S7853C17", this);} // tgen

static void Test_S7853C17()
{
  extern Class_Descriptor cd_S7853C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7853C17, buf);
    S7853C17 *dp, &lv = *(dp=new (buf) S7853C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7853C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C17)");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(32,16), "S7853C17");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C17");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(33,17), "S7853C17");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(33,17), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(40,20), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(48,24), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(48,24), "S7853C17");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(40,20), "S7853C17");
    check_base_class_offset(lv, (S7853C12*), ABISELECT(24,12), "S7853C17");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), 0, "S7853C17");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(8,4), "S7853C17");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*), 0, "S7853C17");
    check_base_class_offset(lv, (S7853C13*), 0, "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C17");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), ABISELECT(16,8), "S7853C17");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7853C17");
    test_class_info(&lv, &cd_S7853C17);
    dp->~S7853C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C17(Test_S7853C17, "S7853C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7853C17C1Ev();
extern void _ZN8S7853C17D2Ev();
Name_Map name_map_S7853C17[] = {
  NSPAIR(_ZN8S7853C17C1Ev),
  NSPAIR(_ZN8S7853C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7853C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7853C12,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7853C13,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C17[];
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C17D1Ev,_ZThn12_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C17D0Ev,_ZThn12_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern VTBL_ENTRY _ZTV8S7853C17[];
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A__8S7853C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__8S7853C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__8S7853C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C17[] = {
  {&(_ZTV8S7853C17[8]),  8,32},
  {&(_tg__ZTV8S7853C13__8S7853C17[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C17[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C17[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A__8S7853C17[4]),  4,4},
  {&(_ZTV8S7853C17[24]),  24,32},
  {&(_ZTV8S7853C17[32]),  32,32},
  {&(_ZTV8S7853C17[32]),  32,32},
  {&(_ZTV8S7853C17[16]),  16,32},
  {&(_tg__ZTV8S7853C12__8S7853C17[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__8S7853C17[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C17D0Ev,_ZThn12_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C17D1Ev,_ZThn12_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C17 = {  "S7853C17", // class name
  bases_S7853C17, 19,
  &(vtc_S7853C17[0]), // expected_vtbl_contents
  &(vtt_S7853C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7853C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C4  : virtual S7853C5 , virtual S7856C9_nt , virtual S7853C15 , S7853C17 {
  virtual  ~S7853C4(); // _ZN7S7853C4D2Ev
  S7853C4(); // tgen
};
//SIG(-1 S7853C4) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S7853C4 ::~S7853C4(){ note_dtor("S7853C4", this);}
S7853C4 ::S7853C4(){ note_ctor("S7853C4", this);} // tgen

static void Test_S7853C4()
{
  extern Class_Descriptor cd_S7853C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7853C4, buf);
    S7853C4 *dp, &lv = *(dp=new (buf) S7853C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7853C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C4)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C4");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C4");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(57,33), "S7853C4");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(57,33), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(32,16), "S7853C4");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(48,28), "S7853C4");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(48,28), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(72,40), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(64,36), "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(64,36), "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(64,36), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(88,48), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(80,44), "S7853C4");
    /*is_ambiguous_... S7853C4::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(80,44), "S7853C4");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(80,44), "S7853C4");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(80,44), "S7853C4");
    check_base_class_offset(lv, (S7853C5*), ABISELECT(32,16), "S7853C4");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(96,52), "S7853C4");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(96,52), "S7853C4");
    check_base_class_offset(lv, (S7853C15*), ABISELECT(96,52), "S7853C4");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(8,4), "S7853C4");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C4");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*), 0, "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(16,8), "S7853C4");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(16,8), "S7853C4");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(24,12), "S7853C4");
    check_base_class_offset(lv, (S7853C17*), 0, "S7853C4");
    test_class_info(&lv, &cd_S7853C4);
    dp->~S7853C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C4(Test_S7853C4, "S7853C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7853C4C1Ev();
extern void _ZN7S7853C4D2Ev();
Name_Map name_map_S7853C4[] = {
  NSPAIR(_ZN7S7853C4C1Ev),
  NSPAIR(_ZN7S7853C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static Base_Class bases_S7853C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7853C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C4[];
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S7853C4[];
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__7S7853C4[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A1__7S7853C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A4__7S7853C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A1__7S7853C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__7S7853C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__7S7853C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C4[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C4[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C4[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C4[] = {
  {&(_ZTV7S7853C4[14]),  14,72},
  {&(_tg__ZTV8S7853C17__7S7853C4[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A4__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__7S7853C4[6]),  6,6},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[43]),  43,72},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[33]),  33,72},
  {&(_ZTV7S7853C4[49]),  49,72},
  {&(_ZTV7S7853C4[57]),  57,72},
  {&(_ZTV7S7853C4[70]),  70,72},
  {&(_ZTV7S7853C4[70]),  70,72},
  {&(_ZTV7S7853C4[22]),  22,72},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C5__7S7853C4[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C4[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C4[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C4[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C4[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C4[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C4[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C4 = {  "S7853C4", // class name
  bases_S7853C4, 36,
  &(vtc_S7853C4[0]), // expected_vtbl_contents
  &(vtt_S7853C4[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7853C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7853C4),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C4),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C18  : S7856C9_nt , virtual S7856C24 , S7853C5 , virtual S7853C17 {
  virtual  ~S7853C18(); // _ZN8S7853C18D2Ev
  virtual void  v1(); // _ZN8S7853C182v1Ev
  S7853C18(); // tgen
};
//SIG(-1 S7853C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


 S7853C18 ::~S7853C18(){ note_dtor("S7853C18", this);}
void  S7853C18 ::v1(){vfunc_called(this, "_ZN8S7853C182v1Ev");}
S7853C18 ::S7853C18(){ note_ctor("S7853C18", this);} // tgen

static void Test_S7853C18()
{
  extern Class_Descriptor cd_S7853C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7853C18, buf);
    S7853C18 *dp, &lv = *(dp=new (buf) S7853C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7853C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C18)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(25,17), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C18");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C18");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C18");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C18");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C18");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(24,16), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(16,12), "S7853C18");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(16,12), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C18");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(32,20), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(56,32), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C18");
    /*is_ambiguous_... S7853C18::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(48,28), "S7853C18");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(48,28), "S7853C18");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(48,28), "S7853C18");
    check_base_class_offset(lv, (S7853C5*), 0, "S7853C18");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(72,40), "S7853C18");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(64,36), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(80,44), "S7853C18");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(80,44), "S7853C18");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(88,48), "S7853C18");
    check_base_class_offset(lv, (S7853C17*), ABISELECT(64,36), "S7853C18");
    test_class_info(&lv, &cd_S7853C18);
    dp->~S7853C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C18(Test_S7853C18, "S7853C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S7853C18C1Ev();
extern void _ZN8S7853C18D2Ev();
Name_Map name_map_S7853C18[] = {
  NSPAIR(_ZN8S7853C18C1Ev),
  NSPAIR(_ZN8S7853C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
static Base_Class bases_S7853C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    13, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7853C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(80,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
    30, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C18[];
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C18D1Ev,_ZThn12_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S7853C18D0Ev,_ZThn12_N8S7853C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn36_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn36_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern VTBL_ENTRY _ZTV8S7853C18[];
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A1__8S7853C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A4__8S7853C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A1__8S7853C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__8S7853C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__8S7853C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__8S7853C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C18[] = {
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C18[8]),  8,10},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV7S7853C5__8S7853C18[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C18[8]),  8,10},
  {&(_ZTV8S7853C18[22]),  22,55},
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_ZTV8S7853C18[11]),  11,55},
  {&(_ZTV8S7853C18[28]),  28,55},
  {&(_ZTV8S7853C18[36]),  36,55},
  {&(_ZTV8S7853C18[47]),  47,55},
  {&(_ZTV8S7853C18[55]),  55,55},
  {&(_tg__ZTV7S7853C6__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C18[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C17__8S7853C18[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A4__8S7853C18[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C18[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A1__8S7853C18[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__8S7853C18[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__8S7853C18[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__8S7853C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn36_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn36_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7853C18D0Ev,_ZThn12_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7853C18D1Ev,_ZThn12_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C18 = {  "S7853C18", // class name
  bases_S7853C18, 33,
  &(vtc_S7853C18[0]), // expected_vtbl_contents
  &(vtt_S7853C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S7853C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C3  : virtual S7853C4 , S7856C24 , S7853C9 , S7853C18 {
  virtual  ~S7853C3(); // _ZN7S7853C3D2Ev
  S7853C3(); // tgen
};
//SIG(-1 S7853C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


 S7853C3 ::~S7853C3(){ note_dtor("S7853C3", this);}
S7853C3 ::S7853C3(){ note_ctor("S7853C3", this);} // tgen

static void Test_S7853C3()
{
  extern Class_Descriptor cd_S7853C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S7853C3, buf);
    S7853C3 *dp, &lv = *(dp=new (buf) S7853C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S7853C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C3)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(81,49), "S7853C3");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(81,49), "S7853C3");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), 0, "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(56,32), "S7853C3");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(80,48), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(72,44), "S7853C3");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*), ABISELECT(72,44), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(96,56), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(88,52), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(88,52), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*), ABISELECT(88,52), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(112,64), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(104,60), "S7853C3");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*), ABISELECT(104,60), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(104,60), "S7853C3");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(56,32), "S7853C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C3");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(120,68), "S7853C3");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(120,68), "S7853C3");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(120,68), "S7853C3");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(32,20), "S7853C3");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,24), "S7853C3");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,24), "S7853C3");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(48,28), "S7853C3");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(24,16), "S7853C3");
    check_base_class_offset(lv, (S7853C4*), ABISELECT(24,16), "S7853C3");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(8,4), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), 0, "S7853C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*), ABISELECT(8,4), "S7853C3");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*), ABISELECT(8,4), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(144,80), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(136,76), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(152,84), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(152,84), "S7853C3");
    /*is_ambiguous_... S7853C3::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(160,88), "S7853C3");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*), ABISELECT(136,76), "S7853C3");
    check_base_class_offset(lv, (S7853C18*), ABISELECT(8,4), "S7853C3");
    test_class_info(&lv, &cd_S7853C3);
    dp->~S7853C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C3(Test_S7853C3, "S7853C3", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S7853C3C1Ev();
extern void _ZN7S7853C3D2Ev();
Name_Map name_map_S7853C3[] = {
  NSPAIR(_ZN7S7853C3C1Ev),
  NSPAIR(_ZN7S7853C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
static Base_Class bases_S7853C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C9,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_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
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C3[];
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern VTBL_ENTRY _ZTV7S7853C3[];
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__7S7853C3[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C18__A1__7S7853C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C18__7S7853C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C18__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C18__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C18__7S7853C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C18__7S7853C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C18__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C3[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C3[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C3[] = {
  {&(_ZTV7S7853C3[16]),  16,122},
  {&(_tg__ZTV7S7853C9__A__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C18__7S7853C3[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C18__A1__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C18__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C18__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C18__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C18__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C18__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C18__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C18__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C18__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C18__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C18__7S7853C3[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C18__7S7853C3[6]),  6,6},
  {&(_ZTV7S7853C3[47]),  47,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[76]),  76,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[66]),  66,122},
  {&(_ZTV7S7853C3[82]),  82,122},
  {&(_ZTV7S7853C3[90]),  90,122},
  {&(_ZTV7S7853C3[103]),  103,122},
  {&(_ZTV7S7853C3[103]),  103,122},
  {&(_ZTV7S7853C3[55]),  55,122},
  {&(_ZTV7S7853C3[29]),  29,122},
  {&(_ZTV7S7853C3[114]),  114,122},
  {&(_ZTV7S7853C3[122]),  122,122},
  {&(_tg__ZTV7S7853C4__7S7853C3[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C3[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C5__7S7853C3[10]),  10,12},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C3[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C3[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C3[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C3[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C3[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C3[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C3[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C3 = {  "S7853C3", // class name
  bases_S7853C3, 52,
  &(vtc_S7853C3[0]), // expected_vtbl_contents
  &(vtt_S7853C3[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S7853C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7853C3),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C3),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C2  : virtual S7853C3 {
  int s7853c2f0[2];
  virtual  ~S7853C2(); // _ZN7S7853C2D2Ev
  S7853C2(); // tgen
};
//SIG(-1 S7853C2) C1{ VBC2{ VBC3{ VBC4{ VBC5{ VBC6{ m} VBC7{ m} VBC8{ BC6 VBC9{ VBC6 BC7 VBC10{ m}} VBC7} BC10 BC11{ BC7 VBC6 VBC10 BC9 VBC8 vd} vd} VBC12{ BC10 BC7 BC9 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC9 VBC15{ VBC7} VBC12 BC10 VBC5 vd Fi} BC16{ VBC11 BC12 BC8 BC10 vd} vd} BC6 BC8 BC17{ BC13 VBC6 BC4 VBC16 vd v1} vd} vd Fi[2]}


 S7853C2 ::~S7853C2(){ note_dtor("S7853C2", this);}
S7853C2 ::S7853C2(){ note_ctor("S7853C2", this);} // tgen

static void Test_S7853C2()
{
  extern Class_Descriptor cd_S7853C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,27)];
    init_test(&cd_S7853C2, buf);
    S7853C2 *dp, &lv = *(dp=new (buf) S7853C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,104), "sizeof(S7853C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C2)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(97,61), "S7853C2");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(97,61), "S7853C2");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(97,61), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C2");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C2");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C2");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C2");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(96,60), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(88,56), "S7853C2");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(88,56), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(112,68), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(104,64), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(104,64), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(104,64), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(128,76), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(120,72), "S7853C2");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(120,72), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(120,72), "S7853C2");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(72,44), "S7853C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C2");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(136,80), "S7853C2");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(136,80), "S7853C2");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(136,80), "S7853C2");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(48,32), "S7853C2");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,36), "S7853C2");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(56,36), "S7853C2");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(64,40), "S7853C2");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(40,28), "S7853C2");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(40,28), "S7853C2");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(16,12), "S7853C2");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(16,12), "S7853C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(160,92), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(152,88), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(168,96), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(168,96), "S7853C2");
    /*is_ambiguous_... S7853C2::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(176,100), "S7853C2");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(152,88), "S7853C2");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(24,16), "S7853C2");
    check_base_class_offset(lv, (S7853C3*), ABISELECT(16,12), "S7853C2");
    check_field_offset(lv, s7853c2f0, ABISELECT(8,4), "S7853C2.s7853c2f0");
    test_class_info(&lv, &cd_S7853C2);
    dp->~S7853C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C2(Test_S7853C2, "S7853C2", ABISELECT(184,104));

#else // __cplusplus

extern void _ZN7S7853C2C1Ev();
extern void _ZN7S7853C2D2Ev();
Name_Map name_map_S7853C2[] = {
  NSPAIR(_ZN7S7853C2C1Ev),
  NSPAIR(_ZN7S7853C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static Base_Class bases_S7853C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(97,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(97,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S7856C15,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(88,56), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,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
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(104,64), //bcp->offset
    99, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(120,72), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(72,44), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(136,80), //bcp->offset
    113, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(56,36), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(40,28), //bcp->offset
    53, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    52, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(16,12), //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
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,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
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(168,96), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(152,88), //bcp->offset
    126, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(24,16), //bcp->offset
    39, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(16,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C2[];
extern void _ZN7S7853C2D1Ev();
extern void _ZN7S7853C2D0Ev();
extern void ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C2D1Ev,_ZThn12_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C2D0Ev,_ZThn12_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7853C2D1Ev,_ZThn28_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7853C2D0Ev,_ZThn28_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C2D1Ev,_ZThn44_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C2D0Ev,_ZThn44_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7853C2D1Ev,_ZThn56_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7853C2D0Ev,_ZThn56_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C2D1Ev,_ZThn72_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C2D0Ev,_ZThn72_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C2D1Ev,_ZThn80_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C2D0Ev,_ZThn80_N7S7853C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S7853C2D1Ev,_ZThn88_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S7853C2D0Ev,_ZThn88_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C2[] = {
  ABISELECT(152,88),
  ABISELECT(136,80),
  ABISELECT(136,80),
  0,
  ABISELECT(120,72),
  ABISELECT(104,64),
  0,
  ABISELECT(88,56),
  ABISELECT(72,44),
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&_ZN7S7853C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C2D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-16,-12),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-16,-12),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-40,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev),
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  ABISELECT(-72,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev),
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern VTBL_ENTRY _ZTV7S7853C2[];
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C2[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-16,-12),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-16,-12),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A2__7S7853C2[] = {
  ABISELECT(81,49),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__7S7853C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__7S7853C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__7S7853C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__7S7853C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__7S7853C2[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__7S7853C2[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-40,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(57,33),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(80,44),
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C2[] = {
  ABISELECT(41,25),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-72,-44),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C2[] = {
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C2[] = {
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C2[] = {
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C2[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  ABISELECT(-136,-80),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C2[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C2[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C2[] = {
  ABISELECT(-55,-27),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  ABISELECT(-32,-16),
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C2[] = {
  0,
  ABISELECT(97,61),
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-11),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(97,61),
  0,
  0,
  ABISELECT(97,61),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C2[] = {
  ABISELECT(-71,-35),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C2[] = {
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[37]),  37,143},
  {&(_ZTV7S7853C2[68]),  68,143},
  {&(_ZTV7S7853C2[87]),  87,143},
  {&(_ZTV7S7853C2[97]),  97,143},
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[17]),  17,143},
  {&(_ZTV7S7853C2[103]),  103,143},
  {&(_ZTV7S7853C2[111]),  111,143},
  {&(_ZTV7S7853C2[124]),  124,143},
  {&(_ZTV7S7853C2[124]),  124,143},
  {&(_ZTV7S7853C2[76]),  76,143},
  {&(_ZTV7S7853C2[50]),  50,143},
  {&(_ZTV7S7853C2[135]),  135,143},
  {&(_ZTV7S7853C2[143]),  143,143},
  {&(_tg__ZTV7S7853C3__7S7853C2[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A2__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C2[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C2[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__7S7853C2[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__7S7853C2[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__7S7853C2[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C2[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C2[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C2[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C2[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C2[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C2[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C2[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C2[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C2[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C2[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C2[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C2[];
extern  VTBL_ENTRY _ZTV7S7853C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C2[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7853C2D0Ev,_ZThn88_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7853C2D1Ev,_ZThn88_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C2D0Ev,_ZThn72_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7853C2D0Ev,_ZThn56_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C2D1Ev,_ZThn72_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7853C2D1Ev,_ZThn56_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C2D0Ev,_ZThn80_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C2D0Ev,_ZThn44_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C2D1Ev,_ZThn80_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C2D1Ev,_ZThn44_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7853C2D0Ev,_ZThn28_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7853C2D1Ev,_ZThn28_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C2D0Ev,_ZThn12_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C2D1Ev,_ZThn12_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C2 = {  "S7853C2", // class name
  bases_S7853C2, 53,
  &(vtc_S7853C2[0]), // expected_vtbl_contents
  &(vtt_S7853C2[0]), // expected_vtt_contents
  ABISELECT(184,104), // object size
  NSPAIRA(_ZTI7S7853C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7853C2),143, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C2),102, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C19  : S7853C6 {
  virtual  ~S7853C19(); // _ZN8S7853C19D2Ev
  S7853C19(); // tgen
};
//SIG(-1 S7853C19) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} vd}


 S7853C19 ::~S7853C19(){ note_dtor("S7853C19", this);}
S7853C19 ::S7853C19(){ note_ctor("S7853C19", this);} // tgen

static void Test_S7853C19()
{
  extern Class_Descriptor cd_S7853C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7853C19, buf);
    S7853C19 *dp, &lv = *(dp=new (buf) S7853C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7853C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C19)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(9,5), "S7853C19");
    /*is_ambiguous_... S7853C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(9,5), "S7853C19");
    /*is_ambiguous_... S7853C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C19::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(24,12), "S7853C19");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(24,12), "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(24,12), "S7853C19");
    check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(16,8), "S7853C19");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(16,8), "S7853C19");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(16,8), "S7853C19");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C19");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), 0, "S7853C19");
    check_base_class_offset(lv, (S7853C6*), 0, "S7853C19");
    test_class_info(&lv, &cd_S7853C19);
    dp->~S7853C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C19(Test_S7853C19, "S7853C19", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7853C19C1Ev();
extern void _ZN8S7853C19D2Ev();
Name_Map name_map_S7853C19[] = {
  NSPAIR(_ZN8S7853C19C1Ev),
  NSPAIR(_ZN8S7853C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
static Base_Class bases_S7853C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    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 _ZTI8S7853C19[];
extern void _ZN8S7853C19D1Ev();
extern void _ZN8S7853C19D0Ev();
static  VTBL_ENTRY vtc_S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
  (VTBL_ENTRY)&_ZN8S7853C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C19D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
};
extern VTBL_ENTRY _ZTV8S7853C19[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C19[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C19[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C19[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C19[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTT_ENTRY vtt_S7853C19[] = {
  {&(_ZTV8S7853C19[7]),  7,15},
  {&(_tg__ZTV7S7853C6__8S7853C19[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C19[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C19[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C19[6]),  6,6},
  {&(_ZTV8S7853C19[15]),  15,15},
  {&(_ZTV8S7853C19[15]),  15,15},
  {&(_tg__ZTV7S7853C9__8S7853C19[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7853C19[];
extern  VTBL_ENTRY _ZTV8S7853C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C19[];
Class_Descriptor cd_S7853C19 = {  "S7853C19", // class name
  bases_S7853C19, 13,
  &(vtc_S7853C19[0]), // expected_vtbl_contents
  &(vtt_S7853C19[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7853C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7853C19),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C19),13, //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  S7853C21  : virtual S7853C6 , virtual S7853C4 {
  virtual  ~S7853C21(); // _ZN8S7853C21D2Ev
  S7853C21(); // tgen
};
//SIG(-1 S7853C21) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S7853C21 ::~S7853C21(){ note_dtor("S7853C21", this);}
S7853C21 ::S7853C21(){ note_ctor("S7853C21", this);} // tgen

static void Test_S7853C21()
{
  extern Class_Descriptor cd_S7853C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S7853C21, buf);
    S7853C21 *dp, &lv = *(dp=new (buf) S7853C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S7853C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C21)");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(17,9), "S7853C21");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(17,9), "S7853C21");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(17,9), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C21");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C21");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C21");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C21");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(16,8), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(8,4), "S7853C21");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(8,4), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(80,44), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(72,40), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(72,40), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(96,52), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C21");
    /*is_ambiguous_... S7853C21::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C21");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(88,48), "S7853C21");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C21");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(56,28), "S7853C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C21");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(104,56), "S7853C21");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(104,56), "S7853C21");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C21");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(32,16), "S7853C21");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,20), "S7853C21");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(40,20), "S7853C21");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(48,24), "S7853C21");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C21");
    check_base_class_offset(lv, (S7853C4*), ABISELECT(24,12), "S7853C21");
    test_class_info(&lv, &cd_S7853C21);
    dp->~S7853C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C21(Test_S7853C21, "S7853C21", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S7853C21C1Ev();
extern void _ZN8S7853C21D2Ev();
Name_Map name_map_S7853C21[] = {
  NSPAIR(_ZN8S7853C21C1Ev),
  NSPAIR(_ZN8S7853C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
static Base_Class bases_S7853C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C21[];
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C21D1Ev,_ZThn56_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C21D0Ev,_ZThn56_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C21[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S7853C21[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C21[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C21[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C21[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C17D1Ev,_ZThn36_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C17D0Ev,_ZThn36_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__8S7853C21[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__8S7853C21[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__8S7853C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__8S7853C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C21[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C21[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C5D1Ev,_ZThn20_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C5D0Ev,_ZThn20_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C21[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C21[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C21[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C21[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C21[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C21[] = {
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[25]),  25,90},
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[15]),  15,90},
  {&(_ZTV8S7853C21[42]),  42,90},
  {&(_ZTV8S7853C21[61]),  61,90},
  {&(_ZTV8S7853C21[67]),  67,90},
  {&(_ZTV8S7853C21[75]),  75,90},
  {&(_ZTV8S7853C21[88]),  88,90},
  {&(_ZTV8S7853C21[88]),  88,90},
  {&(_ZTV8S7853C21[50]),  50,90},
  {&(_tg__ZTV7S7853C6__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C4__8S7853C21[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C21[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C21[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C21[8]),  8,10},
  {&(_tg__ZTV8S7853C13__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C21[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C21[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C21[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C21[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C21[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C21[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C5D0Ev,_ZThn20_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C5D1Ev,_ZThn20_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C17D0Ev,_ZThn36_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C17D1Ev,_ZThn36_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C21D0Ev,_ZThn56_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C21D1Ev,_ZThn56_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C21 = {  "S7853C21", // class name
  bases_S7853C21, 37,
  &(vtc_S7853C21[0]), // expected_vtbl_contents
  &(vtt_S7853C21[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S7853C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7853C21),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C21),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C22  : S7856C15 , S7853C16 {
  virtual  ~S7853C22(); // _ZN8S7853C22D2Ev
  S7853C22(); // tgen
};
//SIG(-1 S7853C22) C1{ BC2{ m} BC3{ VBC2} vd}


 S7853C22 ::~S7853C22(){ note_dtor("S7853C22", this);}
S7853C22 ::S7853C22(){ note_ctor("S7853C22", this);} // tgen

static void Test_S7853C22()
{
  extern Class_Descriptor cd_S7853C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7853C22, buf);
    S7853C22 *dp, &lv = *(dp=new (buf) S7853C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7853C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C22)");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S7853C22");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(8,4), "S7853C22");
    check_base_class_offset(lv, (S7853C16*), 0, "S7853C22");
    test_class_info(&lv, &cd_S7853C22);
    dp->~S7853C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C22(Test_S7853C22, "S7853C22", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7853C22C1Ev();
extern void _ZN8S7853C22D2Ev();
Name_Map name_map_S7853C22[] = {
  NSPAIR(_ZN8S7853C22C1Ev),
  NSPAIR(_ZN8S7853C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
static Base_Class bases_S7853C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S7853C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C22[];
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY vtc_S7853C22[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
extern VTBL_ENTRY _ZTV8S7853C22[];
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C22[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C22[] = {
  {&(_ZTV8S7853C22[3]),  3,5},
  {&(_tg__ZTV8S7853C16__8S7853C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
Class_Descriptor cd_S7853C22 = {  "S7853C22", // class name
  bases_S7853C22, 3,
  &(vtc_S7853C22[0]), // expected_vtbl_contents
  &(vtt_S7853C22[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7853C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7853C22),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C22),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  S7853C20  : S7853C6 , virtual S7853C13 , virtual S7853C21 , S7853C22 , S77C13_nt {
  int s7853c20f0;
  ~S7853C20(); // tgen
  S7853C20(); // tgen
};
//SIG(-1 S7853C20) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S7853C20 ::~S7853C20(){ note_dtor("S7853C20", this);} // tgen
S7853C20 ::S7853C20(){ note_ctor("S7853C20", this);} // tgen

static void Test_S7853C20()
{
  extern Class_Descriptor cd_S7853C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S7853C20, buf);
    S7853C20 *dp, &lv = *(dp=new (buf) S7853C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S7853C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C20)");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), 0, "S7853C20");
    check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(28,16), "S7853C20");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*)(S7853C22*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(28,16), "S7853C20");
    check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(28,16), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(8,4), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C6*), 0, "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(40,24), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C13*), ABISELECT(32,20), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(32,20), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(32,20), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(64,36), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C21*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(56,32), "S7853C20");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(56,32), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(128,72), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(120,68), "S7853C20");
    /*is_ambiguous_... S7853C20::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(120,68), "S7853C20");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(120,68), "S7853C20");
    check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(120,68), "S7853C20");
    check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(104,56), "S7853C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C20");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(136,76), "S7853C20");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(136,76), "S7853C20");
    check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(136,76), "S7853C20");
    /*is_ambiguous_... S7853C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    /*is_ambiguous_... S7853C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,44), "S7853C20");
    check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C20");
    /*is_ambiguous_... S7853C17::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C20");
    /*is_ambiguous_... S7853C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(96,52), "S7853C20");
    check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C4*)(S7853C21*), ABISELECT(72,40), "S7853C20");
    check_base_class_offset(lv, (S7853C21*), ABISELECT(48,28), "S7853C20");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S7853C16*)(S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S7853C22*), ABISELECT(16,8), "S7853C20");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S7853C20");
    check_field_offset(lv, s7853c20f0, ABISELECT(24,12), "S7853C20.s7853c20f0");
    test_class_info(&lv, &cd_S7853C20);
    dp->~S7853C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C20(Test_S7853C20, "S7853C20", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S7853C20C1Ev();
extern void _ZN8S7853C20D1Ev();
Name_Map name_map_S7853C20[] = {
  NSPAIR(_ZN8S7853C20C1Ev),
  NSPAIR(_ZN8S7853C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7853C21;
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7853C22;
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S7853C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7853C10,    ABISELECT(48,28), //bcp->offset
    -1, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    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
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7853C21,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7853C16,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C22,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S7853C20[];
extern void _ZN8S7853C20D1Ev();
extern void _ZN8S7853C20D0Ev();
extern void ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C20D1Ev,_ZThn28_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C20D0Ev,_ZThn28_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C20D1Ev,_ZThn32_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C20D0Ev,_ZThn32_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn72_N8S7853C20D1Ev,_ZThn40_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn72_N8S7853C20D0Ev,_ZThn40_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C20D1Ev,_ZThn56_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C20D0Ev,_ZThn56_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn120_N8S7853C20D1Ev,_ZThn68_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn120_N8S7853C20D0Ev,_ZThn68_N8S7853C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn136_N8S7853C20D1Ev,_ZThn76_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn136_N8S7853C20D0Ev,_ZThn76_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C20[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&_ZN8S7853C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C20D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7853C20[];
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__A__8S7853C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C22__8S7853C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C168S7853C22__A1__8S7853C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C21__8S7853C20[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21__8S7853C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21__8S7853C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21__8S7853C20[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn72_N8S7853C21D1Ev,_ZThn40_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn72_N8S7853C21D0Ev,_ZThn40_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21__8S7853C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21__8S7853C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__A1__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A3__8S7853C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C20[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C17D1Ev,_ZThn28_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C17D0Ev,_ZThn28_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__8S7853C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__8S7853C20[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__8S7853C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__8S7853C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C20[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C20[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A2__8S7853C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A4__8S7853C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C20[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C20[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTT_ENTRY vtt_S7853C20[] = {
  {&(_ZTV8S7853C20[16]),  16,114},
  {&(_tg__ZTV7S7853C6__A__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C22__8S7853C20[3]),  3,5},
  {&(_tg__ZTV8S7853C168S7853C22__A1__8S7853C20[3]),  3,3},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[27]),  27,114},
  {&(_ZTV8S7853C20[43]),  43,114},
  {&(_ZTV8S7853C20[53]),  53,114},
  {&(_ZTV8S7853C20[70]),  70,114},
  {&(_ZTV8S7853C20[89]),  89,114},
  {&(_ZTV8S7853C20[99]),  99,114},
  {&(_ZTV8S7853C20[112]),  112,114},
  {&(_ZTV8S7853C20[112]),  112,114},
  {&(_ZTV8S7853C20[78]),  78,114},
  {&(_ZTV8S7853C20[21]),  21,114},
  {&(_tg__ZTV7S7853C9__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C6__8S7853C21__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C4__8S7853C21__8S7853C20[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C13__8S7853C21__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C21__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C6__A1__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__A1__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A3__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C4__8S7853C20[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__8S7853C20[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C20[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C20[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C20[8]),  8,10},
  {&(_tg__ZTV8S7853C12__A2__8S7853C20[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A4__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A2__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C20[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C15__8S7853C20[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C20[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C20[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C20[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7853C20[];
extern  VTBL_ENTRY _ZTV8S7853C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C20[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D0Ev,_ZThn36_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C4D1Ev,_ZThn36_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C17D0Ev,_ZThn28_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C17D1Ev,_ZThn28_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D0Ev,_ZThn48_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D0Ev,_ZThn28_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C21D1Ev,_ZThn48_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C21D1Ev,_ZThn28_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D0Ev,_ZThn12_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7853C21D1Ev,_ZThn12_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C21D0Ev,_ZThn40_N8S7853C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D0Ev,_ZThn4_N8S7853C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C21D1Ev,_ZThn40_N8S7853C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7853C21D1Ev,_ZThn4_N8S7853C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7853C20D0Ev,_ZThn76_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C20D0Ev,_ZThn56_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7853C20D1Ev,_ZThn76_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C20D1Ev,_ZThn56_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C20D0Ev,_ZThn40_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7853C20D1Ev,_ZThn40_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C20D0Ev,_ZThn68_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C20D0Ev,_ZThn32_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C20D1Ev,_ZThn68_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C20D1Ev,_ZThn32_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C20D0Ev,_ZThn28_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C20D1Ev,_ZThn28_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C20 = {  "S7853C20", // class name
  bases_S7853C20, 48,
  &(vtc_S7853C20[0]), // expected_vtbl_contents
  &(vtt_S7853C20[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S7853C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7853C20),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C20),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C24  : S7853C9 , virtual S7853C5 , S7853C4 , virtual S7853C3 {
  char s7853c24f0;
  virtual  ~S7853C24(); // _ZN8S7853C24D2Ev
  S7853C24(); // tgen
};
//SIG(-1 S7853C24) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


 S7853C24 ::~S7853C24(){ note_dtor("S7853C24", this);}
S7853C24 ::S7853C24(){ note_ctor("S7853C24", this);} // tgen

static void Test_S7853C24()
{
  extern Class_Descriptor cd_S7853C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7853C24, buf);
    S7853C24 *dp, &lv = *(dp=new (buf) S7853C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7853C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C24)");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), 0, "S7853C24");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), 0, "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(34,18), "S7853C24");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(34,18), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), ABISELECT(40,20), "S7853C24");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*), ABISELECT(40,20), "S7853C24");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(64,36), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(56,32), "S7853C24");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(56,32), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(80,44), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(72,40), "S7853C24");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(72,40), "S7853C24");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(72,40), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(96,52), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(88,48), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C5*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(40,20), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C24");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(104,56), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(16,8), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(24,12), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(32,16), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C4*), ABISELECT(8,4), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(152,84), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(160,88), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(160,88), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(168,92), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(144,80), "S7853C24");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(144,80), "S7853C24");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(120,64), "S7853C24");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(120,64), "S7853C24");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(184,100), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(176,96), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(192,104), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(192,104), "S7853C24");
    /*is_ambiguous_... S7853C24::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(200,108), "S7853C24");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(176,96), "S7853C24");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(128,68), "S7853C24");
    check_base_class_offset(lv, (S7853C3*), ABISELECT(120,64), "S7853C24");
    check_field_offset(lv, s7853c24f0, ABISELECT(33,17), "S7853C24.s7853c24f0");
    test_class_info(&lv, &cd_S7853C24);
    dp->~S7853C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C24(Test_S7853C24, "S7853C24", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN8S7853C24C1Ev();
extern void _ZN8S7853C24D2Ev();
Name_Map name_map_S7853C24[] = {
  NSPAIR(_ZN8S7853C24C1Ev),
  NSPAIR(_ZN8S7853C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
static Base_Class bases_S7853C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C9,    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
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7853C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(24,12), //bcp->offset
    35, //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
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    42, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    47, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(128,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
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,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
    63, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    57, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    60, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    62, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7853C24[];
extern void _ZN8S7853C24D1Ev();
extern void _ZN8S7853C24D0Ev();
extern void ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn40_N8S7853C24D1Ev,_ZThn20_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn40_N8S7853C24D0Ev,_ZThn20_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn56_N8S7853C24D1Ev,_ZThn32_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn56_N8S7853C24D0Ev,_ZThn32_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn88_N8S7853C24D1Ev,_ZThn48_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn88_N8S7853C24D0Ev,_ZThn48_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn104_N8S7853C24D1Ev,_ZThn56_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn104_N8S7853C24D0Ev,_ZThn56_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn120_N8S7853C24D1Ev,_ZThn64_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn120_N8S7853C24D0Ev,_ZThn64_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn144_N8S7853C24D1Ev,_ZThn80_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn144_N8S7853C24D0Ev,_ZThn80_N8S7853C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn176_N8S7853C24D1Ev,_ZThn96_N8S7853C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev)();
extern void ABISELECT(_ZThn176_N8S7853C24D0Ev,_ZThn96_N8S7853C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7853C24[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&_ZN8S7853C24D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C24D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern VTBL_ENTRY _ZTV8S7853C24[];
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C24[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A__8S7853C24[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A2__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C177S7853C4__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4__A__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A__8S7853C24[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__8S7853C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C5__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C24[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__8S7853C24[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C24[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C127S7853C6__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C6__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C9__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C24[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__8S7853C24[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C12__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C24[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C15__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__8S7853C24[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__8S7853C24[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A4__8S7853C24[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A4__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__8S7853C24[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__8S7853C187S7853C3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__8S7853C24[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__8S7853C24[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__8S7853C24[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__8S7853C24[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__8S7853C24[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__8S7853C24[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A2__8S7853C24[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C24[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A3__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C177S7853C4__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__A1__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C4__A1__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A1__8S7853C24[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A3__8S7853C24[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A6__8S7853C24[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A5__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A5__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__A1__8S7853C17__A2__8S7853C24[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A2__8S7853C24[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTT_ENTRY vtt_S7853C24[] = {
  {&(_ZTV8S7853C24[17]),  17,165},
  {&(_tg__ZTV7S7853C9__A__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__A__8S7853C24[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C177S7853C4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__A__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C4__A__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4__A__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__A__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__A__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A__8S7853C24[6]),  6,6},
  {&(_ZTV8S7853C24[17]),  17,165},
  {&(_ZTV8S7853C24[52]),  52,165},
  {&(_ZTV8S7853C24[62]),  62,165},
  {&(_ZTV8S7853C24[52]),  52,165},
  {&(_ZTV8S7853C24[68]),  68,165},
  {&(_ZTV8S7853C24[76]),  76,165},
  {&(_ZTV8S7853C24[33]),  33,165},
  {&(_ZTV8S7853C24[89]),  89,165},
  {&(_ZTV8S7853C24[89]),  89,165},
  {&(_ZTV8S7853C24[41]),  41,165},
  {&(_ZTV8S7853C24[109]),  109,165},
  {&(_ZTV8S7853C24[140]),  140,165},
  {&(_ZTV8S7853C24[148]),  148,165},
  {&(_ZTV8S7853C24[122]),  122,165},
  {&(_ZTV8S7853C24[157]),  157,165},
  {&(_ZTV8S7853C24[165]),  165,165},
  {&(_tg__ZTV8S7853C10__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C5__8S7853C24[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C10__7S7853C5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C127S7853C6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__7S7853C6__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C9__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C24[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C12__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C15__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C10__8S7853C15__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C15__8S7853C24[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C16__8S7853C24[3]),  3,3},
  {&(_tg__ZTV7S7853C3__8S7853C24[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A4__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A4__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__8S7853C24[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__8S7853C24[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C58S7853C187S7853C3__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__8S7853C187S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__8S7853C24[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__8S7853C24[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__8S7853C24[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__8S7853C24[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C4__A1__8S7853C24[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C177S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C5__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C10__7S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C4__A1__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__A1__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__A1__8S7853C24[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__A1__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C17__A2__8S7853C24[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A3__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A6__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A5__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A5__8S7853C24[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A2__8S7853C24[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A2__8S7853C24[6]),  6,6},
  {&(_tg__ZTV8S7853C10__A1__8S7853C17__A2__8S7853C24[4]),  4,4},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A2__8S7853C24[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7853C24[];
extern  VTBL_ENTRY _ZTV8S7853C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C24[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D0Ev,_ZThn28_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7853C18D1Ev,_ZThn28_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7853C24D0Ev,_ZThn96_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7853C24D1Ev,_ZThn96_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C24D0Ev,_ZThn80_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C24D1Ev,_ZThn80_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C24D0Ev,_ZThn64_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7853C24D1Ev,_ZThn64_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C24D0Ev,_ZThn48_N8S7853C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C24D0Ev,_ZThn32_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7853C24D1Ev,_ZThn48_N8S7853C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7853C24D1Ev,_ZThn32_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C24D0Ev,_ZThn56_N8S7853C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7853C24D0Ev,_ZThn20_N8S7853C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7853C24D1Ev,_ZThn56_N8S7853C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7853C24D1Ev,_ZThn20_N8S7853C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C24 = {  "S7853C24", // class name
  bases_S7853C24, 65,
  &(vtc_S7853C24[0]), // expected_vtbl_contents
  &(vtt_S7853C24[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI8S7853C24),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7853C24),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7853C24),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7853C1  : S7853C2 , virtual S7853C19 , S7853C20 , S7856C12 , virtual S7853C24 {
  void *s7853c1f0;
  virtual  ~S7853C1(); // _ZN7S7853C1D2Ev
  S7853C1(); // tgen
};
//SIG(1 S7853C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} vd Fi[2]} VBC19{ BC6 vd} BC20{ BC6 VBC13 VBC21{ VBC6 VBC4 vd} BC22{ BC8 BC16 vd} BC23{ m} Fi} BC11 VBC24{ BC9 VBC5 BC4 VBC3 vd Fc} vd Fp}


 S7853C1 ::~S7853C1(){ note_dtor("S7853C1", this);}
S7853C1 ::S7853C1(){ note_ctor("S7853C1", this);} // tgen

static void Test_S7853C1()
{
  extern Class_Descriptor cd_S7853C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,40)];
    init_test(&cd_S7853C1, buf);
    S7853C1 *dp, &lv = *(dp=new (buf) S7853C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S7853C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7853C1)");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C18*)(S7853C3*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C16*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C3*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    check_base_class_offset(lv, (S7856C15*)(S7853C16*)(S7853C22*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(137,81), "S7853C1");
    check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(137,81), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*), 0, "S7853C1");
    /*is_ambiguous_... S7853C15::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C15*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*), 0, "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C3*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C24*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C9*)(S7853C6*)(S7853C19*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*)(S7853C19*), 0, "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C6*)(S7853C20*), 0, "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C12*)(S7853C6*)(S7853C20*), 0, "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*), ABISELECT(136,80), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C5*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C15*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(128,76), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C21*), ABISELECT(128,76), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*), ABISELECT(152,88), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C5*), ABISELECT(144,84), "S7853C1");
    check_base_class_offset(lv, (S7853C13*)(S7853C15*), ABISELECT(144,84), "S7853C1");
    check_base_class_offset(lv, (S7853C13*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C13 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C20*), ABISELECT(144,84), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*), ABISELECT(168,96), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C5::S7853C12 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(160,92), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C5 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C24*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C5*)(S7853C4*)(S7853C24*), ABISELECT(112,64), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S7853C4*)(S7853C24*), 0, "S7853C1");
    check_base_class_offset(lv, (S7853C16*)(S7853C15*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C15*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C15*)(S7853C4*)(S7853C24*), ABISELECT(176,100), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(88,52), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(96,56), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*), ABISELECT(96,56), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*), ABISELECT(104,60), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*), ABISELECT(80,48), "S7853C1");
    check_base_class_offset(lv, (S7853C4*)(S7853C3*), ABISELECT(80,48), "S7853C1");
    check_base_class_offset(lv, (S7853C4*)(S7853C21*), ABISELECT(80,48), "S7853C1");
    /*is_ambiguous_... S7853C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C3*), ABISELECT(56,32), "S7853C1");
    /*is_ambiguous_... S7853C3::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C3*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    check_base_class_offset(lv, (S7853C5*)(S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*), ABISELECT(200,112), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*), ABISELECT(192,108), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*), ABISELECT(208,116), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*), ABISELECT(208,116), "S7853C1");
    /*is_ambiguous_... S7853C1::S7853C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*), ABISELECT(216,120), "S7853C1");
    check_base_class_offset(lv, (S7853C17*)(S7853C18*)(S7853C3*), ABISELECT(192,108), "S7853C1");
    check_base_class_offset(lv, (S7853C18*)(S7853C3*), ABISELECT(64,36), "S7853C1");
    check_base_class_offset(lv, (S7853C3*)(S7853C2*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7853C3*)(S7853C24*), ABISELECT(56,32), "S7853C1");
    check_base_class_offset(lv, (S7853C2*), 0, "S7853C1");
    /*is_ambiguous_... S7853C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(232,128), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C12::S7853C10 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C12*)(S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C6*)(S7853C19*), ABISELECT(224,124), "S7853C1");
    check_base_class_offset(lv, (S7853C19*), ABISELECT(224,124), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(24,16), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C12*)(S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C20::S7853C6 */ AMB_check_base_class_offset(lv, (S7853C6*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    check_base_class_offset(lv, (S7853C21*)(S7853C20*), ABISELECT(240,132), "S7853C1");
    /*is_ambiguous_... S7853C22::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S7853C16*)(S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S7853C22*)(S7853C20*), ABISELECT(32,20), "S7853C1");
    check_base_class_offset(lv, (S77C13_nt*)(S7853C20*), ABISELECT(16,12), "S7853C1");
    check_base_class_offset(lv, (S7853C20*), ABISELECT(16,12), "S7853C1");
    /*is_ambiguous_... S7853C1::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C24*), ABISELECT(248,136), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C9 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C24*), ABISELECT(248,136), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(264,144), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C10*)(S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C13*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(272,148), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C9*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(272,148), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(280,152), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C17*)(S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    /*is_ambiguous_... S7853C24::S7853C4 */ AMB_check_base_class_offset(lv, (S7853C4*)(S7853C24*), ABISELECT(256,140), "S7853C1");
    check_base_class_offset(lv, (S7853C24*), ABISELECT(248,136), "S7853C1");
    check_field_offset(lv, s7853c1f0, ABISELECT(48,28), "S7853C1.s7853c1f0");
    test_class_info(&lv, &cd_S7853C1);
    dp->~S7853C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7853C1(Test_S7853C1, "S7853C1", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN7S7853C1C1Ev();
extern void _ZN7S7853C1D2Ev();
Name_Map name_map_S7853C1[] = {
  NSPAIR(_ZN7S7853C1C1Ev),
  NSPAIR(_ZN7S7853C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C15;
extern VTBL_ENTRY _ZTI8S7853C15[];
extern  VTBL_ENTRY _ZTV8S7853C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7853C5;
extern VTBL_ENTRY _ZTI7S7853C5[];
extern  VTBL_ENTRY _ZTV7S7853C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C18;
extern VTBL_ENTRY _ZTI8S7853C18[];
extern  VTBL_ENTRY _ZTV8S7853C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C18[];
extern Class_Descriptor cd_S7853C3;
extern VTBL_ENTRY _ZTI7S7853C3[];
extern  VTBL_ENTRY _ZTV7S7853C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C3[];
extern Class_Descriptor cd_S7853C2;
extern VTBL_ENTRY _ZTI7S7853C2[];
extern  VTBL_ENTRY _ZTV7S7853C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7853C19;
extern VTBL_ENTRY _ZTI8S7853C19[];
extern  VTBL_ENTRY _ZTV8S7853C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C19[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C12;
extern VTBL_ENTRY _ZTI8S7853C12[];
extern  VTBL_ENTRY _ZTV8S7853C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C12[];
extern Class_Descriptor cd_S7853C6;
extern VTBL_ENTRY _ZTI7S7853C6[];
extern  VTBL_ENTRY _ZTV7S7853C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C6[];
extern Class_Descriptor cd_S7853C21;
extern VTBL_ENTRY _ZTI8S7853C21[];
extern  VTBL_ENTRY _ZTV8S7853C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C21[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C16;
extern VTBL_ENTRY _ZTI8S7853C16[];
extern  VTBL_ENTRY _ZTV8S7853C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C16[];
extern Class_Descriptor cd_S7853C22;
extern VTBL_ENTRY _ZTI8S7853C22[];
extern  VTBL_ENTRY _ZTV8S7853C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C22[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7853C20;
extern VTBL_ENTRY _ZTI8S7853C20[];
extern  VTBL_ENTRY _ZTV8S7853C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C20[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7853C10;
extern VTBL_ENTRY _ZTI8S7853C10[];
extern  VTBL_ENTRY _ZTV8S7853C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C10[];
extern Class_Descriptor cd_S7853C13;
extern VTBL_ENTRY _ZTI8S7853C13[];
extern  VTBL_ENTRY _ZTV8S7853C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7853C9;
extern VTBL_ENTRY _ZTI7S7853C9[];
extern  VTBL_ENTRY _ZTV7S7853C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7853C17;
extern VTBL_ENTRY _ZTI8S7853C17[];
extern  VTBL_ENTRY _ZTV8S7853C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C17[];
extern Class_Descriptor cd_S7853C4;
extern VTBL_ENTRY _ZTI7S7853C4[];
extern  VTBL_ENTRY _ZTV7S7853C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C4[];
extern Class_Descriptor cd_S7853C24;
extern VTBL_ENTRY _ZTI8S7853C24[];
extern  VTBL_ENTRY _ZTV8S7853C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7853C24[];
static Base_Class bases_S7853C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    ABISELECT(137,81), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7853C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7853C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(128,76), //bcp->offset
    115, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(144,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,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
    16, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(144,84), //bcp->offset
    125, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(160,92), //bcp->offset
    129, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7853C5,    ABISELECT(112,64), //bcp->offset
    102, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7853C16,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7853C15,    ABISELECT(176,100), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(96,56), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(80,48), //bcp->offset
    79, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    52, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    51, //immediately_derived
  0, 0},
  {&cd_S7853C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(192,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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(200,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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,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
    45, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(208,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
    48, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(208,116), //bcp->offset
    163, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(216,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
    50, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(192,108), //bcp->offset
    152, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7853C18,    ABISELECT(64,36), //bcp->offset
    65, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7853C3,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7853C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(224,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
    59, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(224,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
    57, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7853C19,    ABISELECT(224,124), //bcp->offset
    169, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    66, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    65, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    64, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7853C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7853C6,    ABISELECT(16,12), //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
    41, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7853C21,    ABISELECT(240,132), //bcp->offset
    179, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    70, //immediately_derived
  0, 0},
  {&cd_S7853C16,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7853C22,    ABISELECT(32,20), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    72, //immediately_derived
  0, 0},
  {&cd_S7853C20,    ABISELECT(16,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(248,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
    75, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(256,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
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(264,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
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(256,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
    79, //immediately_derived
  0, 0},
  {&cd_S7853C10,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7853C13,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(272,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
    82, //immediately_derived
  0, 0},
  {&cd_S7853C9,    ABISELECT(272,148), //bcp->offset
    233, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(280,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
    84, //immediately_derived
  0, 0},
  {&cd_S7853C17,    ABISELECT(256,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7853C4,    ABISELECT(256,140), //bcp->offset
    217, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S7853C24,    ABISELECT(248,136), //bcp->offset
    197, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7853C1[];
extern void _ZN7S7853C1D1Ev();
extern void _ZN7S7853C1D0Ev();
extern void ABISELECT(_ZThn16_N7S7853C1D1Ev,_ZThn12_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C1D0Ev,_ZThn12_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C1D1Ev,_ZThn20_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C1D0Ev,_ZThn20_N7S7853C1D0Ev)();
extern void ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C1D1Ev,_ZThn32_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C1D0Ev,_ZThn32_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S7853C1D1Ev,_ZTvn4_n68_N7S7853C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C1D0Ev,_ZTvn4_n68_N7S7853C1D0Ev)();
extern void _ZN8S7853C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C1D1Ev,_ZThn48_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C1D0Ev,_ZThn48_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7853C1D1Ev,_ZThn64_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7853C1D0Ev,_ZThn64_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7853C1D1Ev,_ZThn76_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S7853C1D0Ev,_ZThn76_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S7853C1D1Ev,_ZThn92_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S7853C1D0Ev,_ZThn92_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7853C1D1Ev,_ZThn100_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7853C1D0Ev,_ZThn100_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7853C1D1Ev,_ZThn108_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7853C1D0Ev,_ZThn108_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7853C1D1Ev,_ZThn124_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S7853C1D0Ev,_ZThn124_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S7853C1D1Ev,_ZThn132_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S7853C1D0Ev,_ZThn132_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7853C1D1Ev,_ZThn136_N7S7853C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7853C1D0Ev,_ZThn136_N7S7853C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n144_N7S7853C1D1Ev,_ZTvn4_n72_N7S7853C1D1Ev)();
extern void ABISELECT(_ZTvn8_n144_N7S7853C1D0Ev,_ZTvn4_n72_N7S7853C1D0Ev)();
static  VTBL_ENTRY vtc_S7853C1[] = {
  ABISELECT(248,136),
  ABISELECT(240,132),
  ABISELECT(224,124),
  ABISELECT(192,108),
  ABISELECT(176,100),
  ABISELECT(176,100),
  0,
  ABISELECT(160,92),
  ABISELECT(144,84),
  0,
  ABISELECT(128,76),
  ABISELECT(112,64),
  ABISELECT(80,48),
  ABISELECT(56,32),
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&_ZN7S7853C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C1D0Ev,
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  ABISELECT(144,80),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(112,64),
  ABISELECT(224,120),
  ABISELECT(128,72),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7853C1D1Ev,_ZThn12_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7853C1D0Ev,_ZThn12_N7S7853C1D0Ev),
  ABISELECT(105,61),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7853C1D1Ev,_ZThn20_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7853C1D0Ev,_ZThn20_N7S7853C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-56,-32),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C1D1Ev,_ZTvn4_n68_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C1D0Ev,_ZTvn4_n68_N7S7853C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
  ABISELECT(-80,-48),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev),
  ABISELECT(-240,-132),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev),
  ABISELECT(-248,-136),
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-192,-104),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-248,-136),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-248,-136),
  ABISELECT(-120,-60),
  ABISELECT(-136,-72),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7853C1D1Ev,_ZTvn4_n72_N7S7853C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n144_N7S7853C1D0Ev,_ZTvn4_n72_N7S7853C1D0Ev),
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI7S7853C1[0]),
};
extern VTBL_ENTRY _ZTV7S7853C1[];
extern void _ZN7S7853C2D1Ev();
extern void _ZN7S7853C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C2__7S7853C1[] = {
  ABISELECT(192,108),
  ABISELECT(176,100),
  ABISELECT(176,100),
  0,
  ABISELECT(160,92),
  ABISELECT(144,84),
  0,
  ABISELECT(128,76),
  ABISELECT(112,64),
  ABISELECT(80,48),
  ABISELECT(56,32),
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&_ZN7S7853C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C2D0Ev,
};
extern void ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C2D1Ev,_ZThn32_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C2D0Ev,_ZThn32_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C2__7S7853C1[] = {
  ABISELECT(8,4),
  ABISELECT(-56,-32),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C2D1Ev,_ZThn48_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C2D0Ev,_ZThn48_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C2__7S7853C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7853C2D1Ev,_ZThn64_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7853C2D0Ev,_ZThn64_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C2__7S7853C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7853C2D1Ev,_ZThn76_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7853C2D0Ev,_ZThn76_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C2__7S7853C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C2__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7853C2D1Ev,_ZThn92_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7853C2D0Ev,_ZThn92_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7853C2D1Ev,_ZThn100_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7853C2D0Ev,_ZThn100_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C2__7S7853C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C2__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D1Ev,_ZTvn4_n68_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S7853C2D0Ev,_ZTvn4_n68_N7S7853C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7853C2D1Ev,_ZThn108_N7S7853C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7853C2D0Ev,_ZThn108_N7S7853C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C2__7S7853C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C2__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7853C2[0]),
};
extern void _ZN8S7853C20D1Ev();
extern void _ZN8S7853C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C20__7S7853C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  ABISELECT(144,80),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(112,64),
  ABISELECT(224,120),
  ABISELECT(128,72),
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&_ZN8S7853C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C20D0Ev,
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C68S7853C20__A2__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C68S7853C20__A3__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C68S7853C20__A7__7S7853C1[] = {
  ABISELECT(121,69),
  ABISELECT(121,69),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
extern void _ZN8S7853C22D1Ev();
extern void _ZN8S7853C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C228S7853C20__7S7853C1[] = {
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C22[0]),
  (VTBL_ENTRY)&_ZN8S7853C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C168S7853C228S7853C20__A1__7S7853C1[] = {
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C20__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C20__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn224_N8S7853C20D1Ev,_ZThn120_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn224_N8S7853C20D0Ev,_ZThn120_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C21__8S7853C20__7S7853C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S7853C20D1Ev,_ZThn64_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S7853C20D0Ev,_ZThn64_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__A1__8S7853C20__7S7853C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C20D1Ev,_ZThn36_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C20D0Ev,_ZThn36_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C20__7S7853C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C20D1Ev,_ZThn52_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C20D0Ev,_ZThn52_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C20__7S7853C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn144_N8S7853C20D1Ev,_ZThn80_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn144_N8S7853C20D0Ev,_ZThn80_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A2__8S7853C20__7S7853C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn160_N8S7853C20D1Ev,_ZThn88_N8S7853C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev)();
extern void ABISELECT(_ZThn160_N8S7853C20D0Ev,_ZThn88_N8S7853C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C20__7S7853C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
};
extern void ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C22__8S7853C20__7S7853C1[] = {
  ABISELECT(105,61),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D1Ev,_ZThn8_N8S7853C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7853C20D0Ev,_ZThn8_N8S7853C20D0Ev),
};
extern void _ZN7S7853C3D1Ev();
extern void _ZN7S7853C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C3__7S7853C1[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&_ZN7S7853C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C97S7853C3__A2__7S7853C1[] = {
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN8S7853C18D1Ev();
extern void _ZN8S7853C18D0Ev();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&_ZN8S7853C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7853C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C3__7S7853C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C3__7S7853C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C3__7S7853C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C3__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C3__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C3__7S7853C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C18__7S7853C3__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D1Ev,_ZThn4_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7853C3D0Ev,_ZThn4_N7S7853C3D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C3__7S7853C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7853C3[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C4__7S7853C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C1[] = {
  ABISELECT(57,33),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C4__7S7853C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C4__7S7853C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C4__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C4__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C4__7S7853C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C4__7S7853C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void _ZN7S7853C5D1Ev();
extern void _ZN7S7853C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&_ZN7S7853C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C5__7S7853C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C5__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C5__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C5__7S7853C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7853C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev),
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C6__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C1[] = {
  ABISELECT(9,5),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C6__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C13__A2__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C12__A3__7S7853C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
extern void _ZN8S7853C15D1Ev();
extern void _ZN8S7853C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&_ZN8S7853C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C15__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C15__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C15__7S7853C1[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7853C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D1Ev,_ZTv0_n32_N8S7853C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C15D0Ev,_ZTv0_n32_N8S7853C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C16__7S7853C1[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C16[0]),
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A1__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C17__A2__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C1[] = {
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A3__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(208,116),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void _ZN8S7853C19D1Ev();
extern void _ZN8S7853C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C19__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
  (VTBL_ENTRY)&_ZN8S7853C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C19D0Ev,
};
extern void _ZN7S7853C6D1Ev();
extern void _ZN7S7853C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C68S7853C19__A1__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
  (VTBL_ENTRY)&_ZN7S7853C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C6D0Ev,
};
extern void _ZN8S7853C12D1Ev();
extern void _ZN8S7853C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C127S7853C68S7853C19__A2__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
  (VTBL_ENTRY)&_ZN8S7853C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C127S7853C68S7853C19__A6__7S7853C1[] = {
  ABISELECT(-87,-43),
  ABISELECT(-87,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S7853C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI7S7853C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C19__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S7853C19[0]),
};
extern void _ZN8S7853C21D1Ev();
extern void _ZN8S7853C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C21__7S7853C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-240,-132),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-128,-68),
  ABISELECT(-160,-84),
  ABISELECT(-240,-132),
  ABISELECT(-112,-56),
  ABISELECT(-103,-51),
  ABISELECT(-240,-132),
  ABISELECT(-103,-51),
  ABISELECT(-103,-51),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&_ZN8S7853C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C21D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C21__7S7853C1[] = {
  ABISELECT(112,56),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C21__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__8S7853C21__7S7853C1[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D1Ev,_ZTv0_n60_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C21D0Ev,_ZTv0_n60_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C21__7S7853C1[] = {
  ABISELECT(128,68),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C21__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C21__7S7853C1[] = {
  ABISELECT(80,40),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D1Ev,_ZTv0_n32_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C21D0Ev,_ZTv0_n32_N8S7853C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C21__7S7853C1[] = {
  ABISELECT(64,32),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D1Ev,_ZTv0_n44_N8S7853C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C21D0Ev,_ZTv0_n44_N8S7853C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S7853C21[0]),
};
extern void _ZN8S7853C24D1Ev();
extern void _ZN8S7853C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C24__7S7853C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-168,-88),
  ABISELECT(-192,-104),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-248,-136),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-248,-136),
  ABISELECT(-120,-60),
  ABISELECT(-136,-72),
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&_ZN8S7853C24D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C24D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C24__A4__7S7853C1[] = {
  ABISELECT(-111,-55),
  ABISELECT(-248,-136),
  ABISELECT(-111,-55),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C24__A4__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(248,136),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void _ZN7S7853C4D1Ev();
extern void _ZN7S7853C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&_ZN7S7853C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7853C4D0Ev,
};
extern void _ZN8S7853C17D1Ev();
extern void _ZN8S7853C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&_ZN8S7853C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7853C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7853C138S7853C177S7853C48S7853C24__A3__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C108S7853C138S7853C177S7853C48S7853C24__A8__7S7853C1[] = {
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  0,
  (VTBL_ENTRY)&(_ZTI8S7853C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C10__7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[] = {
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(272,148),
  (VTBL_ENTRY)&(_ZTI7S7853C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(96,48),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(256,140),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A__8S7853C177S7853C48S7853C24__A2__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7853C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(144,76),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(128,64),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(256,140),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(96,48),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(80,40),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A1__7S7853C48S7853C24__A1__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7853C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(137,81),
  0,
  ABISELECT(137,81),
  ABISELECT(137,81),
  ABISELECT(248,136),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C5__8S7853C24__7S7853C1[] = {
  ABISELECT(136,72),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(25,17),
  ABISELECT(-112,-64),
  ABISELECT(25,17),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C6__8S7853C24__7S7853C1[] = {
  ABISELECT(120,60),
  ABISELECT(9,5),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(9,5),
  ABISELECT(9,5),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7853C13__8S7853C24__7S7853C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-7,-3),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C12__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(88,44),
  ABISELECT(-23,-11),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-23,-11),
  ABISELECT(-23,-11),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D1Ev,_ZTv0_n32_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7853C24D0Ev,_ZTv0_n32_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev)();
extern void ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A__8S7853C24__7S7853C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-256,-140),
  ABISELECT(-112,-56),
  ABISELECT(-128,-64),
  ABISELECT(-144,-76),
  ABISELECT(-119,-59),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-96,-48),
  ABISELECT(-119,-59),
  ABISELECT(-119,-59),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D1Ev,_ZThn4_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7853C24D0Ev,_ZThn4_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C15__8S7853C24__7S7853C1[] = {
  ABISELECT(72,36),
  ABISELECT(-176,-100),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-39,-19),
  ABISELECT(-176,-100),
  ABISELECT(-39,-19),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D1Ev,_ZTv0_n44_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7853C24D0Ev,_ZTv0_n44_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24__7S7853C1[] = {
  ABISELECT(-135,-67),
  ABISELECT(-272,-148),
  ABISELECT(-135,-67),
  ABISELECT(-135,-67),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C3__8S7853C24__7S7853C1[] = {
  ABISELECT(8,4),
  ABISELECT(192,104),
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  ABISELECT(-56,-32),
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(81,49),
  ABISELECT(-56,-32),
  ABISELECT(81,49),
  ABISELECT(81,49),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D1Ev,_ZTv0_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S7853C24D0Ev,_ZTv0_n68_N8S7853C24D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7853C4__A1__8S7853C24__7S7853C1[] = {
  ABISELECT(168,88),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-80,-48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  ABISELECT(57,33),
  ABISELECT(57,33),
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D1Ev,_ZTv0_n60_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S7853C24D0Ev,_ZTv0_n60_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24__7S7853C1[] = {
  ABISELECT(41,25),
  ABISELECT(-96,-56),
  ABISELECT(41,25),
  ABISELECT(41,25),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev)();
extern void _ZN8S7853C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7853C187S7853C3__8S7853C24__7S7853C1[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(73,45),
  ABISELECT(-64,-36),
  ABISELECT(73,45),
  ABISELECT(73,45),
  ABISELECT(184,100),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D1Ev,_ZTvn4_n68_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N8S7853C24D0Ev,_ZTvn4_n68_N8S7853C24D0Ev),
  (VTBL_ENTRY)&_ZN8S7853C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7853C17__A2__8S7853C24__7S7853C1[] = {
  ABISELECT(56,28),
  ABISELECT(-55,-27),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-55,-27),
  ABISELECT(-55,-27),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D1Ev,_ZTv0_n36_N8S7853C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S7853C24D0Ev,_ZTv0_n36_N8S7853C24D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7853C98S7853C17__A5__8S7853C24__7S7853C1[] = {
  ABISELECT(-71,-35),
  ABISELECT(-208,-116),
  ABISELECT(-71,-35),
  ABISELECT(-71,-35),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7853C24[0]),
};
static  VTT_ENTRY vtt_S7853C1[] = {
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C3__7S7853C2__7S7853C1[18]),  18,20},
  {&(_tg__ZTV7S7853C4__7S7853C2__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C2__7S7853C1[17]),  17,19},
  {&(_tg__ZTV8S7853C13__7S7853C2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C2__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C2__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C2__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C20__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C68S7853C20__A2__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C68S7853C20__A3__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C68S7853C20__A7__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C20__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C20__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C228S7853C20__7S7853C1[3]),  3,5},
  {&(_tg__ZTV8S7853C168S7853C228S7853C20__A1__7S7853C1[3]),  3,3},
  {&(_tg__ZTV7S7853C9__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C20__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C21__8S7853C20__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C6__A1__8S7853C20__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C4__8S7853C20__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C12__A2__8S7853C20__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C20__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C20__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C22__8S7853C20__7S7853C1[3]),  3,5},
  {&(_ZTV7S7853C1[63]),  63,239},
  {&(_ZTV7S7853C1[94]),  94,239},
  {&(_ZTV7S7853C1[113]),  113,239},
  {&(_ZTV7S7853C1[123]),  123,239},
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_ZTV7S7853C1[20]),  20,239},
  {&(_ZTV7S7853C1[129]),  129,239},
  {&(_ZTV7S7853C1[137]),  137,239},
  {&(_ZTV7S7853C1[150]),  150,239},
  {&(_ZTV7S7853C1[150]),  150,239},
  {&(_ZTV7S7853C1[102]),  102,239},
  {&(_ZTV7S7853C1[76]),  76,239},
  {&(_ZTV7S7853C1[161]),  161,239},
  {&(_ZTV7S7853C1[169]),  169,239},
  {&(_ZTV7S7853C1[177]),  177,239},
  {&(_ZTV7S7853C1[38]),  38,239},
  {&(_ZTV7S7853C1[195]),  195,239},
  {&(_ZTV7S7853C1[43]),  43,239},
  {&(_ZTV7S7853C1[215]),  215,239},
  {&(_ZTV7S7853C1[231]),  231,239},
  {&(_ZTV7S7853C1[239]),  239,239},
  {&(_tg__ZTV7S7853C3__7S7853C1[16]),  16,18},
  {&(_tg__ZTV7S7853C97S7853C3__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C97S7853C3__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C187S7853C3__7S7853C1[11]),  11,14},
  {&(_tg__ZTV7S7853C58S7853C187S7853C3__A1__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C58S7853C187S7853C3__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C58S7853C187S7853C3__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C58S7853C187S7853C3__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C58S7853C187S7853C3__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C6__8S7853C187S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C187S7853C3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C187S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C17__8S7853C187S7853C3__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A1__8S7853C187S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C3__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C3__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C3__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C18__7S7853C3__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A1__7S7853C3__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C4__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C4__A4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C4__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C4__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C4__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C6__7S7853C5__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C5__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C6__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C6__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C6__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C6__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C13__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C13__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C12__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C12__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C1[10]),  10,12},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C15__7S7853C1[10]),  10,12},
  {&(_tg__ZTV8S7853C13__8S7853C15__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C6__8S7853C15__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C15__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C16__7S7853C1[3]),  3,3},
  {&(_tg__ZTV8S7853C17__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C17__A2__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C17__A5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C17__A3__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C17__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C17__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C17__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C19__7S7853C1[7]),  7,9},
  {&(_tg__ZTV7S7853C68S7853C19__A1__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C127S7853C68S7853C19__A2__7S7853C1[7]),  7,9},
  {&(_tg__ZTV8S7853C108S7853C127S7853C68S7853C19__A6__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C127S7853C68S7853C19__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C68S7853C19__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C19__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C21__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C6__8S7853C21__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C4__8S7853C21__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C5__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C13__8S7853C21__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C21__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C21__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A1__8S7853C21__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C24__7S7853C1[17]),  17,19},
  {&(_tg__ZTV7S7853C98S7853C24__A4__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C24__A4__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C48S7853C24__A1__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C177S7853C48S7853C24__A2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C138S7853C177S7853C48S7853C24__A3__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C108S7853C138S7853C177S7853C48S7853C24__A8__7S7853C1[4]),  4,4},
  {&(_tg__ZTV7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C10__7S7853C98S7853C177S7853C48S7853C24__A5__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__8S7853C177S7853C48S7853C24__A2__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A__8S7853C177S7853C48S7853C24__A2__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__7S7853C48S7853C24__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__7S7853C48S7853C24__A1__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__7S7853C48S7853C24__A1__7S7853C1[8]),  8,10},
  {&(_tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__7S7853C48S7853C24__A1__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C17__A1__7S7853C48S7853C24__A1__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C5__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C6__8S7853C24__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C9__A1__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C13__8S7853C24__7S7853C1[4]),  4,4},
  {&(_tg__ZTV8S7853C12__A1__8S7853C24__7S7853C1[8]),  8,10},
  {&(_tg__ZTV7S7853C4__A__8S7853C24__7S7853C1[14]),  14,16},
  {&(_tg__ZTV8S7853C15__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV8S7853C15__8S7853C24__7S7853C1[11]),  11,13},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A2__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV7S7853C3__8S7853C24__7S7853C1[18]),  18,20},
  {&(_tg__ZTV7S7853C4__A1__8S7853C24__7S7853C1[15]),  15,17},
  {&(_tg__ZTV7S7853C98S7853C177S7853C4__A3__8S7853C24__7S7853C1[6]),  6,6},
  {&(_tg__ZTV8S7853C187S7853C3__8S7853C24__7S7853C1[11]),  11,14},
  {&(_tg__ZTV8S7853C17__A2__8S7853C24__7S7853C1[9]),  9,11},
  {&(_tg__ZTV7S7853C98S7853C17__A5__8S7853C24__7S7853C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S7853C1[];
extern  VTBL_ENTRY _ZTV7S7853C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7853C1[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D0Ev,_ZTv0_n32_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D0Ev,_ZThn44_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D0Ev,_ZThn28_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C4D1Ev,_ZTv0_n32_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C4D1Ev,_ZThn44_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C4D1Ev,_ZThn28_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D0Ev,_ZTv0_n44_N7S7853C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D0Ev,_ZThn52_N7S7853C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D0Ev,_ZThn16_N7S7853C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C4D1Ev,_ZTv0_n44_N7S7853C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C4D1Ev,_ZThn52_N7S7853C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7853C4D1Ev,_ZThn16_N7S7853C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D0Ev,_ZTv0_n32_N8S7853C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D0Ev,_ZThn44_N8S7853C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C17D1Ev,_ZTv0_n32_N8S7853C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7853C17D1Ev,_ZThn44_N8S7853C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D0Ev,_ZTv0_n36_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D0Ev,_ZThn76_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C3D1Ev,_ZTv0_n36_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7853C3D1Ev,_ZThn76_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D0Ev,_ZTv0_n32_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D0Ev,_ZThn60_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D0Ev,_ZThn44_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C3D1Ev,_ZTv0_n32_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7853C3D1Ev,_ZThn60_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7853C3D1Ev,_ZThn44_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D0Ev,_ZTv0_n44_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D0Ev,_ZThn68_N7S7853C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D0Ev,_ZThn32_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C3D1Ev,_ZTv0_n44_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7853C3D1Ev,_ZThn68_N7S7853C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C3D1Ev,_ZThn32_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D0Ev,_ZTv0_n60_N7S7853C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D0Ev,_ZThn16_N7S7853C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C3D1Ev,_ZTv0_n60_N7S7853C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7853C3D1Ev,_ZThn16_N7S7853C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D0Ev,_ZTv0_n36_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D0Ev,_ZThn72_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S7853C18D1Ev,_ZTv0_n36_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7853C18D1Ev,_ZThn72_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D0Ev,_ZTv0_n32_N8S7853C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D0Ev,_ZThn56_N8S7853C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D0Ev,_ZThn40_N8S7853C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C18D1Ev,_ZTv0_n32_N8S7853C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C18D1Ev,_ZThn56_N8S7853C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C18D1Ev,_ZThn40_N8S7853C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D0Ev,_ZTv0_n32_N7S7853C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D0Ev,_ZThn28_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D0Ev,_ZThn12_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D0Ev,_ZThn56_N7S7853C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D0Ev,_ZThn40_N7S7853C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C5D1Ev,_ZTv0_n32_N7S7853C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7853C5D1Ev,_ZThn28_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7853C5D1Ev,_ZThn12_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7853C5D1Ev,_ZThn56_N7S7853C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7853C5D1Ev,_ZThn40_N7S7853C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D0Ev,_ZTv0_n44_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7853C20D0Ev,_ZThn88_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C20D0Ev,_ZThn52_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7853C20D1Ev,_ZTv0_n44_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7853C20D1Ev,_ZThn88_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7853C20D1Ev,_ZThn52_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D0Ev,_ZTv0_n60_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C20D0Ev,_ZThn36_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S7853C20D1Ev,_ZTv0_n60_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7853C20D1Ev,_ZThn36_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D0Ev,_ZTv0_n32_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C20D0Ev,_ZThn80_N8S7853C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7853C20D0Ev,_ZThn64_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7853C20D1Ev,_ZTv0_n32_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7853C20D1Ev,_ZThn80_N8S7853C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7853C20D1Ev,_ZThn64_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D0Ev,_ZTv0_n64_N8S7853C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7853C20D0Ev,_ZThn120_N8S7853C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7853C20D1Ev,_ZTv0_n64_N8S7853C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7853C20D1Ev,_ZThn120_N8S7853C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D0Ev,_ZTv0_n36_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C2D0Ev,_ZThn108_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C2D1Ev,_ZTv0_n36_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C2D1Ev,_ZThn108_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D0Ev,_ZTv0_n32_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C2D0Ev,_ZThn92_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C2D0Ev,_ZThn76_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C2D1Ev,_ZTv0_n32_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C2D1Ev,_ZThn92_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C2D1Ev,_ZThn76_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D0Ev,_ZTv0_n44_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C2D0Ev,_ZThn100_N7S7853C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C2D0Ev,_ZThn64_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C2D1Ev,_ZTv0_n44_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C2D1Ev,_ZThn100_N7S7853C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C2D1Ev,_ZThn64_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D0Ev,_ZTv0_n60_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C2D0Ev,_ZThn48_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C2D1Ev,_ZTv0_n60_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C2D1Ev,_ZThn48_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D0Ev,_ZTv0_n68_N7S7853C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C2D0Ev,_ZThn32_N7S7853C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C2D1Ev,_ZTv0_n68_N7S7853C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C2D1Ev,_ZThn32_N7S7853C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7853C1D0Ev,_ZTv0_n72_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7853C1D0Ev,_ZThn136_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S7853C1D1Ev,_ZTv0_n72_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7853C1D1Ev,_ZThn136_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7853C1D0Ev,_ZTv0_n64_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7853C1D0Ev,_ZThn132_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7853C1D1Ev,_ZTv0_n64_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7853C1D1Ev,_ZThn132_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C1D0Ev,_ZTv0_n36_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C1D0Ev,_ZThn108_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7853C1D1Ev,_ZTv0_n36_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7853C1D1Ev,_ZThn108_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C1D0Ev,_ZTv0_n32_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7853C1D0Ev,_ZThn124_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C1D0Ev,_ZThn92_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C1D0Ev,_ZThn76_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7853C1D1Ev,_ZTv0_n32_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7853C1D1Ev,_ZThn124_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7853C1D1Ev,_ZThn92_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7853C1D1Ev,_ZThn76_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C1D0Ev,_ZTv0_n44_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C1D0Ev,_ZThn100_N7S7853C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C1D0Ev,_ZThn64_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7853C1D1Ev,_ZTv0_n44_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7853C1D1Ev,_ZThn100_N7S7853C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7853C1D1Ev,_ZThn64_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C1D0Ev,_ZTv0_n60_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C1D0Ev,_ZThn48_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7853C1D1Ev,_ZTv0_n60_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7853C1D1Ev,_ZThn48_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C1D0Ev,_ZTv0_n68_N7S7853C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C1D0Ev,_ZThn32_N7S7853C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S7853C1D1Ev,_ZTv0_n68_N7S7853C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7853C1D1Ev,_ZThn32_N7S7853C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7853C1 = {  "S7853C1", // class name
  bases_S7853C1, 87,
  &(vtc_S7853C1[0]), // expected_vtbl_contents
  &(vtt_S7853C1[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI7S7853C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7853C1),239, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7853C1),205, //virtual table table var
  44, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C6  : S8033C7 {
  void *s19113c6f0;
  ::S20291C14_nt s19113c6f1;
  void *s19113c6f2;
  long double s19113c6f3;
  ~S19113C6(); // tgen
  S19113C6(); // tgen
};
//SIG(-1 S19113C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19113C6 ::~S19113C6(){ note_dtor("S19113C6", this);} // tgen
S19113C6 ::S19113C6(){ note_ctor("S19113C6", this);} // tgen

static void Test_S19113C6()
{
  extern Class_Descriptor cd_S19113C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19113C6, buf);
    S19113C6 *dp, &lv = *(dp=new (buf) S19113C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19113C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C6)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19113C6");
    check_field_offset(lv, s19113c6f0, ABISELECT(96,52), "S19113C6.s19113c6f0");
    check_field_offset(lv, s19113c6f1, ABISELECT(104,56), "S19113C6.s19113c6f1");
    check_field_offset(lv, s19113c6f2, ABISELECT(112,60), "S19113C6.s19113c6f2");
    check_field_offset(lv, s19113c6f3, ABISELECT(128,64), "S19113C6.s19113c6f3");
    test_class_info(&lv, &cd_S19113C6);
    dp->~S19113C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C6(Test_S19113C6, "S19113C6", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19113C6C1Ev();
extern void _ZN8S19113C6D1Ev();
Name_Map name_map_S19113C6[] = {
  NSPAIR(_ZN8S19113C6C1Ev),
  NSPAIR(_ZN8S19113C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19113C6[];
extern void _ZN8S19113C6D1Ev();
extern void _ZN8S19113C6D0Ev();
static  VTBL_ENTRY vtc_S19113C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C6[0]),
  (VTBL_ENTRY)&_ZN8S19113C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
Class_Descriptor cd_S19113C6 = {  "S19113C6", // class name
  bases_S19113C6, 1,
  &(vtc_S19113C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19113C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19113C6),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  S19113C8  : S19113C6 , virtual S8033C7 {
  ::S8033C7 s19113c8f0;
  void *s19113c8f1;
  virtual  ~S19113C8(); // _ZN8S19113C8D2Ev
  S19113C8(); // tgen
};
//SIG(-1 S19113C8) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19113C8 ::~S19113C8(){ note_dtor("S19113C8", this);}
S19113C8 ::S19113C8(){ note_ctor("S19113C8", this);} // tgen

static void Test_S19113C8()
{
  extern Class_Descriptor cd_S19113C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19113C8, buf);
    S19113C8 *dp, &lv = *(dp=new (buf) S19113C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19113C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C8)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), 0, "S19113C8");
    check_base_class_offset(lv, (S19113C6*), 0, "S19113C8");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19113C8");
    check_field_offset(lv, s19113c8f0, ABISELECT(144,76), "S19113C8.s19113c8f0");
    check_field_offset(lv, s19113c8f1, ABISELECT(240,128), "S19113C8.s19113c8f1");
    test_class_info(&lv, &cd_S19113C8);
    dp->~S19113C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C8(Test_S19113C8, "S19113C8", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19113C8C1Ev();
extern void _ZN8S19113C8D2Ev();
Name_Map name_map_S19113C8[] = {
  NSPAIR(_ZN8S19113C8C1Ev),
  NSPAIR(_ZN8S19113C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19113C8[];
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C8[];
static  VTT_ENTRY vtt_S19113C8[] = {
  {&(_ZTV8S19113C8[3]),  3,10},
  {&(_ZTV8S19113C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C8 = {  "S19113C8", // class name
  bases_S19113C8, 3,
  &(vtc_S19113C8[0]), // expected_vtbl_contents
  &(vtt_S19113C8[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19113C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C5  : S8033C7 , virtual S19113C6 {
  int s19113c5f0;
  char s19113c5f1;
  void *s19113c5f2;
  int s19113c5f3;
  void *s19113c5f4[2];
  ::S19113C8 s19113c5f5;
  virtual  ~S19113C5(); // _ZN8S19113C5D2Ev
  virtual void  v2(); // _ZN8S19113C52v2Ev
  S19113C5(); // tgen
};
//SIG(-1 S19113C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19113C5 ::~S19113C5(){ note_dtor("S19113C5", this);}
void  S19113C5 ::v2(){vfunc_called(this, "_ZN8S19113C52v2Ev");}
S19113C5 ::S19113C5(){ note_ctor("S19113C5", this);} // tgen

static void Test_S19113C5()
{
  extern Class_Descriptor cd_S19113C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19113C5, buf);
    S19113C5 *dp, &lv = *(dp=new (buf) S19113C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19113C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C5)");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19113C5");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(496,260), "S19113C5");
    check_base_class_offset(lv, (S19113C6*), ABISELECT(496,260), "S19113C5");
    check_field_offset(lv, s19113c5f0, ABISELECT(96,52), "S19113C5.s19113c5f0");
    check_field_offset(lv, s19113c5f1, ABISELECT(100,56), "S19113C5.s19113c5f1");
    check_field_offset(lv, s19113c5f2, ABISELECT(104,60), "S19113C5.s19113c5f2");
    check_field_offset(lv, s19113c5f3, ABISELECT(112,64), "S19113C5.s19113c5f3");
    check_field_offset(lv, s19113c5f4, ABISELECT(120,68), "S19113C5.s19113c5f4");
    check_field_offset(lv, s19113c5f5, ABISELECT(144,76), "S19113C5.s19113c5f5");
    test_class_info(&lv, &cd_S19113C5);
    dp->~S19113C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C5(Test_S19113C5, "S19113C5", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19113C5C1Ev();
extern void _ZN8S19113C5D2Ev();
Name_Map name_map_S19113C5[] = {
  NSPAIR(_ZN8S19113C5C1Ev),
  NSPAIR(_ZN8S19113C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
static Base_Class bases_S19113C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C5[];
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C5[];
static  VTT_ENTRY vtt_S19113C5[] = {
  {&(_ZTV8S19113C5[3]),  3,11},
  {&(_ZTV8S19113C5[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C5 = {  "S19113C5", // class name
  bases_S19113C5, 3,
  &(vtc_S19113C5[0]), // expected_vtbl_contents
  &(vtt_S19113C5[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19113C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C5),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C3  : S8033C7 , virtual S19113C5 {
  void *s19113c3f0;
  __tsi64 s19113c3f1[2];
  char s19113c3f2;
  void *s19113c3f3;
  int s19113c3f4;
  virtual  ~S19113C3(); // _ZN8S19113C3D2Ev
  S19113C3(); // tgen
};
//SIG(-1 S19113C3) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S19113C3 ::~S19113C3(){ note_dtor("S19113C3", this);}
S19113C3 ::S19113C3(){ note_ctor("S19113C3", this);} // tgen

static void Test_S19113C3()
{
  extern Class_Descriptor cd_S19113C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19113C3, buf);
    S19113C3 *dp, &lv = *(dp=new (buf) S19113C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19113C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C3)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19113C3");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(144,84), "S19113C3");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(640,344), "S19113C3");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(640,344), "S19113C3");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(144,84), "S19113C3");
    check_field_offset(lv, s19113c3f0, ABISELECT(96,52), "S19113C3.s19113c3f0");
    check_field_offset(lv, s19113c3f1, ABISELECT(104,56), "S19113C3.s19113c3f1");
    check_field_offset(lv, s19113c3f2, ABISELECT(120,72), "S19113C3.s19113c3f2");
    check_field_offset(lv, s19113c3f3, ABISELECT(128,76), "S19113C3.s19113c3f3");
    check_field_offset(lv, s19113c3f4, ABISELECT(136,80), "S19113C3.s19113c3f4");
    test_class_info(&lv, &cd_S19113C3);
    dp->~S19113C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C3(Test_S19113C3, "S19113C3", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S19113C3C1Ev();
extern void _ZN8S19113C3D2Ev();
Name_Map name_map_S19113C3[] = {
  NSPAIR(_ZN8S19113C3C1Ev),
  NSPAIR(_ZN8S19113C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
static Base_Class bases_S19113C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(144,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S19113C3[];
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S19113C3D1Ev,_ZThn84_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S19113C3D0Ev,_ZThn84_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn640_N8S19113C3D1Ev,_ZThn344_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn640_N8S19113C3D0Ev,_ZThn344_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C3[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C3[];
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
static  VTT_ENTRY vtt_S19113C3[] = {
  {&(_ZTV8S19113C3[4]),  4,19},
  {&(_ZTV8S19113C3[11]),  11,19},
  {&(_ZTV8S19113C3[17]),  17,19},
  {&(_tg__ZTV8S19113C5__8S19113C3[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19113C3D0Ev,_ZThn344_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19113C3D1Ev,_ZThn344_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19113C3D0Ev,_ZThn84_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19113C3D1Ev,_ZThn84_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C3 = {  "S19113C3", // class name
  bases_S19113C3, 5,
  &(vtc_S19113C3[0]), // expected_vtbl_contents
  &(vtt_S19113C3[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S19113C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C3),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C9  : virtual S19113C6 {
  char s19113c9f0;
  short s19113c9f1;
  long double s19113c9f2;
  void *s19113c9f3[2];
  virtual void  v3(); // _ZN8S19113C92v3Ev
  ~S19113C9(); // tgen
  S19113C9(); // tgen
};
//SIG(-1 S19113C9) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19113C9 ::v3(){vfunc_called(this, "_ZN8S19113C92v3Ev");}
S19113C9 ::~S19113C9(){ note_dtor("S19113C9", this);} // tgen
S19113C9 ::S19113C9(){ note_ctor("S19113C9", this);} // tgen

static void Test_S19113C9()
{
  extern Class_Descriptor cd_S19113C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19113C9, buf);
    S19113C9 *dp, &lv = *(dp=new (buf) S19113C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19113C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C9)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(48,28), "S19113C9");
    check_base_class_offset(lv, (S19113C6*), ABISELECT(48,28), "S19113C9");
    check_field_offset(lv, s19113c9f0, ABISELECT(8,4), "S19113C9.s19113c9f0");
    check_field_offset(lv, s19113c9f1, ABISELECT(10,6), "S19113C9.s19113c9f1");
    check_field_offset(lv, s19113c9f2, ABISELECT(16,8), "S19113C9.s19113c9f2");
    check_field_offset(lv, s19113c9f3, ABISELECT(32,20), "S19113C9.s19113c9f3");
    test_class_info(&lv, &cd_S19113C9);
    dp->~S19113C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C9(Test_S19113C9, "S19113C9", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S19113C9C1Ev();
extern void _ZN8S19113C9D1Ev();
Name_Map name_map_S19113C9[] = {
  NSPAIR(_ZN8S19113C9C1Ev),
  NSPAIR(_ZN8S19113C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
static Base_Class bases_S19113C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C9[];
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19113C9D1Ev,_ZThn28_N8S19113C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19113C9D0Ev,_ZThn28_N8S19113C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C9[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C9[];
static  VTT_ENTRY vtt_S19113C9[] = {
  {&(_ZTV8S19113C9[3]),  3,11},
  {&(_ZTV8S19113C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19113C9D0Ev,_ZThn28_N8S19113C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19113C9D1Ev,_ZThn28_N8S19113C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C9 = {  "S19113C9", // class name
  bases_S19113C9, 2,
  &(vtc_S19113C9[0]), // expected_vtbl_contents
  &(vtt_S19113C9[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S19113C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19113C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C9),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C2  : S19113C3 , virtual S19113C9 {
  char s19113c2f0;
  int s19113c2f1:32;
  virtual  ~S19113C2(); // _ZN8S19113C2D2Ev
  S19113C2(); // tgen
};
//SIG(-1 S19113C2) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S19113C2 ::~S19113C2(){ note_dtor("S19113C2", this);}
S19113C2 ::S19113C2(){ note_ctor("S19113C2", this);} // tgen

static void Test_S19113C2()
{
  extern Class_Descriptor cd_S19113C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19113C2, buf);
    S19113C2 *dp, &lv = *(dp=new (buf) S19113C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19113C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C2)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*), 0, "S19113C2");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(160,92), "S19113C2");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(656,352), "S19113C2");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*), ABISELECT(160,92), "S19113C2");
    check_base_class_offset(lv, (S19113C3*), 0, "S19113C2");
    check_base_class_offset(lv, (S19113C9*), ABISELECT(800,428), "S19113C2");
    check_field_offset(lv, s19113c2f0, ABISELECT(140,84), "S19113C2.s19113c2f0");
    set_bf_and_test(lv, s19113c2f1, ABISELECT(144,88), 0, 32, 1, "S19113C2");
    set_bf_and_test(lv, s19113c2f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19113C2");
    test_class_info(&lv, &cd_S19113C2);
    dp->~S19113C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C2(Test_S19113C2, "S19113C2", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19113C2C1Ev();
extern void _ZN8S19113C2D2Ev();
Name_Map name_map_S19113C2[] = {
  NSPAIR(_ZN8S19113C2C1Ev),
  NSPAIR(_ZN8S19113C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
static Base_Class bases_S19113C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(656,352), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19113C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19113C9,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C2[];
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19113C2[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19113C2[];
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C3__8S19113C2[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C3__8S19113C2[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C3__8S19113C2[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__8S19113C2[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
static  VTT_ENTRY vtt_S19113C2[] = {
  {&(_ZTV8S19113C2[5]),  5,28},
  {&(_tg__ZTV8S19113C3__8S19113C2[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C3__8S19113C2[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C3__8S19113C2[3]),  3,5},
  {&(_ZTV8S19113C2[12]),  12,28},
  {&(_ZTV8S19113C2[18]),  18,28},
  {&(_ZTV8S19113C2[25]),  25,28},
  {&(_tg__ZTV8S19113C5__8S19113C2[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C2[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__8S19113C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C2 = {  "S19113C2", // class name
  bases_S19113C2, 7,
  &(vtc_S19113C2[0]), // expected_vtbl_contents
  &(vtt_S19113C2[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19113C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C2),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C2),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C14  {
  long double s19113c14f0;
  void *s19113c14f1;
  ::S8033C7 s19113c14f2;
  __tsi64 s19113c14f3;
  long double s19113c14f4;
  int s19113c14f5;
  virtual void  v4(); // _ZN9S19113C142v4Ev
  ~S19113C14(); // tgen
  S19113C14(); // tgen
};
//SIG(-1 S19113C14) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19113C14 ::v4(){vfunc_called(this, "_ZN9S19113C142v4Ev");}
S19113C14 ::~S19113C14(){ note_dtor("S19113C14", this);} // tgen
S19113C14 ::S19113C14(){ note_ctor("S19113C14", this);} // tgen

static void Test_S19113C14()
{
  extern Class_Descriptor cd_S19113C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19113C14, buf);
    S19113C14 *dp, &lv = *(dp=new (buf) S19113C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19113C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C14)");
    check_field_offset(lv, s19113c14f0, ABISELECT(16,4), "S19113C14.s19113c14f0");
    check_field_offset(lv, s19113c14f1, ABISELECT(32,16), "S19113C14.s19113c14f1");
    check_field_offset(lv, s19113c14f2, ABISELECT(48,20), "S19113C14.s19113c14f2");
    check_field_offset(lv, s19113c14f3, ABISELECT(144,72), "S19113C14.s19113c14f3");
    check_field_offset(lv, s19113c14f4, ABISELECT(160,80), "S19113C14.s19113c14f4");
    check_field_offset(lv, s19113c14f5, ABISELECT(176,92), "S19113C14.s19113c14f5");
    test_class_info(&lv, &cd_S19113C14);
    dp->~S19113C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C14(Test_S19113C14, "S19113C14", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19113C14C1Ev();
extern void _ZN9S19113C14D1Ev();
Name_Map name_map_S19113C14[] = {
  NSPAIR(_ZN9S19113C14C1Ev),
  NSPAIR(_ZN9S19113C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19113C14[];
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C14[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
Class_Descriptor cd_S19113C14 = {  "S19113C14", // class name
  0,0,//no base classes
  &(vtc_S19113C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19113C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19113C14),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  S19113C13  : virtual S19113C8 , virtual S19113C5 , virtual S19113C2 , virtual S8033C4 , virtual S19113C14 {
  void *s19113c13f0;
  ::S19113C14 s19113c13f1[3];
  ::S19113C14 s19113c13f2;
  char s19113c13f3;
  virtual  ~S19113C13(); // _ZN9S19113C13D2Ev
  S19113C13(); // tgen
};
//SIG(-1 S19113C13) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19113C13 ::~S19113C13(){ note_dtor("S19113C13", this);}
S19113C13 ::S19113C13(){ note_ctor("S19113C13", this);} // tgen

static void Test_S19113C13()
{
  extern Class_Descriptor cd_S19113C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19113C13, buf);
    S19113C13 *dp, &lv = *(dp=new (buf) S19113C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19113C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C13)");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(800,396), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(800,396), "S19113C13");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(1056,528), "S19113C13");
    check_base_class_offset(lv, (S19113C8*), ABISELECT(800,396), "S19113C13");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(1152,580), "S19113C13");
    /*is_ambiguous_... S19113C13::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(1648,840), "S19113C13");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(1152,580), "S19113C13");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(1152,580), "S19113C13");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(1952,1008), "S19113C13");
    check_base_class_offset(lv, (S19113C2*), ABISELECT(1792,916), "S19113C13");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19113C13");
    check_base_class_offset(lv, (S19113C14*), ABISELECT(2096,1112), "S19113C13");
    check_field_offset(lv, s19113c13f0, ABISELECT(8,4), "S19113C13.s19113c13f0");
    check_field_offset(lv, s19113c13f1, ABISELECT(16,8), "S19113C13.s19113c13f1");
    check_field_offset(lv, s19113c13f2, ABISELECT(592,296), "S19113C13.s19113c13f2");
    check_field_offset(lv, s19113c13f3, ABISELECT(784,392), "S19113C13.s19113c13f3");
    test_class_info(&lv, &cd_S19113C13);
    dp->~S19113C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C13(Test_S19113C13, "S19113C13", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN9S19113C13C1Ev();
extern void _ZN9S19113C13D2Ev();
Name_Map name_map_S19113C13[] = {
  NSPAIR(_ZN9S19113C13C1Ev),
  NSPAIR(_ZN9S19113C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
static Base_Class bases_S19113C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19113C6,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19113C3,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19113C9,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19113C2,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19113C14,    ABISELECT(2096,1112), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C13[];
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn800_N9S19113C13D1Ev,_ZThn396_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn800_N9S19113C13D0Ev,_ZThn396_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1056_N9S19113C13D1Ev,_ZThn528_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1056_N9S19113C13D0Ev,_ZThn528_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1152_N9S19113C13D1Ev,_ZThn580_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1152_N9S19113C13D0Ev,_ZThn580_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1648_N9S19113C13D1Ev,_ZThn840_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1648_N9S19113C13D0Ev,_ZThn840_N9S19113C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1792_N9S19113C13D1Ev,_ZThn916_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1792_N9S19113C13D0Ev,_ZThn916_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1952_N9S19113C13D1Ev,_ZThn1008_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1952_N9S19113C13D0Ev,_ZThn1008_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C13[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C13[];
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C13[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C13[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C13[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C13[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C13[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C13[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C13[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
static  VTT_ENTRY vtt_S19113C13[] = {
  {&(_ZTV9S19113C13[10]),  10,56},
  {&(_ZTV9S19113C13[16]),  16,56},
  {&(_ZTV9S19113C13[21]),  21,56},
  {&(_ZTV9S19113C13[28]),  28,56},
  {&(_ZTV9S19113C13[34]),  34,56},
  {&(_ZTV9S19113C13[42]),  42,56},
  {&(_ZTV9S19113C13[49]),  49,56},
  {&(_ZTV9S19113C13[55]),  55,56},
  {&(_tg__ZTV8S19113C8__9S19113C13[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C13[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C13[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C13[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C13[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C13[5]),  5,8},
  {&(_tg__ZTV8S19113C9__9S19113C13[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19113C13D0Ev,_ZThn1008_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19113C13D1Ev,_ZThn1008_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19113C13D0Ev,_ZThn916_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19113C13D1Ev,_ZThn916_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19113C13D0Ev,_ZThn840_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19113C13D0Ev,_ZThn528_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19113C13D1Ev,_ZThn840_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19113C13D1Ev,_ZThn528_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19113C13D0Ev,_ZThn580_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19113C13D0Ev,_ZThn396_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19113C13D1Ev,_ZThn580_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19113C13D1Ev,_ZThn396_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C13 = {  "S19113C13", // class name
  bases_S19113C13, 14,
  &(vtc_S19113C13[0]), // expected_vtbl_contents
  &(vtt_S19113C13[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI9S19113C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19113C13),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C13),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C12  : virtual S19113C5 , S8033C4 , virtual S19113C9 , S19113C13 {
  ::S19113C14 s19113c12f0;
  void *s19113c12f1;
  __tsi64 s19113c12f2[2];
  int s19113c12f3:31;
  int s19113c12f4;
  ::S20291C14_nt s19113c12f5;
  ::S19113C14 s19113c12f6;
  ::S19113C14 s19113c12f7;
  void *s19113c12f8;
  ~S19113C12(); // tgen
  S19113C12(); // tgen
};
//SIG(-1 S19113C12) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL[2] Fc Fp Fi} VBC8 vd Fc Fi:32} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp FL[2] Fi:31 Fi FC5 FC12 FC12 Fp}


S19113C12 ::~S19113C12(){ note_dtor("S19113C12", this);} // tgen
S19113C12 ::S19113C12(){ note_ctor("S19113C12", this);} // tgen

static void Test_S19113C12()
{
  extern Class_Descriptor cd_S19113C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,403)];
    init_test(&cd_S19113C12, buf);
    S19113C12 *dp, &lv = *(dp=new (buf) S19113C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1608), "sizeof(S19113C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C12)");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(1520,796), "S19113C12");
    /*is_ambiguous_... S19113C12::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(2016,1056), "S19113C12");
    check_base_class_offset(lv, (S19113C5*), ABISELECT(1520,796), "S19113C12");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*), ABISELECT(1520,796), "S19113C12");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(1520,796), "S19113C12");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S19113C12");
    check_base_class_offset(lv, (S19113C9*), ABISELECT(2160,1132), "S19113C12");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(2160,1132), "S19113C12");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(2208,1160), "S19113C12");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(2208,1160), "S19113C12");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(2464,1292), "S19113C12");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*), ABISELECT(2208,1160), "S19113C12");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*), ABISELECT(2560,1344), "S19113C12");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*), ABISELECT(2712,1436), "S19113C12");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*), ABISELECT(2800,1512), "S19113C12");
    check_base_class_offset(lv, (S19113C13*), 0, "S19113C12");
    check_field_offset(lv, s19113c12f0, ABISELECT(880,472), "S19113C12.s19113c12f0");
    check_field_offset(lv, s19113c12f1, ABISELECT(1072,568), "S19113C12.s19113c12f1");
    check_field_offset(lv, s19113c12f2, ABISELECT(1080,572), "S19113C12.s19113c12f2");
    set_bf_and_test(lv, s19113c12f3, ABISELECT(1096,588), 0, 31, 1, "S19113C12");
    set_bf_and_test(lv, s19113c12f3, ABISELECT(1096,588), 0, 31, hide_sll(1LL<<30), "S19113C12");
    check_field_offset(lv, s19113c12f4, ABISELECT(1100,592), "S19113C12.s19113c12f4");
    check_field_offset(lv, s19113c12f5, ABISELECT(1104,596), "S19113C12.s19113c12f5");
    check_field_offset(lv, s19113c12f6, ABISELECT(1120,600), "S19113C12.s19113c12f6");
    check_field_offset(lv, s19113c12f7, ABISELECT(1312,696), "S19113C12.s19113c12f7");
    check_field_offset(lv, s19113c12f8, ABISELECT(1504,792), "S19113C12.s19113c12f8");
    test_class_info(&lv, &cd_S19113C12);
    dp->~S19113C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C12(Test_S19113C12, "S19113C12", ABISELECT(2992,1608));

#else // __cplusplus

extern void _ZN9S19113C12C1Ev();
extern void _ZN9S19113C12D1Ev();
Name_Map name_map_S19113C12[] = {
  NSPAIR(_ZN9S19113C12C1Ev),
  NSPAIR(_ZN9S19113C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
static Base_Class bases_S19113C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,796), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(2016,1056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(2016,1056), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(1520,796), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19113C9,    ABISELECT(2160,1132), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19113C6,    ABISELECT(2208,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1292), //bcp->offset
    39, //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
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(2208,1160), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19113C3,    ABISELECT(2560,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19113C2,    ABISELECT(2560,1344), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(2800,1512), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C12[];
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C12[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C12[];
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C13__9S19113C12[] = {
  ABISELECT(2800,1512),
  ABISELECT(2712,1436),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C13__9S19113C12[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C13__9S19113C12[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C13__9S19113C12[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C13__9S19113C12[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C13__9S19113C12[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C13__9S19113C12[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C13__9S19113C12[] = {
  0,
  ABISELECT(-2800,-1512),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C12[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C12[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
static  VTT_ENTRY vtt_S19113C12[] = {
  {&(_ZTV9S19113C12[10]),  10,56},
  {&(_tg__ZTV9S19113C13__9S19113C12[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C13__9S19113C12[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C13__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C13__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C13__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C13__9S19113C12[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C13__9S19113C12[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C13__9S19113C12[3]),  3,4},
  {&(_ZTV9S19113C12[17]),  17,56},
  {&(_ZTV9S19113C12[23]),  23,56},
  {&(_ZTV9S19113C12[30]),  30,56},
  {&(_ZTV9S19113C12[37]),  37,56},
  {&(_ZTV9S19113C12[42]),  42,56},
  {&(_ZTV9S19113C12[50]),  50,56},
  {&(_ZTV9S19113C12[55]),  55,56},
  {&(_tg__ZTV8S19113C5__9S19113C12[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C8__9S19113C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C12[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C12[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C12[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C12 = {  "S19113C12", // class name
  bases_S19113C12, 16,
  &(vtc_S19113C12[0]), // expected_vtbl_contents
  &(vtt_S19113C12[0]), // expected_vtt_contents
  ABISELECT(2992,1608), // object size
  NSPAIRA(_ZTI9S19113C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19113C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C12),29, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C10  : virtual S8033C4 , virtual S19113C12 , S19113C14 , S8033C7 {
  ::S19113C14 s19113c10f0;
  int s19113c10f1;
  char s19113c10f2[6];
  long double s19113c10f3;
  int s19113c10f4;
  __tsi64 s19113c10f5;
  virtual void  v5(); // _ZN9S19113C102v5Ev
  ~S19113C10(); // tgen
  S19113C10(); // tgen
};
//SIG(-1 S19113C10) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL[2] Fc Fp Fi} VBC9 vd Fc Fi:32} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp FL[2] Fi:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


void  S19113C10 ::v5(){vfunc_called(this, "_ZN9S19113C102v5Ev");}
S19113C10 ::~S19113C10(){ note_dtor("S19113C10", this);} // tgen
S19113C10 ::S19113C10(){ note_ctor("S19113C10", this);} // tgen

static void Test_S19113C10()
{
  extern Class_Descriptor cd_S19113C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,473)];
    init_test(&cd_S19113C10, buf);
    S19113C10 *dp, &lv = *(dp=new (buf) S19113C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1888), "sizeof(S19113C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C10)");
    /*is_ambiguous_... S19113C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S19113C10");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*)(S19113C12*), ABISELECT(528,280), "S19113C10");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(2144,1152), "S19113C10");
    /*is_ambiguous_... S19113C10::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(2640,1412), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C12*), ABISELECT(2144,1152), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*)(S19113C12*), ABISELECT(2144,1152), "S19113C10");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(2144,1152), "S19113C10");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C12*), ABISELECT(1416,752), "S19113C10");
    check_base_class_offset(lv, (S19113C9*)(S19113C12*), ABISELECT(2784,1488), "S19113C10");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(2784,1488), "S19113C10");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(2832,1516), "S19113C10");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(2832,1516), "S19113C10");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(3088,1648), "S19113C10");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*)(S19113C12*), ABISELECT(2832,1516), "S19113C10");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*)(S19113C12*), ABISELECT(3184,1700), "S19113C10");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*)(S19113C12*), ABISELECT(3344,1792), "S19113C10");
    check_base_class_offset(lv, (S19113C13*)(S19113C12*), ABISELECT(624,356), "S19113C10");
    check_base_class_offset(lv, (S19113C12*), ABISELECT(624,356), "S19113C10");
    /*is_ambiguous_... S19113C10::S19113C14 */ AMB_check_base_class_offset(lv, (S19113C14*), 0, "S19113C10");
    /*is_ambiguous_... S19113C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S19113C10");
    check_field_offset(lv, s19113c10f0, ABISELECT(288,148), "S19113C10.s19113c10f0");
    check_field_offset(lv, s19113c10f1, ABISELECT(480,244), "S19113C10.s19113c10f1");
    check_field_offset(lv, s19113c10f2, ABISELECT(484,248), "S19113C10.s19113c10f2");
    check_field_offset(lv, s19113c10f3, ABISELECT(496,256), "S19113C10.s19113c10f3");
    check_field_offset(lv, s19113c10f4, ABISELECT(512,268), "S19113C10.s19113c10f4");
    check_field_offset(lv, s19113c10f5, ABISELECT(520,272), "S19113C10.s19113c10f5");
    test_class_info(&lv, &cd_S19113C10);
    dp->~S19113C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C10(Test_S19113C10, "S19113C10", ABISELECT(3536,1888));

#else // __cplusplus

extern void _ZN9S19113C10C1Ev();
extern void _ZN9S19113C10D1Ev();
Name_Map name_map_S19113C10[] = {
  NSPAIR(_ZN9S19113C10C1Ev),
  NSPAIR(_ZN9S19113C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
extern Class_Descriptor cd_S19113C12;
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19113C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    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_S8033C7,    ABISELECT(2144,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(2640,1412), //bcp->offset
    40, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(2144,1152), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C9,    ABISELECT(2784,1488), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19113C6,    ABISELECT(2832,1516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1648), //bcp->offset
    59, //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
    10, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(2832,1516), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19113C3,    ABISELECT(3184,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19113C2,    ABISELECT(3184,1700), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(3344,1792), //bcp->offset
    72, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19113C12,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19113C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19113C10[];
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void _ZN9S19113C10D1Ev();
extern void _ZN9S19113C10D0Ev();
extern void ABISELECT(_ZThn192_N9S19113C10D1Ev,_ZThn96_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S19113C10D0Ev,_ZThn96_N9S19113C10D0Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2640_N9S19113C10D1Ev,_ZThn1412_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2640_N9S19113C10D0Ev,_ZThn1412_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19113C10D1Ev,_ZThn1488_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19113C10D0Ev,_ZThn1488_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2832_N9S19113C10D1Ev,_ZThn1516_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2832_N9S19113C10D0Ev,_ZThn1516_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn3088_N9S19113C10D1Ev,_ZThn1648_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn3088_N9S19113C10D0Ev,_ZThn1648_N9S19113C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn3184_N9S19113C10D1Ev,_ZThn1700_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn3184_N9S19113C10D0Ev,_ZThn1700_N9S19113C10D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C10[] = {
  ABISELECT(3344,1792),
  ABISELECT(3184,1700),
  ABISELECT(3088,1648),
  ABISELECT(2832,1516),
  ABISELECT(2784,1488),
  ABISELECT(2640,1412),
  ABISELECT(2144,1152),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19113C10D1Ev,_ZThn96_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19113C10D0Ev,_ZThn96_N9S19113C10D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev),
  0,
  ABISELECT(-2144,-1152),
  ABISELECT(496,260),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-2640,-1412),
  ABISELECT(-2640,-1412),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
  ABISELECT(-2784,-1488),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1488),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev),
  ABISELECT(-2832,-1516),
  ABISELECT(256,132),
  ABISELECT(-2832,-1516),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  ABISELECT(-3088,-1648),
  ABISELECT(-3088,-1648),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
  ABISELECT(-3184,-1700),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1700),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev),
  0,
  ABISELECT(-3344,-1792),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19113C10[];
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C12__9S19113C10[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
};
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(2720,1436),
  ABISELECT(-96,-76),
  ABISELECT(2160,1132),
  ABISELECT(2560,1344),
  ABISELECT(2016,1056),
  ABISELECT(1520,796),
  ABISELECT(2464,1292),
  ABISELECT(2208,1160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C139S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C139S19113C12__9S19113C10[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C139S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-1520,-796),
  ABISELECT(496,260),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C12__9S19113C10[] = {
  ABISELECT(-2016,-1056),
  ABISELECT(-2016,-1056),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12__9S19113C10[] = {
  ABISELECT(-2160,-1132),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1132),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12__9S19113C10[] = {
  ABISELECT(-2208,-1160),
  ABISELECT(256,132),
  ABISELECT(-2208,-1160),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C12__9S19113C10[] = {
  ABISELECT(-2464,-1292),
  ABISELECT(-2464,-1292),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12__9S19113C10[] = {
  ABISELECT(-2560,-1344),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1344),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C12__9S19113C10[] = {
  0,
  ABISELECT(-2720,-1436),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__9S19113C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C10[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__9S19113C10[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__9S19113C10[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C10[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__9S19113C10[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__9S19113C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__9S19113C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__9S19113C10[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
static  VTT_ENTRY vtt_S19113C10[] = {
  {&(_ZTV9S19113C10[11]),  11,76},
  {&(_ZTV9S19113C10[30]),  30,76},
  {&(_ZTV9S19113C10[37]),  37,76},
  {&(_ZTV9S19113C10[43]),  43,76},
  {&(_ZTV9S19113C10[50]),  50,76},
  {&(_ZTV9S19113C10[57]),  57,76},
  {&(_ZTV9S19113C10[62]),  62,76},
  {&(_ZTV9S19113C10[70]),  70,76},
  {&(_ZTV9S19113C10[75]),  75,76},
  {&(_tg__ZTV9S19113C12__9S19113C10[10]),  10,12},
  {&(_tg__ZTV9S19113C139S19113C12__9S19113C10[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C139S19113C12__9S19113C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C139S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C139S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C139S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C139S19113C12__9S19113C10[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C139S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C139S19113C12__9S19113C10[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C12__9S19113C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C12__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12__9S19113C10[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C12__9S19113C10[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C10[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C10[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C8__9S19113C10[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C10[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__9S19113C10[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__9S19113C10[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__9S19113C10[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__9S19113C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19113C10[];
extern  VTBL_ENTRY _ZTV9S19113C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C10[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D0Ev,_ZThn1344_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C12D1Ev,_ZThn1344_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D0Ev,_ZThn1132_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C12D1Ev,_ZThn1132_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D0Ev,_ZThn1292_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D0Ev,_ZThn1056_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C12D1Ev,_ZThn1292_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C12D1Ev,_ZThn1056_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D0Ev,_ZThn1160_N9S19113C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C12D1Ev,_ZThn1160_N9S19113C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D0Ev,_ZThn1132_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19113C13D1Ev,_ZThn1132_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D0Ev,_ZThn1344_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19113C13D1Ev,_ZThn1344_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D0Ev,_ZThn1056_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D0Ev,_ZThn1292_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19113C13D1Ev,_ZThn1056_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19113C13D1Ev,_ZThn1292_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D0Ev,_ZThn1160_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19113C13D1Ev,_ZThn1160_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19113C10D0Ev,_ZThn1700_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19113C10D1Ev,_ZThn1700_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19113C10D0Ev,_ZThn1488_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19113C10D1Ev,_ZThn1488_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19113C10D0Ev,_ZThn1648_N9S19113C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19113C10D0Ev,_ZThn1412_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19113C10D1Ev,_ZThn1648_N9S19113C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19113C10D1Ev,_ZThn1412_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19113C10D0Ev,_ZThn1516_N9S19113C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19113C10D1Ev,_ZThn1516_N9S19113C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C10 = {  "S19113C10", // class name
  bases_S19113C10, 19,
  &(vtc_S19113C10[0]), // expected_vtbl_contents
  &(vtt_S19113C10[0]), // expected_vtt_contents
  ABISELECT(3536,1888), // object size
  NSPAIRA(_ZTI9S19113C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19113C10),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19113C10),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19113C1  : virtual S19113C2 , virtual S19113C10 {
  int s19113c1f0:21;
  ::S19113C14 s19113c1f1;
  __tsi64 s19113c1f2;
  int s19113c1f3;
  ::S19113C13 s19113c1f4;
  ::S19113C10 s19113c1f5;
  virtual void  v1(); // _ZN8S19113C12v1Ev
  ~S19113C1(); // tgen
  S19113C1(); // tgen
};
//SIG(1 S19113C1) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} VBC5{ BC4 VBC6{ BC4 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC4 vd FC4 Fp}} vd Fp FL[2] Fc Fp Fi} VBC9{ VBC6 v3 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ VBC11{ m Fp[3] FL[8]} VBC12{ VBC5 BC11 VBC9 BC13{ VBC8 VBC5 VBC2 VBC11 VBC14{ v4 FD Fp FC4 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp FL[2] Fi:31 Fi FC7 FC14 FC14 Fp} BC14 BC4 v5 FC14 Fi Fc[6] FD Fi FL} v1 Fi:21 FC14 FL Fi FC13 FC10}


void  S19113C1 ::v1(){vfunc_called(this, "_ZN8S19113C12v1Ev");}
S19113C1 ::~S19113C1(){ note_dtor("S19113C1", this);} // tgen
S19113C1 ::S19113C1(){ note_ctor("S19113C1", this);} // tgen

static void Test_S19113C1()
{
  extern Class_Descriptor cd_S19113C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1276)];
    init_test(&cd_S19113C1, buf);
    S19113C1 *dp, &lv = *(dp=new (buf) S19113C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,5100), "sizeof(S19113C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19113C1)");
    /*is_ambiguous_... S19113C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C3*)(S19113C2*), ABISELECT(6048,3212), "S19113C1");
    /*is_ambiguous_... S19113C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C5*), ABISELECT(6208,3304), "S19113C1");
    /*is_ambiguous_... S19113C1::S19113C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C6*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C5*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C9*), ABISELECT(6704,3564), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C3*)(S19113C2*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C12*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C5*)(S19113C13*)(S19113C12*), ABISELECT(6208,3304), "S19113C1");
    check_base_class_offset(lv, (S19113C3*)(S19113C2*), ABISELECT(6048,3212), "S19113C1");
    check_base_class_offset(lv, (S19113C9*)(S19113C2*), ABISELECT(6848,3640), "S19113C1");
    check_base_class_offset(lv, (S19113C9*)(S19113C12*), ABISELECT(6848,3640), "S19113C1");
    check_base_class_offset(lv, (S19113C2*), ABISELECT(6048,3212), "S19113C1");
    check_base_class_offset(lv, (S19113C2*)(S19113C13*)(S19113C12*), ABISELECT(6048,3212), "S19113C1");
    /*is_ambiguous_... S19113C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C10*), ABISELECT(7424,3948), "S19113C1");
    check_base_class_offset(lv, (S8033C4*)(S19113C13*)(S19113C12*), ABISELECT(7424,3948), "S19113C1");
    /*is_ambiguous_... S19113C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19113C12*), ABISELECT(8312,4420), "S19113C1");
    check_base_class_offset(lv, (S8033C7*)(S19113C6*)(S19113C8*), ABISELECT(9040,4820), "S19113C1");
    check_base_class_offset(lv, (S19113C6*)(S19113C8*), ABISELECT(9040,4820), "S19113C1");
    /*is_ambiguous_... S19113C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C8*), ABISELECT(9296,4952), "S19113C1");
    check_base_class_offset(lv, (S19113C8*)(S19113C13*)(S19113C12*), ABISELECT(9040,4820), "S19113C1");
    check_base_class_offset(lv, (S19113C14*)(S19113C13*)(S19113C12*), ABISELECT(9392,5004), "S19113C1");
    check_base_class_offset(lv, (S19113C13*)(S19113C12*), ABISELECT(7520,4024), "S19113C1");
    check_base_class_offset(lv, (S19113C12*)(S19113C10*), ABISELECT(7520,4024), "S19113C1");
    /*is_ambiguous_... S19113C10::S19113C14 */ AMB_check_base_class_offset(lv, (S19113C14*)(S19113C10*), ABISELECT(6896,3668), "S19113C1");
    /*is_ambiguous_... S19113C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19113C10*), ABISELECT(7088,3764), "S19113C1");
    check_base_class_offset(lv, (S19113C10*), ABISELECT(6896,3668), "S19113C1");
    set_bf_and_test(lv, s19113c1f0, ABISELECT(8,4), 0, 21, 1, "S19113C1");
    set_bf_and_test(lv, s19113c1f0, ABISELECT(8,4), 0, 21, hide_sll(1LL<<20), "S19113C1");
    check_field_offset(lv, s19113c1f1, ABISELECT(16,8), "S19113C1.s19113c1f1");
    check_field_offset(lv, s19113c1f2, ABISELECT(208,104), "S19113C1.s19113c1f2");
    check_field_offset(lv, s19113c1f3, ABISELECT(216,112), "S19113C1.s19113c1f3");
    check_field_offset(lv, s19113c1f4, ABISELECT(224,116), "S19113C1.s19113c1f4");
    check_field_offset(lv, s19113c1f5, ABISELECT(2512,1324), "S19113C1.s19113c1f5");
    test_class_info(&lv, &cd_S19113C1);
    dp->~S19113C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19113C1(Test_S19113C1, "S19113C1", ABISELECT(9584,5100));

#else // __cplusplus

extern void _ZN8S19113C1C1Ev();
extern void _ZN8S19113C1D1Ev();
Name_Map name_map_S19113C1[] = {
  NSPAIR(_ZN8S19113C1C1Ev),
  NSPAIR(_ZN8S19113C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S19113C5;
extern VTBL_ENTRY _ZTI8S19113C5[];
extern  VTBL_ENTRY _ZTV8S19113C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C5[];
extern Class_Descriptor cd_S19113C3;
extern VTBL_ENTRY _ZTI8S19113C3[];
extern  VTBL_ENTRY _ZTV8S19113C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C3[];
extern Class_Descriptor cd_S19113C9;
extern VTBL_ENTRY _ZTI8S19113C9[];
extern  VTBL_ENTRY _ZTV8S19113C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C9[];
extern Class_Descriptor cd_S19113C2;
extern VTBL_ENTRY _ZTI8S19113C2[];
extern  VTBL_ENTRY _ZTV8S19113C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C6;
extern VTBL_ENTRY _ZTI8S19113C6[];
extern  VTBL_ENTRY _ZTV8S19113C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C8;
extern VTBL_ENTRY _ZTI8S19113C8[];
extern  VTBL_ENTRY _ZTV8S19113C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C8[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S19113C13;
extern VTBL_ENTRY _ZTI9S19113C13[];
extern  VTBL_ENTRY _ZTV9S19113C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C13[];
extern Class_Descriptor cd_S19113C12;
extern VTBL_ENTRY _ZTI9S19113C12[];
extern  VTBL_ENTRY _ZTV9S19113C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C12[];
extern Class_Descriptor cd_S19113C14;
extern VTBL_ENTRY _ZTI9S19113C14[];
extern  VTBL_ENTRY _ZTV9S19113C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19113C10;
extern VTBL_ENTRY _ZTI9S19113C10[];
extern  VTBL_ENTRY _ZTV9S19113C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19113C10[];
static Base_Class bases_S19113C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(6048,3212), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6208,3304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6704,3564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19113C6,    ABISELECT(6704,3564), //bcp->offset
    31, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19113C5,    ABISELECT(6208,3304), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19113C3,    ABISELECT(6048,3212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19113C9,    ABISELECT(6848,3640), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19113C2,    ABISELECT(6048,3212), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(7424,3948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(8312,4420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C7,    ABISELECT(9040,4820), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19113C6,    ABISELECT(9040,4820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9296,4952), //bcp->offset
    85, //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
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19113C8,    ABISELECT(9040,4820), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(9392,5004), //bcp->offset
    90, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19113C13,    ABISELECT(7520,4024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19113C12,    ABISELECT(7520,4024), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19113C14,    ABISELECT(6896,3668), //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(7088,3764), //bcp->offset
    62, //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
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19113C10,    ABISELECT(6896,3668), //bcp->offset
    44, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19113C1[];
extern void _ZN8S19113C12v1Ev();
extern void _ZN8S19113C1D1Ev();
extern void _ZN8S19113C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6048_N8S19113C1D1Ev,_ZThn3212_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6048_N8S19113C1D0Ev,_ZThn3212_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6208_N8S19113C1D1Ev,_ZThn3304_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6208_N8S19113C1D0Ev,_ZThn3304_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6704_N8S19113C1D1Ev,_ZThn3564_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6704_N8S19113C1D0Ev,_ZThn3564_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6848_N8S19113C1D1Ev,_ZThn3640_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6848_N8S19113C1D0Ev,_ZThn3640_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn6896_N8S19113C1D1Ev,_ZThn3668_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn6896_N8S19113C1D0Ev,_ZThn3668_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn192_n112_N8S19113C1D1Ev,_ZTvn96_n56_N8S19113C1D1Ev)();
extern void ABISELECT(_ZTvn192_n112_N8S19113C1D0Ev,_ZTvn96_n56_N8S19113C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn7520_N8S19113C1D1Ev,_ZThn4024_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn7520_N8S19113C1D0Ev,_ZThn4024_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn9040_N8S19113C1D1Ev,_ZThn4820_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn9040_N8S19113C1D0Ev,_ZThn4820_N8S19113C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev)();
extern void ABISELECT(_ZThn9296_N8S19113C1D1Ev,_ZThn4952_N8S19113C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev)();
extern void ABISELECT(_ZThn9296_N8S19113C1D0Ev,_ZThn4952_N8S19113C1D0Ev)() __attribute__((weak));
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY vtc_S19113C1[] = {
  ABISELECT(9392,5004),
  ABISELECT(9296,4952),
  ABISELECT(9040,4820),
  ABISELECT(7520,4024),
  ABISELECT(7424,3948),
  ABISELECT(6896,3668),
  ABISELECT(6848,3640),
  ABISELECT(6704,3564),
  ABISELECT(6208,3304),
  ABISELECT(6048,3212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN8S19113C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19113C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C1D0Ev,
  ABISELECT(-6048,-3212),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(-6048,-3212),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev),
  0,
  ABISELECT(-6208,-3304),
  ABISELECT(496,260),
  ABISELECT(-6208,-3304),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
  ABISELECT(-6704,-3564),
  ABISELECT(-6704,-3564),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev),
  ABISELECT(-6848,-3640),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6848,-3640),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev),
  ABISELECT(-6896,-3668),
  0,
  0,
  ABISELECT(2496,1336),
  ABISELECT(-848,-456),
  ABISELECT(2400,1284),
  ABISELECT(2144,1152),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  ABISELECT(-6896,-3668),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev),
  ABISELECT(-7088,-3764),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19113C1D1Ev,_ZTvn96_n56_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19113C1D0Ev,_ZTvn96_n56_N8S19113C1D0Ev),
  ABISELECT(-7520,-4024),
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  ABISELECT(-7520,-4024),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev),
  ABISELECT(-9040,-4820),
  ABISELECT(256,132),
  ABISELECT(-9040,-4820),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev),
  ABISELECT(-9296,-4952),
  ABISELECT(-9296,-4952),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev),
  0,
  ABISELECT(-9392,-5004),
  (VTBL_ENTRY)&(_ZTI8S19113C1[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern VTBL_ENTRY _ZTV8S19113C1[];
extern void _ZN8S19113C2D1Ev();
extern void _ZN8S19113C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C2__8S19113C1[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C2D0Ev,
};
extern void _ZN8S19113C3D1Ev();
extern void _ZN8S19113C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C38S19113C2__8S19113C1[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&_ZN8S19113C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C38S19113C2__8S19113C1[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C38S19113C2__8S19113C1[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev)() __attribute__((weak));
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C2__8S19113C1[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C2__8S19113C1[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C2__8S19113C1[] = {
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19113C2[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev),
};
extern void _ZN8S19113C5D1Ev();
extern void _ZN8S19113C5D0Ev();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__8S19113C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&_ZN8S19113C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C5__8S19113C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19113C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void _ZN8S19113C9D1Ev();
extern void _ZN8S19113C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C9__8S19113C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__8S19113C9__8S19113C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19113C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D1Ev,_ZTv0_n12_N8S19113C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C9D0Ev,_ZTv0_n12_N8S19113C9D0Ev),
};
extern void _ZN9S19113C142v4Ev();
extern void _ZN9S19113C102v5Ev();
extern void _ZN9S19113C10D1Ev();
extern void _ZN9S19113C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C10__8S19113C1[] = {
  ABISELECT(2496,1336),
  ABISELECT(-848,-456),
  ABISELECT(2400,1284),
  ABISELECT(2144,1152),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19113C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C10D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19113C12__9S19113C10__8S19113C1[] = {
  ABISELECT(-624,-356),
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C10__8S19113C1[] = {
  0,
  ABISELECT(688,364),
  ABISELECT(496,260),
  ABISELECT(688,364),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C10__8S19113C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C10__8S19113C1[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(-144,-76),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D1Ev,_ZTv0_n20_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C10D0Ev,_ZTv0_n20_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C10__8S19113C1[] = {
  ABISELECT(-2144,-1152),
  ABISELECT(256,132),
  ABISELECT(-2144,-1152),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev)();
extern void ABISELECT(_ZThn2400_N9S19113C10D1Ev,_ZThn1284_N9S19113C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev)();
extern void ABISELECT(_ZThn2400_N9S19113C10D0Ev,_ZThn1284_N9S19113C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C10__8S19113C1[] = {
  ABISELECT(-2400,-1284),
  ABISELECT(-2400,-1284),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C10__8S19113C1[] = {
  ABISELECT(848,456),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(848,456),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D1Ev,_ZTv0_n24_N9S19113C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C10D0Ev,_ZTv0_n24_N9S19113C10D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C10__8S19113C1[] = {
  0,
  ABISELECT(-2496,-1336),
  (VTBL_ENTRY)&(_ZTI9S19113C10[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN9S19113C12D1Ev();
extern void _ZN9S19113C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C12__8S19113C1[] = {
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C12D0Ev,
};
extern void _ZN9S19113C13D1Ev();
extern void _ZN9S19113C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(1872,980),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-812),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,928),
  ABISELECT(1520,796),
  0,
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19113C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(-1520,-796),
  ABISELECT(256,132),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C13D1Ev,_ZThn928_N9S19113C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C13D0Ev,_ZThn928_N9S19113C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(-1776,-928),
  ABISELECT(-1776,-928),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C139S19113C12__8S19113C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__A1__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(1472,812),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(1472,812),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D1Ev,_ZTv0_n24_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C13D0Ev,_ZTv0_n24_N9S19113C13D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C139S19113C12__8S19113C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D1Ev,_ZTv0_n20_N9S19113C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C13D0Ev,_ZTv0_n20_N9S19113C13D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C139S19113C12__8S19113C1[] = {
  0,
  ABISELECT(-1872,-980),
  (VTBL_ENTRY)&(_ZTI9S19113C13[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void _ZN8S19113C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C5__9S19113C12__8S19113C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19113C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C6__9S19113C12__8S19113C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void _ZN8S19113C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C9__9S19113C12__8S19113C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN8S19113C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D1Ev,_ZTv0_n20_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19113C12D0Ev,_ZTv0_n20_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19113C8__9S19113C12__8S19113C1[] = {
  ABISELECT(-1520,-796),
  ABISELECT(256,132),
  ABISELECT(-1520,-796),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C12D1Ev,_ZThn928_N9S19113C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19113C12D0Ev,_ZThn928_N9S19113C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19113C12__8S19113C1[] = {
  ABISELECT(-1776,-928),
  ABISELECT(-1776,-928),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19113C2__9S19113C12__8S19113C1[] = {
  ABISELECT(1472,812),
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  ABISELECT(1472,812),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D1Ev,_ZTv0_n24_N9S19113C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19113C12D0Ev,_ZTv0_n24_N9S19113C12D0Ev),
};
extern void _ZN9S19113C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19113C14__9S19113C12__8S19113C1[] = {
  0,
  ABISELECT(-1872,-980),
  (VTBL_ENTRY)&(_ZTI9S19113C12[0]),
  (VTBL_ENTRY)&_ZN9S19113C142v4Ev,
};
extern void _ZN8S19113C8D1Ev();
extern void _ZN8S19113C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19113C8__8S19113C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&_ZN8S19113C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19113C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19113C8__8S19113C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19113C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev),
};
static  VTT_ENTRY vtt_S19113C1[] = {
  {&(_ZTV8S19113C1[12]),  12,94},
  {&(_ZTV8S19113C1[21]),  21,94},
  {&(_ZTV8S19113C1[28]),  28,94},
  {&(_ZTV8S19113C1[34]),  34,94},
  {&(_ZTV8S19113C1[41]),  41,94},
  {&(_ZTV8S19113C1[58]),  58,94},
  {&(_ZTV8S19113C1[77]),  77,94},
  {&(_ZTV8S19113C1[83]),  83,94},
  {&(_ZTV8S19113C1[88]),  88,94},
  {&(_ZTV8S19113C1[93]),  93,94},
  {&(_ZTV8S19113C1[64]),  64,94},
  {&(_tg__ZTV8S19113C2__8S19113C1[5]),  5,7},
  {&(_tg__ZTV8S19113C38S19113C2__8S19113C1[4]),  4,6},
  {&(_tg__ZTV8S19113C5__8S19113C38S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C38S19113C2__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C5__8S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__8S19113C2__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C2__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C5__8S19113C1[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C5__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__8S19113C1[3]),  3,6},
  {&(_tg__ZTV8S19113C6__8S19113C9__8S19113C1[3]),  3,5},
  {&(_tg__ZTV9S19113C10__8S19113C1[11]),  11,15},
  {&(_tg__ZTV9S19113C12__9S19113C10__8S19113C1[11]),  11,13},
  {&(_tg__ZTV8S19113C5__9S19113C10__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C10__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C10__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C10__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C10__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C10__8S19113C1[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C10__8S19113C1[3]),  3,4},
  {&(_tg__ZTV9S19113C12__8S19113C1[10]),  10,12},
  {&(_tg__ZTV9S19113C139S19113C12__8S19113C1[10]),  10,12},
  {&(_tg__ZTV8S19113C8__9S19113C139S19113C12__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19113C139S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C5__9S19113C139S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__A1__9S19113C139S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C139S19113C12__8S19113C1[6]),  6,8},
  {&(_tg__ZTV8S19113C9__9S19113C139S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV9S19113C14__9S19113C139S19113C12__8S19113C1[3]),  3,4},
  {&(_tg__ZTV8S19113C5__9S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C6__9S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C9__9S19113C12__8S19113C1[5]),  5,8},
  {&(_tg__ZTV8S19113C8__9S19113C12__8S19113C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19113C12__8S19113C1[3]),  3,5},
  {&(_tg__ZTV8S19113C2__9S19113C12__8S19113C1[6]),  6,8},
  {&(_tg__ZTV9S19113C14__9S19113C12__8S19113C1[3]),  3,4},
  {&(_tg__ZTV8S19113C8__8S19113C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19113C8__8S19113C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19113C1[];
extern  VTBL_ENTRY _ZTV8S19113C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19113C1[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D0Ev,_ZTv0_n12_N8S19113C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D0Ev,_ZThn132_N8S19113C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C8D1Ev,_ZTv0_n12_N8S19113C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19113C8D1Ev,_ZThn132_N8S19113C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D0Ev,_ZTv0_n12_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C12D0Ev,_ZThn928_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C12D1Ev,_ZTv0_n12_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C12D1Ev,_ZThn928_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D0Ev,_ZTv0_n16_N9S19113C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D0Ev,_ZThn796_N9S19113C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C12D1Ev,_ZTv0_n16_N9S19113C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C12D1Ev,_ZThn796_N9S19113C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D0Ev,_ZTv0_n12_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C13D0Ev,_ZThn928_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C13D1Ev,_ZTv0_n12_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19113C13D1Ev,_ZThn928_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D0Ev,_ZTv0_n16_N9S19113C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D0Ev,_ZThn796_N9S19113C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C13D1Ev,_ZTv0_n16_N9S19113C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19113C13D1Ev,_ZThn796_N9S19113C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D0Ev,_ZTv0_n12_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19113C10D0Ev,_ZThn1284_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19113C10D1Ev,_ZTv0_n12_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19113C10D1Ev,_ZThn1284_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D0Ev,_ZTv0_n16_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D0Ev,_ZThn1152_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19113C10D1Ev,_ZTv0_n16_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19113C10D1Ev,_ZThn1152_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D0Ev,_ZTv0_n44_N9S19113C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D0Ev,_ZThn356_N9S19113C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19113C10D1Ev,_ZTv0_n44_N9S19113C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19113C10D1Ev,_ZThn356_N9S19113C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D0Ev,_ZTv0_n12_N8S19113C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D0Ev,_ZThn260_N8S19113C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C5D1Ev,_ZTv0_n12_N8S19113C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19113C5D1Ev,_ZThn260_N8S19113C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D0Ev,_ZTv0_n20_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D0Ev,_ZThn428_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C2D1Ev,_ZTv0_n20_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19113C2D1Ev,_ZThn428_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D0Ev,_ZTv0_n12_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D0Ev,_ZThn352_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C2D1Ev,_ZTv0_n12_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C2D1Ev,_ZThn352_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D0Ev,_ZTv0_n16_N8S19113C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D0Ev,_ZThn92_N8S19113C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C2D1Ev,_ZTv0_n16_N8S19113C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C2D1Ev,_ZThn92_N8S19113C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D0Ev,_ZTv0_n12_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D0Ev,_ZThn352_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C3D1Ev,_ZTv0_n12_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19113C3D1Ev,_ZThn352_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D0Ev,_ZTv0_n16_N8S19113C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D0Ev,_ZThn92_N8S19113C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C3D1Ev,_ZTv0_n16_N8S19113C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19113C3D1Ev,_ZThn92_N8S19113C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19113C1D0Ev,_ZTv0_n44_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19113C1D0Ev,_ZThn4024_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19113C1D1Ev,_ZTv0_n44_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19113C1D1Ev,_ZThn4024_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19113C1D0Ev,_ZTv0_n56_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19113C1D0Ev,_ZThn3668_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19113C1D1Ev,_ZTv0_n56_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19113C1D1Ev,_ZThn3668_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C1D0Ev,_ZTv0_n20_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19113C1D0Ev,_ZThn3640_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19113C1D1Ev,_ZTv0_n20_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19113C1D1Ev,_ZThn3640_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C1D0Ev,_ZTv0_n12_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19113C1D0Ev,_ZThn4952_N8S19113C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19113C1D0Ev,_ZThn3564_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19113C1D1Ev,_ZTv0_n12_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19113C1D1Ev,_ZThn4952_N8S19113C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19113C1D1Ev,_ZThn3564_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C1D0Ev,_ZTv0_n16_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19113C1D0Ev,_ZThn4820_N8S19113C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19113C1D0Ev,_ZThn3304_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19113C1D1Ev,_ZTv0_n16_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19113C1D1Ev,_ZThn4820_N8S19113C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19113C1D1Ev,_ZThn3304_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19113C1D0Ev,_ZTv0_n24_N8S19113C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19113C1D0Ev,_ZThn3212_N8S19113C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19113C1D1Ev,_ZTv0_n24_N8S19113C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19113C1D1Ev,_ZThn3212_N8S19113C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19113C1 = {  "S19113C1", // class name
  bases_S19113C1, 20,
  &(vtc_S19113C1[0]), // expected_vtbl_contents
  &(vtt_S19113C1[0]), // expected_vtt_contents
  ABISELECT(9584,5100), // object size
  NSPAIRA(_ZTI8S19113C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19113C1),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19113C1),49, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C6  : S8033C7 {
  void *s19112c6f0;
  ::S20291C14_nt s19112c6f1;
  void *s19112c6f2;
  long double s19112c6f3;
  ~S19112C6(); // tgen
  S19112C6(); // tgen
};
//SIG(-1 S19112C6) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19112C6 ::~S19112C6(){ note_dtor("S19112C6", this);} // tgen
S19112C6 ::S19112C6(){ note_ctor("S19112C6", this);} // tgen

static void Test_S19112C6()
{
  extern Class_Descriptor cd_S19112C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19112C6, buf);
    S19112C6 *dp, &lv = *(dp=new (buf) S19112C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19112C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C6)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19112C6");
    check_field_offset(lv, s19112c6f0, ABISELECT(96,52), "S19112C6.s19112c6f0");
    check_field_offset(lv, s19112c6f1, ABISELECT(104,56), "S19112C6.s19112c6f1");
    check_field_offset(lv, s19112c6f2, ABISELECT(112,60), "S19112C6.s19112c6f2");
    check_field_offset(lv, s19112c6f3, ABISELECT(128,64), "S19112C6.s19112c6f3");
    test_class_info(&lv, &cd_S19112C6);
    dp->~S19112C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C6(Test_S19112C6, "S19112C6", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19112C6C1Ev();
extern void _ZN8S19112C6D1Ev();
Name_Map name_map_S19112C6[] = {
  NSPAIR(_ZN8S19112C6C1Ev),
  NSPAIR(_ZN8S19112C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19112C6[];
extern void _ZN8S19112C6D1Ev();
extern void _ZN8S19112C6D0Ev();
static  VTBL_ENTRY vtc_S19112C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C6[0]),
  (VTBL_ENTRY)&_ZN8S19112C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
Class_Descriptor cd_S19112C6 = {  "S19112C6", // class name
  bases_S19112C6, 1,
  &(vtc_S19112C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19112C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19112C6),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  S19112C8  : S19112C6 , virtual S8033C7 {
  ::S8033C7 s19112c8f0;
  void *s19112c8f1;
  virtual  ~S19112C8(); // _ZN8S19112C8D2Ev
  S19112C8(); // tgen
};
//SIG(-1 S19112C8) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19112C8 ::~S19112C8(){ note_dtor("S19112C8", this);}
S19112C8 ::S19112C8(){ note_ctor("S19112C8", this);} // tgen

static void Test_S19112C8()
{
  extern Class_Descriptor cd_S19112C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19112C8, buf);
    S19112C8 *dp, &lv = *(dp=new (buf) S19112C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19112C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C8)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), 0, "S19112C8");
    check_base_class_offset(lv, (S19112C6*), 0, "S19112C8");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19112C8");
    check_field_offset(lv, s19112c8f0, ABISELECT(144,76), "S19112C8.s19112c8f0");
    check_field_offset(lv, s19112c8f1, ABISELECT(240,128), "S19112C8.s19112c8f1");
    test_class_info(&lv, &cd_S19112C8);
    dp->~S19112C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C8(Test_S19112C8, "S19112C8", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19112C8C1Ev();
extern void _ZN8S19112C8D2Ev();
Name_Map name_map_S19112C8[] = {
  NSPAIR(_ZN8S19112C8C1Ev),
  NSPAIR(_ZN8S19112C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19112C8[];
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C8[];
static  VTT_ENTRY vtt_S19112C8[] = {
  {&(_ZTV8S19112C8[3]),  3,10},
  {&(_ZTV8S19112C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C8 = {  "S19112C8", // class name
  bases_S19112C8, 3,
  &(vtc_S19112C8[0]), // expected_vtbl_contents
  &(vtt_S19112C8[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19112C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C8),2, //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  S19112C5  : S8033C7 , virtual S19112C6 {
  int s19112c5f0;
  char s19112c5f1;
  void *s19112c5f2;
  int s19112c5f3;
  void *s19112c5f4[2];
  ::S19112C8 s19112c5f5;
  virtual  ~S19112C5(); // _ZN8S19112C5D2Ev
  virtual void  v2(); // _ZN8S19112C52v2Ev
  S19112C5(); // tgen
};
//SIG(-1 S19112C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19112C5 ::~S19112C5(){ note_dtor("S19112C5", this);}
void  S19112C5 ::v2(){vfunc_called(this, "_ZN8S19112C52v2Ev");}
S19112C5 ::S19112C5(){ note_ctor("S19112C5", this);} // tgen

static void Test_S19112C5()
{
  extern Class_Descriptor cd_S19112C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19112C5, buf);
    S19112C5 *dp, &lv = *(dp=new (buf) S19112C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19112C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C5)");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19112C5");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(496,260), "S19112C5");
    check_base_class_offset(lv, (S19112C6*), ABISELECT(496,260), "S19112C5");
    check_field_offset(lv, s19112c5f0, ABISELECT(96,52), "S19112C5.s19112c5f0");
    check_field_offset(lv, s19112c5f1, ABISELECT(100,56), "S19112C5.s19112c5f1");
    check_field_offset(lv, s19112c5f2, ABISELECT(104,60), "S19112C5.s19112c5f2");
    check_field_offset(lv, s19112c5f3, ABISELECT(112,64), "S19112C5.s19112c5f3");
    check_field_offset(lv, s19112c5f4, ABISELECT(120,68), "S19112C5.s19112c5f4");
    check_field_offset(lv, s19112c5f5, ABISELECT(144,76), "S19112C5.s19112c5f5");
    test_class_info(&lv, &cd_S19112C5);
    dp->~S19112C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C5(Test_S19112C5, "S19112C5", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19112C5C1Ev();
extern void _ZN8S19112C5D2Ev();
Name_Map name_map_S19112C5[] = {
  NSPAIR(_ZN8S19112C5C1Ev),
  NSPAIR(_ZN8S19112C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
static Base_Class bases_S19112C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C5[];
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C5[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C5[];
static  VTT_ENTRY vtt_S19112C5[] = {
  {&(_ZTV8S19112C5[3]),  3,11},
  {&(_ZTV8S19112C5[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C5 = {  "S19112C5", // class name
  bases_S19112C5, 3,
  &(vtc_S19112C5[0]), // expected_vtbl_contents
  &(vtt_S19112C5[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19112C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C5),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C3  : S8033C7 , virtual S19112C5 {
  void *s19112c3f0;
  __tsi64 s19112c3f1;
  long s19112c3f2;
  char s19112c3f3;
  void *s19112c3f4;
  int s19112c3f5;
  virtual  ~S19112C3(); // _ZN8S19112C3D2Ev
  S19112C3(); // tgen
};
//SIG(-1 S19112C3) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S19112C3 ::~S19112C3(){ note_dtor("S19112C3", this);}
S19112C3 ::S19112C3(){ note_ctor("S19112C3", this);} // tgen

static void Test_S19112C3()
{
  extern Class_Descriptor cd_S19112C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19112C3, buf);
    S19112C3 *dp, &lv = *(dp=new (buf) S19112C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19112C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C3)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19112C3");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(144,80), "S19112C3");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(640,340), "S19112C3");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(640,340), "S19112C3");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(144,80), "S19112C3");
    check_field_offset(lv, s19112c3f0, ABISELECT(96,52), "S19112C3.s19112c3f0");
    check_field_offset(lv, s19112c3f1, ABISELECT(104,56), "S19112C3.s19112c3f1");
    check_field_offset(lv, s19112c3f2, ABISELECT(112,64), "S19112C3.s19112c3f2");
    check_field_offset(lv, s19112c3f3, ABISELECT(120,68), "S19112C3.s19112c3f3");
    check_field_offset(lv, s19112c3f4, ABISELECT(128,72), "S19112C3.s19112c3f4");
    check_field_offset(lv, s19112c3f5, ABISELECT(136,76), "S19112C3.s19112c3f5");
    test_class_info(&lv, &cd_S19112C3);
    dp->~S19112C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C3(Test_S19112C3, "S19112C3", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S19112C3C1Ev();
extern void _ZN8S19112C3D2Ev();
Name_Map name_map_S19112C3[] = {
  NSPAIR(_ZN8S19112C3C1Ev),
  NSPAIR(_ZN8S19112C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
static Base_Class bases_S19112C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,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
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S19112C3[];
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S19112C3D1Ev,_ZThn80_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S19112C3D0Ev,_ZThn80_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn640_N8S19112C3D1Ev,_ZThn340_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn640_N8S19112C3D0Ev,_ZThn340_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C3[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C3[];
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
static  VTT_ENTRY vtt_S19112C3[] = {
  {&(_ZTV8S19112C3[4]),  4,19},
  {&(_ZTV8S19112C3[11]),  11,19},
  {&(_ZTV8S19112C3[17]),  17,19},
  {&(_tg__ZTV8S19112C5__8S19112C3[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19112C3D0Ev,_ZThn340_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19112C3D1Ev,_ZThn340_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19112C3D0Ev,_ZThn80_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19112C3D1Ev,_ZThn80_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C3 = {  "S19112C3", // class name
  bases_S19112C3, 5,
  &(vtc_S19112C3[0]), // expected_vtbl_contents
  &(vtt_S19112C3[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S19112C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C3),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C9  : virtual S19112C6 {
  char s19112c9f0;
  short s19112c9f1;
  long double s19112c9f2;
  void *s19112c9f3[2];
  virtual void  v3(); // _ZN8S19112C92v3Ev
  ~S19112C9(); // tgen
  S19112C9(); // tgen
};
//SIG(-1 S19112C9) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19112C9 ::v3(){vfunc_called(this, "_ZN8S19112C92v3Ev");}
S19112C9 ::~S19112C9(){ note_dtor("S19112C9", this);} // tgen
S19112C9 ::S19112C9(){ note_ctor("S19112C9", this);} // tgen

static void Test_S19112C9()
{
  extern Class_Descriptor cd_S19112C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19112C9, buf);
    S19112C9 *dp, &lv = *(dp=new (buf) S19112C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19112C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C9)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(48,28), "S19112C9");
    check_base_class_offset(lv, (S19112C6*), ABISELECT(48,28), "S19112C9");
    check_field_offset(lv, s19112c9f0, ABISELECT(8,4), "S19112C9.s19112c9f0");
    check_field_offset(lv, s19112c9f1, ABISELECT(10,6), "S19112C9.s19112c9f1");
    check_field_offset(lv, s19112c9f2, ABISELECT(16,8), "S19112C9.s19112c9f2");
    check_field_offset(lv, s19112c9f3, ABISELECT(32,20), "S19112C9.s19112c9f3");
    test_class_info(&lv, &cd_S19112C9);
    dp->~S19112C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C9(Test_S19112C9, "S19112C9", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S19112C9C1Ev();
extern void _ZN8S19112C9D1Ev();
Name_Map name_map_S19112C9[] = {
  NSPAIR(_ZN8S19112C9C1Ev),
  NSPAIR(_ZN8S19112C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
static Base_Class bases_S19112C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C9[];
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19112C9D1Ev,_ZThn28_N8S19112C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19112C9D0Ev,_ZThn28_N8S19112C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C9[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C9[];
static  VTT_ENTRY vtt_S19112C9[] = {
  {&(_ZTV8S19112C9[3]),  3,11},
  {&(_ZTV8S19112C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19112C9D0Ev,_ZThn28_N8S19112C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19112C9D1Ev,_ZThn28_N8S19112C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C9 = {  "S19112C9", // class name
  bases_S19112C9, 2,
  &(vtc_S19112C9[0]), // expected_vtbl_contents
  &(vtt_S19112C9[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S19112C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19112C9),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C9),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C2  : S19112C3 , virtual S19112C9 {
  char s19112c2f0;
  __tsi64 s19112c2f1:35;
  virtual  ~S19112C2(); // _ZN8S19112C2D2Ev
  S19112C2(); // tgen
};
//SIG(-1 S19112C2) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S19112C2 ::~S19112C2(){ note_dtor("S19112C2", this);}
S19112C2 ::S19112C2(){ note_ctor("S19112C2", this);} // tgen

static void Test_S19112C2()
{
  extern Class_Descriptor cd_S19112C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19112C2, buf);
    S19112C2 *dp, &lv = *(dp=new (buf) S19112C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19112C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C2)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*), 0, "S19112C2");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(160,88), "S19112C2");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(656,348), "S19112C2");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*), ABISELECT(160,88), "S19112C2");
    check_base_class_offset(lv, (S19112C3*), 0, "S19112C2");
    check_base_class_offset(lv, (S19112C9*), ABISELECT(800,424), "S19112C2");
    check_field_offset(lv, s19112c2f0, ABISELECT(140,80), "S19112C2.s19112c2f0");
    set_bf_and_test(lv, s19112c2f1, ABISELECT(144,81), 0, 35, 1, "S19112C2");
    set_bf_and_test(lv, s19112c2f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19112C2");
    test_class_info(&lv, &cd_S19112C2);
    dp->~S19112C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C2(Test_S19112C2, "S19112C2", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19112C2C1Ev();
extern void _ZN8S19112C2D2Ev();
Name_Map name_map_S19112C2[] = {
  NSPAIR(_ZN8S19112C2C1Ev),
  NSPAIR(_ZN8S19112C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
static Base_Class bases_S19112C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(656,348), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19112C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19112C9,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C2[];
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19112C2[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19112C2[];
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C3__8S19112C2[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C3__8S19112C2[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C3__8S19112C2[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__8S19112C2[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
static  VTT_ENTRY vtt_S19112C2[] = {
  {&(_ZTV8S19112C2[5]),  5,28},
  {&(_tg__ZTV8S19112C3__8S19112C2[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C3__8S19112C2[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C3__8S19112C2[3]),  3,5},
  {&(_ZTV8S19112C2[12]),  12,28},
  {&(_ZTV8S19112C2[18]),  18,28},
  {&(_ZTV8S19112C2[25]),  25,28},
  {&(_tg__ZTV8S19112C5__8S19112C2[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C2[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__8S19112C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C2 = {  "S19112C2", // class name
  bases_S19112C2, 7,
  &(vtc_S19112C2[0]), // expected_vtbl_contents
  &(vtt_S19112C2[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19112C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C2),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C2),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C14  {
  long double s19112c14f0;
  void *s19112c14f1;
  ::S8033C7 s19112c14f2;
  __tsi64 s19112c14f3;
  long double s19112c14f4;
  int s19112c14f5;
  virtual void  v4(); // _ZN9S19112C142v4Ev
  ~S19112C14(); // tgen
  S19112C14(); // tgen
};
//SIG(-1 S19112C14) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19112C14 ::v4(){vfunc_called(this, "_ZN9S19112C142v4Ev");}
S19112C14 ::~S19112C14(){ note_dtor("S19112C14", this);} // tgen
S19112C14 ::S19112C14(){ note_ctor("S19112C14", this);} // tgen

static void Test_S19112C14()
{
  extern Class_Descriptor cd_S19112C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19112C14, buf);
    S19112C14 *dp, &lv = *(dp=new (buf) S19112C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19112C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C14)");
    check_field_offset(lv, s19112c14f0, ABISELECT(16,4), "S19112C14.s19112c14f0");
    check_field_offset(lv, s19112c14f1, ABISELECT(32,16), "S19112C14.s19112c14f1");
    check_field_offset(lv, s19112c14f2, ABISELECT(48,20), "S19112C14.s19112c14f2");
    check_field_offset(lv, s19112c14f3, ABISELECT(144,72), "S19112C14.s19112c14f3");
    check_field_offset(lv, s19112c14f4, ABISELECT(160,80), "S19112C14.s19112c14f4");
    check_field_offset(lv, s19112c14f5, ABISELECT(176,92), "S19112C14.s19112c14f5");
    test_class_info(&lv, &cd_S19112C14);
    dp->~S19112C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C14(Test_S19112C14, "S19112C14", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19112C14C1Ev();
extern void _ZN9S19112C14D1Ev();
Name_Map name_map_S19112C14[] = {
  NSPAIR(_ZN9S19112C14C1Ev),
  NSPAIR(_ZN9S19112C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19112C14[];
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C14[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
Class_Descriptor cd_S19112C14 = {  "S19112C14", // class name
  0,0,//no base classes
  &(vtc_S19112C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19112C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19112C14),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  S19112C13  : virtual S19112C8 , virtual S19112C5 , virtual S19112C2 , virtual S8033C4 , virtual S19112C14 {
  void *s19112c13f0;
  ::S19112C14 s19112c13f1[3];
  ::S19112C14 s19112c13f2;
  char s19112c13f3;
  virtual  ~S19112C13(); // _ZN9S19112C13D2Ev
  S19112C13(); // tgen
};
//SIG(-1 S19112C13) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19112C13 ::~S19112C13(){ note_dtor("S19112C13", this);}
S19112C13 ::S19112C13(){ note_ctor("S19112C13", this);} // tgen

static void Test_S19112C13()
{
  extern Class_Descriptor cd_S19112C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19112C13, buf);
    S19112C13 *dp, &lv = *(dp=new (buf) S19112C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19112C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C13)");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(800,396), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(800,396), "S19112C13");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(1056,528), "S19112C13");
    check_base_class_offset(lv, (S19112C8*), ABISELECT(800,396), "S19112C13");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(1152,580), "S19112C13");
    /*is_ambiguous_... S19112C13::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(1648,840), "S19112C13");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(1152,580), "S19112C13");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(1152,580), "S19112C13");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(1952,1004), "S19112C13");
    check_base_class_offset(lv, (S19112C2*), ABISELECT(1792,916), "S19112C13");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19112C13");
    check_base_class_offset(lv, (S19112C14*), ABISELECT(2096,1108), "S19112C13");
    check_field_offset(lv, s19112c13f0, ABISELECT(8,4), "S19112C13.s19112c13f0");
    check_field_offset(lv, s19112c13f1, ABISELECT(16,8), "S19112C13.s19112c13f1");
    check_field_offset(lv, s19112c13f2, ABISELECT(592,296), "S19112C13.s19112c13f2");
    check_field_offset(lv, s19112c13f3, ABISELECT(784,392), "S19112C13.s19112c13f3");
    test_class_info(&lv, &cd_S19112C13);
    dp->~S19112C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C13(Test_S19112C13, "S19112C13", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN9S19112C13C1Ev();
extern void _ZN9S19112C13D2Ev();
Name_Map name_map_S19112C13[] = {
  NSPAIR(_ZN9S19112C13C1Ev),
  NSPAIR(_ZN9S19112C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
static Base_Class bases_S19112C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C6,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19112C6,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19112C3,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19112C9,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19112C2,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19112C14,    ABISELECT(2096,1108), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C13[];
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn800_N9S19112C13D1Ev,_ZThn396_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn800_N9S19112C13D0Ev,_ZThn396_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1056_N9S19112C13D1Ev,_ZThn528_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1056_N9S19112C13D0Ev,_ZThn528_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1152_N9S19112C13D1Ev,_ZThn580_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1152_N9S19112C13D0Ev,_ZThn580_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1648_N9S19112C13D1Ev,_ZThn840_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1648_N9S19112C13D0Ev,_ZThn840_N9S19112C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1792_N9S19112C13D1Ev,_ZThn916_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1792_N9S19112C13D0Ev,_ZThn916_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1952_N9S19112C13D1Ev,_ZThn1004_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1952_N9S19112C13D0Ev,_ZThn1004_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C13[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C13[];
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C13[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C13[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C13[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C13[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C13[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C13[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C13[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C13[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C13[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C13[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C13[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
static  VTT_ENTRY vtt_S19112C13[] = {
  {&(_ZTV9S19112C13[10]),  10,56},
  {&(_ZTV9S19112C13[16]),  16,56},
  {&(_ZTV9S19112C13[21]),  21,56},
  {&(_ZTV9S19112C13[28]),  28,56},
  {&(_ZTV9S19112C13[34]),  34,56},
  {&(_ZTV9S19112C13[42]),  42,56},
  {&(_ZTV9S19112C13[49]),  49,56},
  {&(_ZTV9S19112C13[55]),  55,56},
  {&(_tg__ZTV8S19112C8__9S19112C13[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C13[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C13[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C13[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C13[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C13[5]),  5,8},
  {&(_tg__ZTV8S19112C9__9S19112C13[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19112C13D0Ev,_ZThn1004_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N9S19112C13D1Ev,_ZThn1004_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19112C13D0Ev,_ZThn916_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N9S19112C13D1Ev,_ZThn916_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19112C13D0Ev,_ZThn840_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19112C13D0Ev,_ZThn528_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N9S19112C13D1Ev,_ZThn840_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N9S19112C13D1Ev,_ZThn528_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19112C13D0Ev,_ZThn580_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19112C13D0Ev,_ZThn396_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N9S19112C13D1Ev,_ZThn580_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19112C13D1Ev,_ZThn396_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C13 = {  "S19112C13", // class name
  bases_S19112C13, 14,
  &(vtc_S19112C13[0]), // expected_vtbl_contents
  &(vtt_S19112C13[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI9S19112C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19112C13),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C13),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C12  : virtual S19112C5 , S8033C4 , virtual S19112C9 , S19112C13 {
  ::S19112C14 s19112c12f0;
  void *s19112c12f1;
  long s19112c12f2[2];
  __tsi64 s19112c12f3:31;
  int s19112c12f4;
  ::S20291C14_nt s19112c12f5;
  ::S19112C14 s19112c12f6;
  ::S19112C14 s19112c12f7;
  void *s19112c12f8;
  ~S19112C12(); // tgen
  S19112C12(); // tgen
};
//SIG(-1 S19112C12) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC3 vd FC3 Fp}} BC7{ m Fp[3] FL[8]} VBC8{ VBC4 v2 Fc Fs FD Fp[2]} BC9{ VBC6 VBC2 VBC10{ BC11{ BC3 VBC2 vd Fp FL Fl Fc Fp Fi} VBC8 vd Fc FL:35} VBC7 VBC12{ v3 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} FC12 Fp Fl[2] FL:31 Fi FC5 FC12 FC12 Fp}


S19112C12 ::~S19112C12(){ note_dtor("S19112C12", this);} // tgen
S19112C12 ::S19112C12(){ note_ctor("S19112C12", this);} // tgen

static void Test_S19112C12()
{
  extern Class_Descriptor cd_S19112C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(188,400)];
    init_test(&cd_S19112C12, buf);
    S19112C12 *dp, &lv = *(dp=new (buf) S19112C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2992,1596), "sizeof(S19112C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C12)");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(1520,788), "S19112C12");
    /*is_ambiguous_... S19112C12::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(2016,1048), "S19112C12");
    check_base_class_offset(lv, (S19112C5*), ABISELECT(1520,788), "S19112C12");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*), ABISELECT(1520,788), "S19112C12");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(1520,788), "S19112C12");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(792,396), "S19112C12");
    check_base_class_offset(lv, (S19112C9*), ABISELECT(2160,1124), "S19112C12");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(2160,1124), "S19112C12");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(2208,1152), "S19112C12");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(2208,1152), "S19112C12");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(2464,1284), "S19112C12");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*), ABISELECT(2208,1152), "S19112C12");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*), ABISELECT(2560,1336), "S19112C12");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*), ABISELECT(2712,1424), "S19112C12");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*), ABISELECT(2800,1500), "S19112C12");
    check_base_class_offset(lv, (S19112C13*), 0, "S19112C12");
    check_field_offset(lv, s19112c12f0, ABISELECT(880,472), "S19112C12.s19112c12f0");
    check_field_offset(lv, s19112c12f1, ABISELECT(1072,568), "S19112C12.s19112c12f1");
    check_field_offset(lv, s19112c12f2, ABISELECT(1080,572), "S19112C12.s19112c12f2");
    set_bf_and_test(lv, s19112c12f3, ABISELECT(1096,580), 0, 31, 1, "S19112C12");
    set_bf_and_test(lv, s19112c12f3, ABISELECT(1096,580), 0, 31, hide_sll(1LL<<30), "S19112C12");
    check_field_offset(lv, s19112c12f4, ABISELECT(1100,584), "S19112C12.s19112c12f4");
    check_field_offset(lv, s19112c12f5, ABISELECT(1104,588), "S19112C12.s19112c12f5");
    check_field_offset(lv, s19112c12f6, ABISELECT(1120,592), "S19112C12.s19112c12f6");
    check_field_offset(lv, s19112c12f7, ABISELECT(1312,688), "S19112C12.s19112c12f7");
    check_field_offset(lv, s19112c12f8, ABISELECT(1504,784), "S19112C12.s19112c12f8");
    test_class_info(&lv, &cd_S19112C12);
    dp->~S19112C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C12(Test_S19112C12, "S19112C12", ABISELECT(2992,1596));

#else // __cplusplus

extern void _ZN9S19112C12C1Ev();
extern void _ZN9S19112C12D1Ev();
Name_Map name_map_S19112C12[] = {
  NSPAIR(_ZN9S19112C12C1Ev),
  NSPAIR(_ZN9S19112C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
static Base_Class bases_S19112C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(1520,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2016,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C6,    ABISELECT(2016,1048), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(1520,788), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(792,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19112C9,    ABISELECT(2160,1124), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19112C6,    ABISELECT(2208,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2464,1284), //bcp->offset
    39, //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
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(2208,1152), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19112C3,    ABISELECT(2560,1336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19112C2,    ABISELECT(2560,1336), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2712,1424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(2800,1500), //bcp->offset
    52, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C12[];
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C12[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C12[];
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C13__9S19112C12[] = {
  ABISELECT(2800,1500),
  ABISELECT(2712,1424),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C13__9S19112C12[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C13__9S19112C12[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C13__9S19112C12[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C13__9S19112C12[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C13__9S19112C12[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C13__9S19112C12[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C13__9S19112C12[] = {
  0,
  ABISELECT(-2800,-1500),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C12[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C12[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C12[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C12[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C12[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C12[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C12[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
static  VTT_ENTRY vtt_S19112C12[] = {
  {&(_ZTV9S19112C12[10]),  10,56},
  {&(_tg__ZTV9S19112C13__9S19112C12[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C13__9S19112C12[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C13__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C13__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C13__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C13__9S19112C12[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C13__9S19112C12[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C13__9S19112C12[3]),  3,4},
  {&(_ZTV9S19112C12[17]),  17,56},
  {&(_ZTV9S19112C12[23]),  23,56},
  {&(_ZTV9S19112C12[30]),  30,56},
  {&(_ZTV9S19112C12[37]),  37,56},
  {&(_ZTV9S19112C12[42]),  42,56},
  {&(_ZTV9S19112C12[50]),  50,56},
  {&(_ZTV9S19112C12[55]),  55,56},
  {&(_tg__ZTV8S19112C5__9S19112C12[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C8__9S19112C12[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C12[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C12[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C12[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C12 = {  "S19112C12", // class name
  bases_S19112C12, 16,
  &(vtc_S19112C12[0]), // expected_vtbl_contents
  &(vtt_S19112C12[0]), // expected_vtt_contents
  ABISELECT(2992,1596), // object size
  NSPAIRA(_ZTI9S19112C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19112C12),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C12),29, //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  S19112C10  : virtual S8033C4 , virtual S19112C12 , S19112C14 , S8033C7 {
  ::S19112C14 s19112c10f0;
  int s19112c10f1;
  char s19112c10f2[6];
  long double s19112c10f3;
  int s19112c10f4;
  __tsi64 s19112c10f5;
  virtual void  v5(); // _ZN9S19112C102v5Ev
  ~S19112C10(); // tgen
  S19112C10(); // tgen
};
//SIG(-1 S19112C10) C1{ VBC2{ m Fp[3] FL[8]} VBC3{ VBC4{ BC5{ vd m Fc Fc:0 Fl[8] FD} VBC6{ BC5 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC5 vd FC5 Fp}} BC2 VBC9{ VBC6 v3 Fc Fs FD Fp[2]} BC10{ VBC8 VBC4 VBC11{ BC12{ BC5 VBC4 vd Fp FL Fl Fc Fp Fi} VBC9 vd Fc FL:35} VBC2 VBC13{ v4 FD Fp FC5 FL FD Fi} vd Fp FC13[3] FC13 Fc} FC13 Fp Fl[2] FL:31 Fi FC7 FC13 FC13 Fp} BC13 BC5 v1 FC13 Fi Fc[6] FD Fi FL}


void  S19112C10 ::v5(){vfunc_called(this, "_ZN9S19112C102v5Ev");}
S19112C10 ::~S19112C10(){ note_dtor("S19112C10", this);} // tgen
S19112C10 ::S19112C10(){ note_ctor("S19112C10", this);} // tgen

static void Test_S19112C10()
{
  extern Class_Descriptor cd_S19112C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,470)];
    init_test(&cd_S19112C10, buf);
    S19112C10 *dp, &lv = *(dp=new (buf) S19112C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,1876), "sizeof(S19112C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C10)");
    /*is_ambiguous_... S19112C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*), ABISELECT(528,280), "S19112C10");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*)(S19112C12*), ABISELECT(528,280), "S19112C10");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(2144,1144), "S19112C10");
    /*is_ambiguous_... S19112C10::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(2640,1404), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C12*), ABISELECT(2144,1144), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*)(S19112C12*), ABISELECT(2144,1144), "S19112C10");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(2144,1144), "S19112C10");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C12*), ABISELECT(1416,752), "S19112C10");
    check_base_class_offset(lv, (S19112C9*)(S19112C12*), ABISELECT(2784,1480), "S19112C10");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(2784,1480), "S19112C10");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(2832,1508), "S19112C10");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(2832,1508), "S19112C10");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(3088,1640), "S19112C10");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*)(S19112C12*), ABISELECT(2832,1508), "S19112C10");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*)(S19112C12*), ABISELECT(3184,1692), "S19112C10");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*)(S19112C12*), ABISELECT(3344,1780), "S19112C10");
    check_base_class_offset(lv, (S19112C13*)(S19112C12*), ABISELECT(624,356), "S19112C10");
    check_base_class_offset(lv, (S19112C12*), ABISELECT(624,356), "S19112C10");
    /*is_ambiguous_... S19112C10::S19112C14 */ AMB_check_base_class_offset(lv, (S19112C14*), 0, "S19112C10");
    /*is_ambiguous_... S19112C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(192,96), "S19112C10");
    check_field_offset(lv, s19112c10f0, ABISELECT(288,148), "S19112C10.s19112c10f0");
    check_field_offset(lv, s19112c10f1, ABISELECT(480,244), "S19112C10.s19112c10f1");
    check_field_offset(lv, s19112c10f2, ABISELECT(484,248), "S19112C10.s19112c10f2");
    check_field_offset(lv, s19112c10f3, ABISELECT(496,256), "S19112C10.s19112c10f3");
    check_field_offset(lv, s19112c10f4, ABISELECT(512,268), "S19112C10.s19112c10f4");
    check_field_offset(lv, s19112c10f5, ABISELECT(520,272), "S19112C10.s19112c10f5");
    test_class_info(&lv, &cd_S19112C10);
    dp->~S19112C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C10(Test_S19112C10, "S19112C10", ABISELECT(3536,1876));

#else // __cplusplus

extern void _ZN9S19112C10C1Ev();
extern void _ZN9S19112C10D1Ev();
Name_Map name_map_S19112C10[] = {
  NSPAIR(_ZN9S19112C10C1Ev),
  NSPAIR(_ZN9S19112C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
extern Class_Descriptor cd_S19112C12;
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19112C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    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_S8033C7,    ABISELECT(2144,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2640,1404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C6,    ABISELECT(2640,1404), //bcp->offset
    40, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(2144,1144), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(1416,752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C9,    ABISELECT(2784,1480), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19112C6,    ABISELECT(2832,1508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(3088,1640), //bcp->offset
    59, //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
    10, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(2832,1508), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19112C3,    ABISELECT(3184,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19112C2,    ABISELECT(3184,1692), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(3344,1780), //bcp->offset
    72, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19112C12,    ABISELECT(624,356), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19112C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(192,96), //bcp->offset
    15, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19112C10[];
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void _ZN9S19112C10D1Ev();
extern void _ZN9S19112C10D0Ev();
extern void ABISELECT(_ZThn192_N9S19112C10D1Ev,_ZThn96_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S19112C10D0Ev,_ZThn96_N9S19112C10D0Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2640_N9S19112C10D1Ev,_ZThn1404_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2640_N9S19112C10D0Ev,_ZThn1404_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2784_N9S19112C10D1Ev,_ZThn1480_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2784_N9S19112C10D0Ev,_ZThn1480_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2832_N9S19112C10D1Ev,_ZThn1508_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2832_N9S19112C10D0Ev,_ZThn1508_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn3088_N9S19112C10D1Ev,_ZThn1640_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn3088_N9S19112C10D0Ev,_ZThn1640_N9S19112C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn3184_N9S19112C10D1Ev,_ZThn1692_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn3184_N9S19112C10D0Ev,_ZThn1692_N9S19112C10D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C10[] = {
  ABISELECT(3344,1780),
  ABISELECT(3184,1692),
  ABISELECT(3088,1640),
  ABISELECT(2832,1508),
  ABISELECT(2784,1480),
  ABISELECT(2640,1404),
  ABISELECT(2144,1144),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D0Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19112C10D1Ev,_ZThn96_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N9S19112C10D0Ev,_ZThn96_N9S19112C10D0Ev),
  ABISELECT(-624,-356),
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev),
  0,
  ABISELECT(-2144,-1144),
  ABISELECT(496,260),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-2640,-1404),
  ABISELECT(-2640,-1404),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
  ABISELECT(-2784,-1480),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2784,-1480),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev),
  ABISELECT(-2832,-1508),
  ABISELECT(256,132),
  ABISELECT(-2832,-1508),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  ABISELECT(-3088,-1640),
  ABISELECT(-3088,-1640),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
  ABISELECT(-3184,-1692),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-3184,-1692),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev),
  0,
  ABISELECT(-3344,-1780),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19112C10[];
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C12__9S19112C10[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
};
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(2720,1424),
  ABISELECT(-96,-76),
  ABISELECT(2160,1124),
  ABISELECT(2560,1336),
  ABISELECT(2016,1048),
  ABISELECT(1520,788),
  ABISELECT(2464,1284),
  ABISELECT(2208,1152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C139S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C139S19112C12__9S19112C10[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C139S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-1520,-788),
  ABISELECT(496,260),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C12__9S19112C10[] = {
  ABISELECT(-2016,-1048),
  ABISELECT(-2016,-1048),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12__9S19112C10[] = {
  ABISELECT(-2160,-1124),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-2160,-1124),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12__9S19112C10[] = {
  ABISELECT(-2208,-1152),
  ABISELECT(256,132),
  ABISELECT(-2208,-1152),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C12__9S19112C10[] = {
  ABISELECT(-2464,-1284),
  ABISELECT(-2464,-1284),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12__9S19112C10[] = {
  ABISELECT(-2560,-1336),
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  ABISELECT(-2560,-1336),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C12__9S19112C10[] = {
  0,
  ABISELECT(-2720,-1424),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__9S19112C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C10[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__9S19112C10[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C10[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__9S19112C10[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C10[] = {
  ABISELECT(-400,-212),
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__9S19112C10[] = {
  ABISELECT(-544,-288),
  ABISELECT(-1040,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__9S19112C10[] = {
  0,
  ABISELECT(1040,548),
  ABISELECT(496,260),
  ABISELECT(1040,548),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__9S19112C10[] = {
  ABISELECT(544,288),
  ABISELECT(544,288),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__9S19112C10[] = {
  ABISELECT(400,212),
  0,
  ABISELECT(-144,-76),
  ABISELECT(400,212),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
static  VTT_ENTRY vtt_S19112C10[] = {
  {&(_ZTV9S19112C10[11]),  11,76},
  {&(_ZTV9S19112C10[30]),  30,76},
  {&(_ZTV9S19112C10[37]),  37,76},
  {&(_ZTV9S19112C10[43]),  43,76},
  {&(_ZTV9S19112C10[50]),  50,76},
  {&(_ZTV9S19112C10[57]),  57,76},
  {&(_ZTV9S19112C10[62]),  62,76},
  {&(_ZTV9S19112C10[70]),  70,76},
  {&(_ZTV9S19112C10[75]),  75,76},
  {&(_tg__ZTV9S19112C12__9S19112C10[10]),  10,12},
  {&(_tg__ZTV9S19112C139S19112C12__9S19112C10[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C139S19112C12__9S19112C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C139S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C139S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C139S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C139S19112C12__9S19112C10[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C139S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C139S19112C12__9S19112C10[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C12__9S19112C10[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C12__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12__9S19112C10[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C12__9S19112C10[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C10[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C10[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C8__9S19112C10[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C10[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__9S19112C10[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__9S19112C10[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__9S19112C10[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__9S19112C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19112C10[];
extern  VTBL_ENTRY _ZTV9S19112C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C10[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D0Ev,_ZThn1336_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C12D1Ev,_ZThn1336_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D0Ev,_ZThn1124_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C12D1Ev,_ZThn1124_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D0Ev,_ZThn1284_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D0Ev,_ZThn1048_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C12D1Ev,_ZThn1284_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C12D1Ev,_ZThn1048_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D0Ev,_ZThn1152_N9S19112C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C12D1Ev,_ZThn1152_N9S19112C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D0Ev,_ZThn1124_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N9S19112C13D1Ev,_ZThn1124_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D0Ev,_ZThn1336_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N9S19112C13D1Ev,_ZThn1336_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D0Ev,_ZThn1048_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D0Ev,_ZThn1284_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N9S19112C13D1Ev,_ZThn1048_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2464_N9S19112C13D1Ev,_ZThn1284_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D0Ev,_ZThn1152_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2208_N9S19112C13D1Ev,_ZThn1152_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19112C10D0Ev,_ZThn1692_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N9S19112C10D1Ev,_ZThn1692_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19112C10D0Ev,_ZThn1480_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2784_N9S19112C10D1Ev,_ZThn1480_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19112C10D0Ev,_ZThn1640_N9S19112C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19112C10D0Ev,_ZThn1404_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3088_N9S19112C10D1Ev,_ZThn1640_N9S19112C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N9S19112C10D1Ev,_ZThn1404_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19112C10D0Ev,_ZThn1508_N9S19112C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N9S19112C10D1Ev,_ZThn1508_N9S19112C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C10 = {  "S19112C10", // class name
  bases_S19112C10, 19,
  &(vtc_S19112C10[0]), // expected_vtbl_contents
  &(vtt_S19112C10[0]), // expected_vtt_contents
  ABISELECT(3536,1876), // object size
  NSPAIRA(_ZTI9S19112C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19112C10),76, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19112C10),38, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19112C1  : virtual S19112C2 , virtual S19112C10 {
  int s19112c1f0:21;
  ::S19112C14 s19112c1f1;
  long s19112c1f2;
  int s19112c1f3;
  ::S19112C13 s19112c1f4;
  ::S19112C10 s19112c1f5;
  virtual void  v1(); // _ZN8S19112C12v1Ev
  ~S19112C1(); // tgen
  S19112C1(); // tgen
};
//SIG(1 S19112C1) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} VBC5{ BC4 VBC6{ BC4 Fp FC7{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC8{ BC6 VBC4 vd FC4 Fp}} vd Fp FL Fl Fc Fp Fi} VBC9{ VBC6 v3 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ VBC11{ m Fp[3] FL[8]} VBC12{ VBC5 BC11 VBC9 BC13{ VBC8 VBC5 VBC2 VBC11 VBC14{ v4 FD Fp FC4 FL FD Fi} vd Fp FC14[3] FC14 Fc} FC14 Fp Fl[2] FL:31 Fi FC7 FC14 FC14 Fp} BC14 BC4 v5 FC14 Fi Fc[6] FD Fi FL} v1 Fi:21 FC14 Fl Fi FC13 FC10}


void  S19112C1 ::v1(){vfunc_called(this, "_ZN8S19112C12v1Ev");}
S19112C1 ::~S19112C1(){ note_dtor("S19112C1", this);} // tgen
S19112C1 ::S19112C1(){ note_ctor("S19112C1", this);} // tgen

static void Test_S19112C1()
{
  extern Class_Descriptor cd_S19112C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1268)];
    init_test(&cd_S19112C1, buf);
    S19112C1 *dp, &lv = *(dp=new (buf) S19112C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,5068), "sizeof(S19112C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19112C1)");
    /*is_ambiguous_... S19112C3::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C3*)(S19112C2*), ABISELECT(6048,3192), "S19112C1");
    /*is_ambiguous_... S19112C5::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C5*), ABISELECT(6208,3280), "S19112C1");
    /*is_ambiguous_... S19112C1::S19112C6 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C6*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C5*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C9*), ABISELECT(6704,3540), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C3*)(S19112C2*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C12*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C5*)(S19112C13*)(S19112C12*), ABISELECT(6208,3280), "S19112C1");
    check_base_class_offset(lv, (S19112C3*)(S19112C2*), ABISELECT(6048,3192), "S19112C1");
    check_base_class_offset(lv, (S19112C9*)(S19112C2*), ABISELECT(6848,3616), "S19112C1");
    check_base_class_offset(lv, (S19112C9*)(S19112C12*), ABISELECT(6848,3616), "S19112C1");
    check_base_class_offset(lv, (S19112C2*), ABISELECT(6048,3192), "S19112C1");
    check_base_class_offset(lv, (S19112C2*)(S19112C13*)(S19112C12*), ABISELECT(6048,3192), "S19112C1");
    /*is_ambiguous_... S19112C10::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C10*), ABISELECT(7424,3924), "S19112C1");
    check_base_class_offset(lv, (S8033C4*)(S19112C13*)(S19112C12*), ABISELECT(7424,3924), "S19112C1");
    /*is_ambiguous_... S19112C12::S8033C4 */ AMB_check_base_class_offset(lv, (S8033C4*)(S19112C12*), ABISELECT(8312,4396), "S19112C1");
    check_base_class_offset(lv, (S8033C7*)(S19112C6*)(S19112C8*), ABISELECT(9040,4788), "S19112C1");
    check_base_class_offset(lv, (S19112C6*)(S19112C8*), ABISELECT(9040,4788), "S19112C1");
    /*is_ambiguous_... S19112C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C8*), ABISELECT(9296,4920), "S19112C1");
    check_base_class_offset(lv, (S19112C8*)(S19112C13*)(S19112C12*), ABISELECT(9040,4788), "S19112C1");
    check_base_class_offset(lv, (S19112C14*)(S19112C13*)(S19112C12*), ABISELECT(9392,4972), "S19112C1");
    check_base_class_offset(lv, (S19112C13*)(S19112C12*), ABISELECT(7520,4000), "S19112C1");
    check_base_class_offset(lv, (S19112C12*)(S19112C10*), ABISELECT(7520,4000), "S19112C1");
    /*is_ambiguous_... S19112C10::S19112C14 */ AMB_check_base_class_offset(lv, (S19112C14*)(S19112C10*), ABISELECT(6896,3644), "S19112C1");
    /*is_ambiguous_... S19112C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19112C10*), ABISELECT(7088,3740), "S19112C1");
    check_base_class_offset(lv, (S19112C10*), ABISELECT(6896,3644), "S19112C1");
    set_bf_and_test(lv, s19112c1f0, ABISELECT(8,4), 0, 21, 1, "S19112C1");
    set_bf_and_test(lv, s19112c1f0, ABISELECT(8,4), 0, 21, hide_sll(1LL<<20), "S19112C1");
    check_field_offset(lv, s19112c1f1, ABISELECT(16,8), "S19112C1.s19112c1f1");
    check_field_offset(lv, s19112c1f2, ABISELECT(208,104), "S19112C1.s19112c1f2");
    check_field_offset(lv, s19112c1f3, ABISELECT(216,108), "S19112C1.s19112c1f3");
    check_field_offset(lv, s19112c1f4, ABISELECT(224,112), "S19112C1.s19112c1f4");
    check_field_offset(lv, s19112c1f5, ABISELECT(2512,1316), "S19112C1.s19112c1f5");
    test_class_info(&lv, &cd_S19112C1);
    dp->~S19112C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19112C1(Test_S19112C1, "S19112C1", ABISELECT(9584,5068));

#else // __cplusplus

extern void _ZN8S19112C1C1Ev();
extern void _ZN8S19112C1D1Ev();
Name_Map name_map_S19112C1[] = {
  NSPAIR(_ZN8S19112C1C1Ev),
  NSPAIR(_ZN8S19112C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S19112C5;
extern VTBL_ENTRY _ZTI8S19112C5[];
extern  VTBL_ENTRY _ZTV8S19112C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C5[];
extern Class_Descriptor cd_S19112C3;
extern VTBL_ENTRY _ZTI8S19112C3[];
extern  VTBL_ENTRY _ZTV8S19112C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C3[];
extern Class_Descriptor cd_S19112C9;
extern VTBL_ENTRY _ZTI8S19112C9[];
extern  VTBL_ENTRY _ZTV8S19112C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C9[];
extern Class_Descriptor cd_S19112C2;
extern VTBL_ENTRY _ZTI8S19112C2[];
extern  VTBL_ENTRY _ZTV8S19112C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C2[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C6;
extern VTBL_ENTRY _ZTI8S19112C6[];
extern  VTBL_ENTRY _ZTV8S19112C6[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C8;
extern VTBL_ENTRY _ZTI8S19112C8[];
extern  VTBL_ENTRY _ZTV8S19112C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C8[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S19112C13;
extern VTBL_ENTRY _ZTI9S19112C13[];
extern  VTBL_ENTRY _ZTV9S19112C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C13[];
extern Class_Descriptor cd_S19112C12;
extern VTBL_ENTRY _ZTI9S19112C12[];
extern  VTBL_ENTRY _ZTV9S19112C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C12[];
extern Class_Descriptor cd_S19112C14;
extern VTBL_ENTRY _ZTI9S19112C14[];
extern  VTBL_ENTRY _ZTV9S19112C14[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19112C10;
extern VTBL_ENTRY _ZTI9S19112C10[];
extern  VTBL_ENTRY _ZTV9S19112C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19112C10[];
static Base_Class bases_S19112C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(6048,3192), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6208,3280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(6704,3540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19112C6,    ABISELECT(6704,3540), //bcp->offset
    31, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19112C5,    ABISELECT(6208,3280), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19112C3,    ABISELECT(6048,3192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19112C9,    ABISELECT(6848,3616), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19112C2,    ABISELECT(6048,3192), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(7424,3924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(8312,4396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8033C7,    ABISELECT(9040,4788), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19112C6,    ABISELECT(9040,4788), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(9296,4920), //bcp->offset
    85, //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
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19112C8,    ABISELECT(9040,4788), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(9392,4972), //bcp->offset
    90, //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
    13, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19112C13,    ABISELECT(7520,4000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19112C12,    ABISELECT(7520,4000), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19112C14,    ABISELECT(6896,3644), //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(7088,3740), //bcp->offset
    62, //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
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19112C10,    ABISELECT(6896,3644), //bcp->offset
    44, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19112C1[];
extern void _ZN8S19112C12v1Ev();
extern void _ZN8S19112C1D1Ev();
extern void _ZN8S19112C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6048_N8S19112C1D1Ev,_ZThn3192_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6048_N8S19112C1D0Ev,_ZThn3192_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6208_N8S19112C1D1Ev,_ZThn3280_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6208_N8S19112C1D0Ev,_ZThn3280_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6704_N8S19112C1D1Ev,_ZThn3540_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6704_N8S19112C1D0Ev,_ZThn3540_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6848_N8S19112C1D1Ev,_ZThn3616_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6848_N8S19112C1D0Ev,_ZThn3616_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn6896_N8S19112C1D1Ev,_ZThn3644_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn6896_N8S19112C1D0Ev,_ZThn3644_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn192_n112_N8S19112C1D1Ev,_ZTvn96_n56_N8S19112C1D1Ev)();
extern void ABISELECT(_ZTvn192_n112_N8S19112C1D0Ev,_ZTvn96_n56_N8S19112C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn7520_N8S19112C1D1Ev,_ZThn4000_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn7520_N8S19112C1D0Ev,_ZThn4000_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn9040_N8S19112C1D1Ev,_ZThn4788_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn9040_N8S19112C1D0Ev,_ZThn4788_N8S19112C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev)();
extern void ABISELECT(_ZThn9296_N8S19112C1D1Ev,_ZThn4920_N8S19112C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev)();
extern void ABISELECT(_ZThn9296_N8S19112C1D0Ev,_ZThn4920_N8S19112C1D0Ev)() __attribute__((weak));
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY vtc_S19112C1[] = {
  ABISELECT(9392,4972),
  ABISELECT(9296,4920),
  ABISELECT(9040,4788),
  ABISELECT(7520,4000),
  ABISELECT(7424,3924),
  ABISELECT(6896,3644),
  ABISELECT(6848,3616),
  ABISELECT(6704,3540),
  ABISELECT(6208,3280),
  ABISELECT(6048,3192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN8S19112C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19112C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C1D0Ev,
  ABISELECT(-6048,-3192),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(-6048,-3192),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev),
  0,
  ABISELECT(-6208,-3280),
  ABISELECT(496,260),
  ABISELECT(-6208,-3280),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
  ABISELECT(-6704,-3540),
  ABISELECT(-6704,-3540),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev),
  ABISELECT(-6848,-3616),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-6848,-3616),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev),
  ABISELECT(-6896,-3644),
  0,
  0,
  ABISELECT(2496,1328),
  ABISELECT(-848,-452),
  ABISELECT(2400,1276),
  ABISELECT(2144,1144),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  ABISELECT(-6896,-3644),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev),
  ABISELECT(-7088,-3740),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19112C1D1Ev,_ZTvn96_n56_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n112_N8S19112C1D0Ev,_ZTvn96_n56_N8S19112C1D0Ev),
  ABISELECT(-7520,-4000),
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  ABISELECT(-7520,-4000),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev),
  ABISELECT(-9040,-4788),
  ABISELECT(256,132),
  ABISELECT(-9040,-4788),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev),
  ABISELECT(-9296,-4920),
  ABISELECT(-9296,-4920),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev),
  0,
  ABISELECT(-9392,-4972),
  (VTBL_ENTRY)&(_ZTI8S19112C1[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern VTBL_ENTRY _ZTV8S19112C1[];
extern void _ZN8S19112C2D1Ev();
extern void _ZN8S19112C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C2__8S19112C1[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C2D0Ev,
};
extern void _ZN8S19112C3D1Ev();
extern void _ZN8S19112C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C38S19112C2__8S19112C1[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&_ZN8S19112C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C38S19112C2__8S19112C1[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C38S19112C2__8S19112C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev)() __attribute__((weak));
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C2__8S19112C1[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C2__8S19112C1[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev)();
extern void ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C2__8S19112C1[] = {
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19112C2[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev),
};
extern void _ZN8S19112C5D1Ev();
extern void _ZN8S19112C5D0Ev();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__8S19112C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&_ZN8S19112C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C5__8S19112C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19112C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void _ZN8S19112C9D1Ev();
extern void _ZN8S19112C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C9__8S19112C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__8S19112C9__8S19112C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19112C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D1Ev,_ZTv0_n12_N8S19112C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C9D0Ev,_ZTv0_n12_N8S19112C9D0Ev),
};
extern void _ZN9S19112C142v4Ev();
extern void _ZN9S19112C102v5Ev();
extern void _ZN9S19112C10D1Ev();
extern void _ZN9S19112C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C10__8S19112C1[] = {
  ABISELECT(2496,1328),
  ABISELECT(-848,-452),
  ABISELECT(2400,1276),
  ABISELECT(2144,1144),
  ABISELECT(-48,-28),
  ABISELECT(-192,-104),
  ABISELECT(-688,-364),
  ABISELECT(624,356),
  ABISELECT(528,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
  (VTBL_ENTRY)&_ZN9S19112C102v5Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C10D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19112C12__9S19112C10__8S19112C1[] = {
  ABISELECT(-624,-356),
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C10__8S19112C1[] = {
  0,
  ABISELECT(688,364),
  ABISELECT(496,260),
  ABISELECT(688,364),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C10__8S19112C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C10__8S19112C1[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(-144,-76),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D1Ev,_ZTv0_n20_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C10D0Ev,_ZTv0_n20_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C10__8S19112C1[] = {
  ABISELECT(-2144,-1144),
  ABISELECT(256,132),
  ABISELECT(-2144,-1144),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev)();
extern void ABISELECT(_ZThn2400_N9S19112C10D1Ev,_ZThn1276_N9S19112C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev)();
extern void ABISELECT(_ZThn2400_N9S19112C10D0Ev,_ZThn1276_N9S19112C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C10__8S19112C1[] = {
  ABISELECT(-2400,-1276),
  ABISELECT(-2400,-1276),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C10__8S19112C1[] = {
  ABISELECT(848,452),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(848,452),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D1Ev,_ZTv0_n24_N9S19112C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C10D0Ev,_ZTv0_n24_N9S19112C10D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C10__8S19112C1[] = {
  0,
  ABISELECT(-2496,-1328),
  (VTBL_ENTRY)&(_ZTI9S19112C10[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN9S19112C12D1Ev();
extern void _ZN9S19112C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C12__8S19112C1[] = {
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C12D0Ev,
};
extern void _ZN9S19112C13D1Ev();
extern void _ZN9S19112C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(1872,972),
  ABISELECT(-96,-76),
  ABISELECT(-672,-384),
  ABISELECT(-1472,-808),
  ABISELECT(-816,-460),
  ABISELECT(-1312,-720),
  ABISELECT(1776,920),
  ABISELECT(1520,788),
  0,
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19112C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(-1520,-788),
  ABISELECT(256,132),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C13D1Ev,_ZThn920_N9S19112C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C13D0Ev,_ZThn920_N9S19112C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(-1776,-920),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C139S19112C12__8S19112C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__A1__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(1472,808),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(1472,808),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D1Ev,_ZTv0_n24_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C13D0Ev,_ZTv0_n24_N9S19112C13D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C139S19112C12__8S19112C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D1Ev,_ZTv0_n20_N9S19112C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C13D0Ev,_ZTv0_n20_N9S19112C13D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C139S19112C12__8S19112C1[] = {
  0,
  ABISELECT(-1872,-972),
  (VTBL_ENTRY)&(_ZTI9S19112C13[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void _ZN8S19112C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C5__9S19112C12__8S19112C1[] = {
  0,
  ABISELECT(1312,720),
  ABISELECT(496,260),
  ABISELECT(1312,720),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19112C52v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C6__9S19112C12__8S19112C1[] = {
  ABISELECT(816,460),
  ABISELECT(816,460),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void _ZN8S19112C92v3Ev();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C9__9S19112C12__8S19112C1[] = {
  ABISELECT(672,384),
  0,
  ABISELECT(-144,-76),
  ABISELECT(672,384),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN8S19112C92v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D1Ev,_ZTv0_n20_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19112C12D0Ev,_ZTv0_n20_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19112C8__9S19112C12__8S19112C1[] = {
  ABISELECT(-1520,-788),
  ABISELECT(256,132),
  ABISELECT(-1520,-788),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C12D1Ev,_ZThn920_N9S19112C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev)();
extern void ABISELECT(_ZThn1776_N9S19112C12D0Ev,_ZThn920_N9S19112C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A3__9S19112C12__8S19112C1[] = {
  ABISELECT(-1776,-920),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19112C2__9S19112C12__8S19112C1[] = {
  ABISELECT(1472,808),
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  ABISELECT(1472,808),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D1Ev,_ZTv0_n24_N9S19112C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19112C12D0Ev,_ZTv0_n24_N9S19112C12D0Ev),
};
extern void _ZN9S19112C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19112C14__9S19112C12__8S19112C1[] = {
  0,
  ABISELECT(-1872,-972),
  (VTBL_ENTRY)&(_ZTI9S19112C12[0]),
  (VTBL_ENTRY)&_ZN9S19112C142v4Ev,
};
extern void _ZN8S19112C8D1Ev();
extern void _ZN8S19112C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19112C8__8S19112C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&_ZN8S19112C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19112C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19112C8__8S19112C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19112C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev),
};
static  VTT_ENTRY vtt_S19112C1[] = {
  {&(_ZTV8S19112C1[12]),  12,94},
  {&(_ZTV8S19112C1[21]),  21,94},
  {&(_ZTV8S19112C1[28]),  28,94},
  {&(_ZTV8S19112C1[34]),  34,94},
  {&(_ZTV8S19112C1[41]),  41,94},
  {&(_ZTV8S19112C1[58]),  58,94},
  {&(_ZTV8S19112C1[77]),  77,94},
  {&(_ZTV8S19112C1[83]),  83,94},
  {&(_ZTV8S19112C1[88]),  88,94},
  {&(_ZTV8S19112C1[93]),  93,94},
  {&(_ZTV8S19112C1[64]),  64,94},
  {&(_tg__ZTV8S19112C2__8S19112C1[5]),  5,7},
  {&(_tg__ZTV8S19112C38S19112C2__8S19112C1[4]),  4,6},
  {&(_tg__ZTV8S19112C5__8S19112C38S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C38S19112C2__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C5__8S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__8S19112C2__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C2__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C5__8S19112C1[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C5__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__8S19112C1[3]),  3,6},
  {&(_tg__ZTV8S19112C6__8S19112C9__8S19112C1[3]),  3,5},
  {&(_tg__ZTV9S19112C10__8S19112C1[11]),  11,15},
  {&(_tg__ZTV9S19112C12__9S19112C10__8S19112C1[11]),  11,13},
  {&(_tg__ZTV8S19112C5__9S19112C10__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C10__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C10__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C10__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C10__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C10__8S19112C1[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C10__8S19112C1[3]),  3,4},
  {&(_tg__ZTV9S19112C12__8S19112C1[10]),  10,12},
  {&(_tg__ZTV9S19112C139S19112C12__8S19112C1[10]),  10,12},
  {&(_tg__ZTV8S19112C8__9S19112C139S19112C12__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__9S19112C139S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C5__9S19112C139S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__A1__9S19112C139S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C139S19112C12__8S19112C1[6]),  6,8},
  {&(_tg__ZTV8S19112C9__9S19112C139S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV9S19112C14__9S19112C139S19112C12__8S19112C1[3]),  3,4},
  {&(_tg__ZTV8S19112C5__9S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C6__9S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C9__9S19112C12__8S19112C1[5]),  5,8},
  {&(_tg__ZTV8S19112C8__9S19112C12__8S19112C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A3__9S19112C12__8S19112C1[3]),  3,5},
  {&(_tg__ZTV8S19112C2__9S19112C12__8S19112C1[6]),  6,8},
  {&(_tg__ZTV9S19112C14__9S19112C12__8S19112C1[3]),  3,4},
  {&(_tg__ZTV8S19112C8__8S19112C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19112C8__8S19112C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19112C1[];
extern  VTBL_ENTRY _ZTV8S19112C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19112C1[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D0Ev,_ZTv0_n12_N8S19112C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D0Ev,_ZThn132_N8S19112C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C8D1Ev,_ZTv0_n12_N8S19112C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19112C8D1Ev,_ZThn132_N8S19112C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D0Ev,_ZTv0_n12_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C12D0Ev,_ZThn920_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C12D1Ev,_ZTv0_n12_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C12D1Ev,_ZThn920_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D0Ev,_ZTv0_n16_N9S19112C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D0Ev,_ZThn788_N9S19112C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C12D1Ev,_ZTv0_n16_N9S19112C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C12D1Ev,_ZThn788_N9S19112C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D0Ev,_ZTv0_n12_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C13D0Ev,_ZThn920_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C13D1Ev,_ZTv0_n12_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N9S19112C13D1Ev,_ZThn920_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D0Ev,_ZTv0_n16_N9S19112C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D0Ev,_ZThn788_N9S19112C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C13D1Ev,_ZTv0_n16_N9S19112C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1520_N9S19112C13D1Ev,_ZThn788_N9S19112C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D0Ev,_ZTv0_n12_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19112C10D0Ev,_ZThn1276_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19112C10D1Ev,_ZTv0_n12_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N9S19112C10D1Ev,_ZThn1276_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D0Ev,_ZTv0_n16_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D0Ev,_ZThn1144_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19112C10D1Ev,_ZTv0_n16_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2144_N9S19112C10D1Ev,_ZThn1144_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D0Ev,_ZTv0_n44_N9S19112C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D0Ev,_ZThn356_N9S19112C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19112C10D1Ev,_ZTv0_n44_N9S19112C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19112C10D1Ev,_ZThn356_N9S19112C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D0Ev,_ZTv0_n12_N8S19112C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D0Ev,_ZThn260_N8S19112C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C5D1Ev,_ZTv0_n12_N8S19112C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19112C5D1Ev,_ZThn260_N8S19112C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D0Ev,_ZTv0_n20_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D0Ev,_ZThn424_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C2D1Ev,_ZTv0_n20_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19112C2D1Ev,_ZThn424_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D0Ev,_ZTv0_n12_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D0Ev,_ZThn348_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C2D1Ev,_ZTv0_n12_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C2D1Ev,_ZThn348_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D0Ev,_ZTv0_n16_N8S19112C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D0Ev,_ZThn88_N8S19112C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C2D1Ev,_ZTv0_n16_N8S19112C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C2D1Ev,_ZThn88_N8S19112C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D0Ev,_ZTv0_n12_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D0Ev,_ZThn348_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C3D1Ev,_ZTv0_n12_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19112C3D1Ev,_ZThn348_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D0Ev,_ZTv0_n16_N8S19112C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D0Ev,_ZThn88_N8S19112C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C3D1Ev,_ZTv0_n16_N8S19112C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19112C3D1Ev,_ZThn88_N8S19112C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19112C1D0Ev,_ZTv0_n44_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19112C1D0Ev,_ZThn4000_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19112C1D1Ev,_ZTv0_n44_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7520_N8S19112C1D1Ev,_ZThn4000_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19112C1D0Ev,_ZTv0_n56_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19112C1D0Ev,_ZThn3644_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19112C1D1Ev,_ZTv0_n56_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6896_N8S19112C1D1Ev,_ZThn3644_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C1D0Ev,_ZTv0_n20_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19112C1D0Ev,_ZThn3616_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19112C1D1Ev,_ZTv0_n20_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6848_N8S19112C1D1Ev,_ZThn3616_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C1D0Ev,_ZTv0_n12_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19112C1D0Ev,_ZThn4920_N8S19112C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19112C1D0Ev,_ZThn3540_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19112C1D1Ev,_ZTv0_n12_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9296_N8S19112C1D1Ev,_ZThn4920_N8S19112C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S19112C1D1Ev,_ZThn3540_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C1D0Ev,_ZTv0_n16_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19112C1D0Ev,_ZThn4788_N8S19112C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19112C1D0Ev,_ZThn3280_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19112C1D1Ev,_ZTv0_n16_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9040_N8S19112C1D1Ev,_ZThn4788_N8S19112C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6208_N8S19112C1D1Ev,_ZThn3280_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19112C1D0Ev,_ZTv0_n24_N8S19112C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19112C1D0Ev,_ZThn3192_N8S19112C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19112C1D1Ev,_ZTv0_n24_N8S19112C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6048_N8S19112C1D1Ev,_ZThn3192_N8S19112C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19112C1 = {  "S19112C1", // class name
  bases_S19112C1, 20,
  &(vtc_S19112C1[0]), // expected_vtbl_contents
  &(vtt_S19112C1[0]), // expected_vtt_contents
  ABISELECT(9584,5068), // object size
  NSPAIRA(_ZTI8S19112C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19112C1),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19112C1),49, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C5  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S1182C5(); // tgen
  S1182C5(); // tgen
};
//SIG(-1 S1182C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S1182C5 ::~S1182C5(){ note_dtor("S1182C5", this);} // tgen
S1182C5 ::S1182C5(){ note_ctor("S1182C5", this);} // tgen

static void Test_S1182C5()
{
  extern Class_Descriptor cd_S1182C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1182C5, buf);
    S1182C5 *dp, &lv = *(dp=new (buf) S1182C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1182C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S1182C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S1182C5");
    check_base_class_offset(lv, (S7856C12*), 0, "S1182C5");
    test_class_info(&lv, &cd_S1182C5);
    dp->~S1182C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C5(Test_S1182C5, "S1182C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1182C5C1Ev();
extern void _ZN7S1182C5D1Ev();
Name_Map name_map_S1182C5[] = {
  NSPAIR(_ZN7S1182C5C1Ev),
  NSPAIR(_ZN7S1182C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1182C5[];
static  VTBL_ENTRY vtc_S1182C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern VTBL_ENTRY _ZTV7S1182C5[];
static  VTT_ENTRY vtt_S1182C5[] = {
  {&(_ZTV7S1182C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
Class_Descriptor cd_S1182C5 = {  "S1182C5", // class name
  bases_S1182C5, 3,
  &(vtc_S1182C5[0]), // expected_vtbl_contents
  &(vtt_S1182C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1182C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C5),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  S1182C3  : S7856C24 , virtual S1182C5 , virtual S7856C15 {
  ~S1182C3(); // tgen
  S1182C3(); // tgen
};
//SIG(-1 S1182C3) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S1182C3 ::~S1182C3(){ note_dtor("S1182C3", this);} // tgen
S1182C3 ::S1182C3(){ note_ctor("S1182C3", this);} // tgen

static void Test_S1182C3()
{
  extern Class_Descriptor cd_S1182C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C3, buf);
    S1182C3 *dp, &lv = *(dp=new (buf) S1182C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C3)");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C3");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(8,4), "S1182C3");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C3");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C3");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C3");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C3");
    test_class_info(&lv, &cd_S1182C3);
    dp->~S1182C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C3(Test_S1182C3, "S1182C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1182C3C1Ev();
extern void _ZN7S1182C3D1Ev();
Name_Map name_map_S1182C3[] = {
  NSPAIR(_ZN7S1182C3C1Ev),
  NSPAIR(_ZN7S1182C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1182C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    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},
  {&cd_S7856C15,    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 _ZTI7S1182C3[];
static  VTBL_ENTRY vtc_S1182C3[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern VTBL_ENTRY _ZTV7S1182C3[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C3[] = {
  {&(_ZTV7S1182C3[6]),  6,6},
  {&(_ZTV7S1182C3[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
Class_Descriptor cd_S1182C3 = {  "S1182C3", // class name
  bases_S1182C3, 6,
  &(vtc_S1182C3[0]), // expected_vtbl_contents
  &(vtt_S1182C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1182C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C3),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C3),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  S1182C10  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S1182C5 , virtual S1182C3 {
  virtual  ~S1182C10(); // _ZN8S1182C10D2Ev
  S1182C10(); // tgen
};
//SIG(-1 S1182C10) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S1182C10 ::~S1182C10(){ note_dtor("S1182C10", this);}
S1182C10 ::S1182C10(){ note_ctor("S1182C10", this);} // tgen

static void Test_S1182C10()
{
  extern Class_Descriptor cd_S1182C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1182C10, buf);
    S1182C10 *dp, &lv = *(dp=new (buf) S1182C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1182C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C10)");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C10");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), 0, "S1182C10");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C10");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(16,8), "S1182C10");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(16,8), "S1182C10");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(24,12), "S1182C10");
    check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C10");
    test_class_info(&lv, &cd_S1182C10);
    dp->~S1182C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C10(Test_S1182C10, "S1182C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1182C10C1Ev();
extern void _ZN8S1182C10D2Ev();
Name_Map name_map_S1182C10[] = {
  NSPAIR(_ZN8S1182C10C1Ev),
  NSPAIR(_ZN8S1182C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
static Base_Class bases_S1182C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C10[];
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY vtc_S1182C10[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern VTBL_ENTRY _ZTV8S1182C10[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__A__8S1182C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C10[] = {
  {&(_ZTV8S1182C10[7]),  7,15},
  {&(_tg__ZTV7S1182C5__A__8S1182C10[4]),  4,4},
  {&(_ZTV8S1182C10[15]),  15,15},
  {&(_ZTV8S1182C10[15]),  15,15},
  {&(_tg__ZTV7S1182C3__8S1182C10[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
Class_Descriptor cd_S1182C10 = {  "S1182C10", // class name
  bases_S1182C10, 10,
  &(vtc_S1182C10[0]), // expected_vtbl_contents
  &(vtt_S1182C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1182C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C10),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  S1182C9  : virtual S7856C24 , virtual S7856C15 , virtual S1182C3 , S7856C12 , S1182C10 {
  virtual  ~S1182C9(); // _ZN7S1182C9D2Ev
  S1182C9(); // tgen
};
//SIG(-1 S1182C9) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S1182C9 ::~S1182C9(){ note_dtor("S1182C9", this);}
S1182C9 ::S1182C9(){ note_ctor("S1182C9", this);} // tgen

static void Test_S1182C9()
{
  extern Class_Descriptor cd_S1182C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1182C9, buf);
    S1182C9 *dp, &lv = *(dp=new (buf) S1182C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1182C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C9)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S1182C9");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(9,5), "S1182C9");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(24,12), "S1182C9");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(24,12), "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C9");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(16,8), "S1182C9");
    check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C9");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(16,8), "S1182C9");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(8,4), "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), 0, "S1182C9");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), 0, "S1182C9");
    check_base_class_offset(lv, (S1182C10*), 0, "S1182C9");
    test_class_info(&lv, &cd_S1182C9);
    dp->~S1182C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C9(Test_S1182C9, "S1182C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1182C9C1Ev();
extern void _ZN7S1182C9D2Ev();
Name_Map name_map_S1182C9[] = {
  NSPAIR(_ZN7S1182C9C1Ev),
  NSPAIR(_ZN7S1182C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
static Base_Class bases_S1182C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C9[];
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY vtc_S1182C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
extern VTBL_ENTRY _ZTV7S1182C9[];
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__7S1182C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A1__7S1182C9[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__7S1182C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C9[] = {
  {&(_ZTV7S1182C9[7]),  7,15},
  {&(_tg__ZTV8S1182C10__7S1182C9[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A1__7S1182C9[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__7S1182C9[6]),  6,6},
  {&(_ZTV7S1182C9[15]),  15,15},
  {&(_ZTV7S1182C9[15]),  15,15},
  {&(_tg__ZTV7S1182C3__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
Class_Descriptor cd_S1182C9 = {  "S1182C9", // class name
  bases_S1182C9, 12,
  &(vtc_S1182C9[0]), // expected_vtbl_contents
  &(vtt_S1182C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1182C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1182C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C9),10, //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  S1182C11  : S7856C12 , S7856C15 , S1182C5 {
  int s1182c11f0;
  ~S1182C11(); // tgen
  S1182C11(); // tgen
};
//SIG(-1 S1182C11) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S1182C11 ::~S1182C11(){ note_dtor("S1182C11", this);} // tgen
S1182C11 ::S1182C11(){ note_ctor("S1182C11", this);} // tgen

static void Test_S1182C11()
{
  extern Class_Descriptor cd_S1182C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1182C11, buf);
    S1182C11 *dp, &lv = *(dp=new (buf) S1182C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1182C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C11)");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C11");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1182C11");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C11");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C11");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(12,8), "S1182C11");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C11");
    check_field_offset(lv, s1182c11f0, ABISELECT(8,4), "S1182C11.s1182c11f0");
    test_class_info(&lv, &cd_S1182C11);
    dp->~S1182C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C11(Test_S1182C11, "S1182C11", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S1182C11C1Ev();
extern void _ZN8S1182C11D1Ev();
Name_Map name_map_S1182C11[] = {
  NSPAIR(_ZN8S1182C11C1Ev),
  NSPAIR(_ZN8S1182C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
static Base_Class bases_S1182C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S1182C5,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C11[];
static  VTBL_ENTRY vtc_S1182C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
extern VTBL_ENTRY _ZTV8S1182C11[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C11[] = {
  {&(_ZTV8S1182C11[4]),  4,4},
  {&(_tg__ZTV7S1182C5__8S1182C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
Class_Descriptor cd_S1182C11 = {  "S1182C11", // class name
  bases_S1182C11, 6,
  &(vtc_S1182C11[0]), // expected_vtbl_contents
  &(vtt_S1182C11[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S1182C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1182C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C11),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  S1182C8  : virtual S1182C9 , virtual S1182C11 , virtual S1182C10 {
  int s1182c8f0[2];
  virtual  ~S1182C8(); // _ZN7S1182C8D2Ev
  S1182C8(); // tgen
};
//SIG(-1 S1182C8) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S1182C8 ::~S1182C8(){ note_dtor("S1182C8", this);}
S1182C8 ::S1182C8(){ note_ctor("S1182C8", this);} // tgen

static void Test_S1182C8()
{
  extern Class_Descriptor cd_S1182C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S1182C8, buf);
    S1182C8 *dp, &lv = *(dp=new (buf) S1182C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S1182C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C8)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(25,17), "S1182C8");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C8");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), 0, "S1182C8");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), 0, "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), 0, "S1182C8");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(24,16), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C8");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(16,12), "S1182C8");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(40,24), "S1182C8");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C8");
    check_base_class_offset(lv, (S1182C11*), ABISELECT(32,20), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(56,32), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C8");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*), ABISELECT(48,28), "S1182C8");
    check_field_offset(lv, s1182c8f0, ABISELECT(8,4), "S1182C8.s1182c8f0");
    test_class_info(&lv, &cd_S1182C8);
    dp->~S1182C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C8(Test_S1182C8, "S1182C8", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S1182C8C1Ev();
extern void _ZN7S1182C8D2Ev();
Name_Map name_map_S1182C8[] = {
  NSPAIR(_ZN7S1182C8C1Ev),
  NSPAIR(_ZN7S1182C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
static Base_Class bases_S1182C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C8[];
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S1182C8[];
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C8[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C8[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C8[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTT_ENTRY vtt_S1182C8[] = {
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[20]),  20,36},
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[10]),  10,36},
  {&(_ZTV7S1182C8[26]),  26,36},
  {&(_ZTV7S1182C8[34]),  34,36},
  {&(_tg__ZTV7S1182C9__7S1182C8[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C8[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C8[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C8[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C8[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C8[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C8 = {  "S1182C8", // class name
  bases_S1182C8, 22,
  &(vtc_S1182C8[0]), // expected_vtbl_contents
  &(vtt_S1182C8[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S1182C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1182C8),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C8),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C15  : virtual S7856C15 {
  ~S1182C15(); // tgen
  S1182C15(); // tgen
};
//SIG(-1 S1182C15) C1{ VBC2{ m}}


S1182C15 ::~S1182C15(){ note_dtor("S1182C15", this);} // tgen
S1182C15 ::S1182C15(){ note_ctor("S1182C15", this);} // tgen

static void Test_S1182C15()
{
  extern Class_Descriptor cd_S1182C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1182C15, buf);
    S1182C15 *dp, &lv = *(dp=new (buf) S1182C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1182C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C15)");
    check_base_class_offset(lv, (S7856C15*), 0, "S1182C15");
    test_class_info(&lv, &cd_S1182C15);
    dp->~S1182C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C15(Test_S1182C15, "S1182C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S1182C15C1Ev();
extern void _ZN8S1182C15D1Ev();
Name_Map name_map_S1182C15[] = {
  NSPAIR(_ZN8S1182C15C1Ev),
  NSPAIR(_ZN8S1182C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1182C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S1182C15[];
static  VTBL_ENTRY vtc_S1182C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern VTBL_ENTRY _ZTV8S1182C15[];
static  VTT_ENTRY vtt_S1182C15[] = {
  {&(_ZTV8S1182C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
Class_Descriptor cd_S1182C15 = {  "S1182C15", // class name
  bases_S1182C15, 1,
  &(vtc_S1182C15[0]), // expected_vtbl_contents
  &(vtt_S1182C15[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S1182C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S1182C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C15),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  S1182C14  : virtual S1182C5 , virtual S1182C15 , virtual S1182C11 , S7856C12 , virtual S1182C9 {
  int s1182c14f0;
  virtual  ~S1182C14(); // _ZN8S1182C14D2Ev
  S1182C14(); // tgen
};
//SIG(-1 S1182C14) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S1182C14 ::~S1182C14(){ note_dtor("S1182C14", this);}
S1182C14 ::S1182C14(){ note_ctor("S1182C14", this);} // tgen

static void Test_S1182C14()
{
  extern Class_Descriptor cd_S1182C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1182C14, buf);
    S1182C14 *dp, &lv = *(dp=new (buf) S1182C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1182C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C14)");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C14");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(48,28), "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(12,8), "S1182C14");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(12,8), "S1182C14");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), ABISELECT(12,8), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(12,8), "S1182C14");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C14");
    /*is_ambiguous_... S1182C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C14");
    check_base_class_offset(lv, (S1182C15*), 0, "S1182C14");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(24,16), "S1182C14");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C14");
    check_base_class_offset(lv, (S1182C11*), ABISELECT(16,12), "S1182C14");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C14");
    /*is_ambiguous_... S1182C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(48,28), "S1182C14");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C14");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(40,24), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(32,20), "S1182C14");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(32,20), "S1182C14");
    check_field_offset(lv, s1182c14f0, ABISELECT(8,4), "S1182C14.s1182c14f0");
    test_class_info(&lv, &cd_S1182C14);
    dp->~S1182C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C14(Test_S1182C14, "S1182C14", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S1182C14C1Ev();
extern void _ZN8S1182C14D2Ev();
Name_Map name_map_S1182C14[] = {
  NSPAIR(_ZN8S1182C14C1Ev),
  NSPAIR(_ZN8S1182C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
static Base_Class bases_S1182C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C14[];
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C14D1Ev,_ZThn20_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C14D0Ev,_ZThn20_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern VTBL_ENTRY _ZTV8S1182C14[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A1__8S1182C14[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A2__8S1182C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTT_ENTRY vtt_S1182C14[] = {
  {&(_ZTV8S1182C14[10]),  10,32},
  {&(_ZTV8S1182C14[32]),  32,32},
  {&(_ZTV8S1182C14[10]),  10,32},
  {&(_ZTV8S1182C14[16]),  16,32},
  {&(_ZTV8S1182C14[24]),  24,32},
  {&(_ZTV8S1182C14[32]),  32,32},
  {&(_tg__ZTV7S1182C5__8S1182C14[4]),  4,4},
  {&(_tg__ZTV8S1182C15__8S1182C14[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A1__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C14[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A2__8S1182C14[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C14[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C14[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C14D0Ev,_ZThn20_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C14D1Ev,_ZThn20_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C14 = {  "S1182C14", // class name
  bases_S1182C14, 20,
  &(vtc_S1182C14[0]), // expected_vtbl_contents
  &(vtt_S1182C14[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S1182C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C14),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C14),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C16  : virtual S1182C10 , S1182C11 , S1182C3 , S7856C12 {
  virtual  ~S1182C16(); // _ZN8S1182C16D2Ev
  S1182C16(); // tgen
};
//SIG(-1 S1182C16) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S1182C16 ::~S1182C16(){ note_dtor("S1182C16", this);}
S1182C16 ::S1182C16(){ note_ctor("S1182C16", this);} // tgen

static void Test_S1182C16()
{
  extern Class_Descriptor cd_S1182C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1182C16, buf);
    S1182C16 *dp, &lv = *(dp=new (buf) S1182C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1182C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C16)");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(32,16), "S1182C16");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C16");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(33,17), "S1182C16");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(33,17), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(40,20), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(48,24), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(48,24), "S1182C16");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(40,20), "S1182C16");
    check_base_class_offset(lv, (S1182C10*), ABISELECT(24,12), "S1182C16");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), 0, "S1182C16");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(8,4), "S1182C16");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*), 0, "S1182C16");
    check_base_class_offset(lv, (S1182C11*), 0, "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(16,8), "S1182C16");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), ABISELECT(16,8), "S1182C16");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S1182C16");
    test_class_info(&lv, &cd_S1182C16);
    dp->~S1182C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C16(Test_S1182C16, "S1182C16", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S1182C16C1Ev();
extern void _ZN8S1182C16D2Ev();
Name_Map name_map_S1182C16[] = {
  NSPAIR(_ZN8S1182C16C1Ev),
  NSPAIR(_ZN8S1182C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1182C10,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1182C11,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C16[];
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C16D1Ev,_ZThn12_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C16D0Ev,_ZThn12_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C16[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern VTBL_ENTRY _ZTV8S1182C16[];
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C16[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C16[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A__8S1182C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__8S1182C16[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__8S1182C16[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C16[] = {
  {&(_ZTV8S1182C16[8]),  8,32},
  {&(_tg__ZTV8S1182C11__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A__8S1182C16[4]),  4,4},
  {&(_ZTV8S1182C16[24]),  24,32},
  {&(_ZTV8S1182C16[32]),  32,32},
  {&(_ZTV8S1182C16[32]),  32,32},
  {&(_ZTV8S1182C16[16]),  16,32},
  {&(_tg__ZTV8S1182C10__8S1182C16[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__8S1182C16[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C16D0Ev,_ZThn12_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C16D1Ev,_ZThn12_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C16 = {  "S1182C16", // class name
  bases_S1182C16, 19,
  &(vtc_S1182C16[0]), // expected_vtbl_contents
  &(vtt_S1182C16[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S1182C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C16),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C16),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C12  : virtual S1182C8 , virtual S7856C9_nt , virtual S1182C14 , S1182C16 {
  virtual  ~S1182C12(); // _ZN8S1182C12D2Ev
  S1182C12(); // tgen
};
//SIG(-1 S1182C12) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S1182C12 ::~S1182C12(){ note_dtor("S1182C12", this);}
S1182C12 ::S1182C12(){ note_ctor("S1182C12", this);} // tgen

static void Test_S1182C12()
{
  extern Class_Descriptor cd_S1182C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S1182C12, buf);
    S1182C12 *dp, &lv = *(dp=new (buf) S1182C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S1182C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C12)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C12");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C12");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), ABISELECT(57,33), "S1182C12");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(57,33), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(32,16), "S1182C12");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(48,28), "S1182C12");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(48,28), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(72,40), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(64,36), "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(64,36), "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(64,36), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(88,48), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(80,44), "S1182C12");
    /*is_ambiguous_... S1182C12::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(80,44), "S1182C12");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(80,44), "S1182C12");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(80,44), "S1182C12");
    check_base_class_offset(lv, (S1182C8*), ABISELECT(32,16), "S1182C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(96,52), "S1182C12");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(96,52), "S1182C12");
    check_base_class_offset(lv, (S1182C14*), ABISELECT(96,52), "S1182C12");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(8,4), "S1182C12");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C12");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*), 0, "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(16,8), "S1182C12");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(16,8), "S1182C12");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(24,12), "S1182C12");
    check_base_class_offset(lv, (S1182C16*), 0, "S1182C12");
    test_class_info(&lv, &cd_S1182C12);
    dp->~S1182C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C12(Test_S1182C12, "S1182C12", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S1182C12C1Ev();
extern void _ZN8S1182C12D2Ev();
Name_Map name_map_S1182C12[] = {
  NSPAIR(_ZN8S1182C12C1Ev),
  NSPAIR(_ZN8S1182C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static Base_Class bases_S1182C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S1182C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1182C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1182C11,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1182C16,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C12[];
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C12[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C12[];
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C12[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A1__8S1182C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__8S1182C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__8S1182C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C12[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C12[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C12[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C12[] = {
  {&(_ZTV8S1182C12[14]),  14,72},
  {&(_tg__ZTV8S1182C16__8S1182C12[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__8S1182C12[6]),  6,6},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[43]),  43,72},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[33]),  33,72},
  {&(_ZTV8S1182C12[49]),  49,72},
  {&(_ZTV8S1182C12[57]),  57,72},
  {&(_ZTV8S1182C12[70]),  70,72},
  {&(_ZTV8S1182C12[70]),  70,72},
  {&(_ZTV8S1182C12[22]),  22,72},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C12[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C12[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C12[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C12[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C12[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C12[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C12[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C12[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C12[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C12 = {  "S1182C12", // class name
  bases_S1182C12, 36,
  &(vtc_S1182C12[0]), // expected_vtbl_contents
  &(vtt_S1182C12[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S1182C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C12),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C12),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C18  : S7856C9_nt , virtual S7856C24 , S1182C8 , virtual S1182C16 {
  virtual  ~S1182C18(); // _ZN8S1182C18D2Ev
  virtual void  v1(); // _ZN8S1182C182v1Ev
  S1182C18(); // tgen
};
//SIG(-1 S1182C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


 S1182C18 ::~S1182C18(){ note_dtor("S1182C18", this);}
void  S1182C18 ::v1(){vfunc_called(this, "_ZN8S1182C182v1Ev");}
S1182C18 ::S1182C18(){ note_ctor("S1182C18", this);} // tgen

static void Test_S1182C18()
{
  extern Class_Descriptor cd_S1182C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S1182C18, buf);
    S1182C18 *dp, &lv = *(dp=new (buf) S1182C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S1182C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C18)");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(25,17), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C18");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C18");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C18");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), 0, "S1182C18");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), 0, "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), 0, "S1182C18");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(24,16), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(16,12), "S1182C18");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(16,12), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(40,24), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(32,20), "S1182C18");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(32,20), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(56,32), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C18");
    /*is_ambiguous_... S1182C18::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(48,28), "S1182C18");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(48,28), "S1182C18");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(48,28), "S1182C18");
    check_base_class_offset(lv, (S1182C8*), 0, "S1182C18");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(72,40), "S1182C18");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(64,36), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(80,44), "S1182C18");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(80,44), "S1182C18");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(88,48), "S1182C18");
    check_base_class_offset(lv, (S1182C16*), ABISELECT(64,36), "S1182C18");
    test_class_info(&lv, &cd_S1182C18);
    dp->~S1182C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C18(Test_S1182C18, "S1182C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S1182C18C1Ev();
extern void _ZN8S1182C18D2Ev();
Name_Map name_map_S1182C18[] = {
  NSPAIR(_ZN8S1182C18C1Ev),
  NSPAIR(_ZN8S1182C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
static Base_Class bases_S1182C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1182C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    13, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S1182C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1182C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(80,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
    30, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C18[];
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S1182C18D1Ev,_ZThn12_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S1182C18D0Ev,_ZThn12_N8S1182C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn36_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn36_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern VTBL_ENTRY _ZTV8S1182C18[];
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A1__8S1182C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__8S1182C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__8S1182C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__8S1182C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C18[] = {
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C18[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C18[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C18[8]),  8,10},
  {&(_ZTV8S1182C18[22]),  22,55},
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_ZTV8S1182C18[11]),  11,55},
  {&(_ZTV8S1182C18[28]),  28,55},
  {&(_ZTV8S1182C18[36]),  36,55},
  {&(_ZTV8S1182C18[47]),  47,55},
  {&(_ZTV8S1182C18[55]),  55,55},
  {&(_tg__ZTV7S1182C9__8S1182C18[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C18[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C18[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV8S1182C16__8S1182C18[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A4__8S1182C18[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A1__8S1182C18[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__8S1182C18[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__8S1182C18[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__8S1182C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn36_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn36_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1182C18D0Ev,_ZThn12_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1182C18D1Ev,_ZThn12_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C18 = {  "S1182C18", // class name
  bases_S1182C18, 33,
  &(vtc_S1182C18[0]), // expected_vtbl_contents
  &(vtt_S1182C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S1182C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C17  : virtual S1182C12 , S7856C24 , S1182C3 , S1182C18 {
  virtual  ~S1182C17(); // _ZN8S1182C17D2Ev
  S1182C17(); // tgen
};
//SIG(-1 S1182C17) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


 S1182C17 ::~S1182C17(){ note_dtor("S1182C17", this);}
S1182C17 ::S1182C17(){ note_ctor("S1182C17", this);} // tgen

static void Test_S1182C17()
{
  extern Class_Descriptor cd_S1182C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S1182C17, buf);
    S1182C17 *dp, &lv = *(dp=new (buf) S1182C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S1182C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C17)");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(81,49), "S1182C17");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(81,49), "S1182C17");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(56,32), "S1182C17");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(80,48), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(72,44), "S1182C17");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*), ABISELECT(72,44), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(96,56), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(88,52), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(88,52), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*), ABISELECT(88,52), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(112,64), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(104,60), "S1182C17");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*), ABISELECT(104,60), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(104,60), "S1182C17");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(56,32), "S1182C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C17");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(120,68), "S1182C17");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(120,68), "S1182C17");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(120,68), "S1182C17");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(32,20), "S1182C17");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(40,24), "S1182C17");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(40,24), "S1182C17");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(48,28), "S1182C17");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(24,16), "S1182C17");
    check_base_class_offset(lv, (S1182C12*), ABISELECT(24,16), "S1182C17");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(8,4), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), 0, "S1182C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*), ABISELECT(8,4), "S1182C17");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*), ABISELECT(8,4), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(144,80), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(136,76), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(152,84), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(152,84), "S1182C17");
    /*is_ambiguous_... S1182C17::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(160,88), "S1182C17");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*), ABISELECT(136,76), "S1182C17");
    check_base_class_offset(lv, (S1182C18*), ABISELECT(8,4), "S1182C17");
    test_class_info(&lv, &cd_S1182C17);
    dp->~S1182C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C17(Test_S1182C17, "S1182C17", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN8S1182C17C1Ev();
extern void _ZN8S1182C17D2Ev();
Name_Map name_map_S1182C17[] = {
  NSPAIR(_ZN8S1182C17C1Ev),
  NSPAIR(_ZN8S1182C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
static Base_Class bases_S1182C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C3,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_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
    51, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    45, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C17[];
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn72_N8S1182C17D1Ev,_ZThn44_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn72_N8S1182C17D0Ev,_ZThn44_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C17D1Ev,_ZThn60_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C17D0Ev,_ZThn60_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C17D1Ev,_ZThn68_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C17D0Ev,_ZThn68_N8S1182C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn136_N8S1182C17D1Ev,_ZThn76_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn136_N8S1182C17D0Ev,_ZThn76_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C17[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern VTBL_ENTRY _ZTV8S1182C17[];
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C17[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S1182C8D1Ev,_ZThn40_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S1182C8D0Ev,_ZThn40_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S1182C8D1Ev,_ZThn56_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S1182C8D0Ev,_ZThn56_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C18__A1__8S1182C17[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn40_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn40_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C18__8S1182C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C18__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C18__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C18D1Ev,_ZThn56_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C18D0Ev,_ZThn56_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C18__8S1182C17[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C18D1Ev,_ZThn72_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C18D0Ev,_ZThn72_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C18__8S1182C17[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C18__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__8S1182C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__8S1182C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__8S1182C17[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__8S1182C17[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C17[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C17[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C17[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C17[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A2__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C17[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A3__8S1182C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C17[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C17[] = {
  {&(_ZTV8S1182C17[16]),  16,122},
  {&(_tg__ZTV7S1182C3__A__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C18__8S1182C17[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C18__A1__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C18__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C18__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C18__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C18__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C18__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C18__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C18__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C11__8S1182C18__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C18__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C18__8S1182C17[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C18__8S1182C17[6]),  6,6},
  {&(_ZTV8S1182C17[47]),  47,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[76]),  76,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[66]),  66,122},
  {&(_ZTV8S1182C17[82]),  82,122},
  {&(_ZTV8S1182C17[90]),  90,122},
  {&(_ZTV8S1182C17[103]),  103,122},
  {&(_ZTV8S1182C17[103]),  103,122},
  {&(_ZTV8S1182C17[55]),  55,122},
  {&(_ZTV8S1182C17[29]),  29,122},
  {&(_ZTV8S1182C17[114]),  114,122},
  {&(_ZTV8S1182C17[122]),  122,122},
  {&(_tg__ZTV8S1182C12__8S1182C17[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C12__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C17[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C17[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C17[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C17[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C17[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C17[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C17[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C17[3]),  3,3},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A2__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C17[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A3__8S1182C17[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A1__8S1182C17[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C17[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C18D0Ev,_ZThn72_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C18D1Ev,_ZThn72_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C18D0Ev,_ZThn56_N8S1182C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D0Ev,_ZThn40_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C18D1Ev,_ZThn56_N8S1182C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C18D1Ev,_ZThn40_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1182C8D0Ev,_ZThn56_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1182C8D0Ev,_ZThn40_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1182C8D1Ev,_ZThn56_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1182C8D1Ev,_ZThn40_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1182C17D0Ev,_ZThn76_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S1182C17D1Ev,_ZThn76_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C17D0Ev,_ZThn60_N8S1182C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1182C17D0Ev,_ZThn44_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C17D1Ev,_ZThn60_N8S1182C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1182C17D1Ev,_ZThn44_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C17D0Ev,_ZThn68_N8S1182C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C17D1Ev,_ZThn68_N8S1182C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C17 = {  "S1182C17", // class name
  bases_S1182C17, 52,
  &(vtc_S1182C17[0]), // expected_vtbl_contents
  &(vtt_S1182C17[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI8S1182C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C17),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C17),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C2  : S1182C3 , virtual S1182C8 , S1182C12 , virtual S1182C17 {
  char s1182c2f0;
  virtual  ~S1182C2(); // _ZN7S1182C2D2Ev
  S1182C2(); // tgen
};
//SIG(-1 S1182C2) C1{ BC2{ BC3{ m} VBC4{ VBC3 BC5{ m} VBC6{ m}} VBC5} VBC7{ VBC8{ VBC3 VBC5 VBC2 BC6 BC9{ BC5 VBC3 VBC6 BC4 VBC2 vd} vd} VBC10{ BC6 BC5 BC4 Fi} VBC9 vd Fi[2]} BC11{ VBC7 VBC12{ m} VBC13{ VBC4 VBC14{ VBC5} VBC10 BC6 VBC8 vd Fi} BC15{ VBC9 BC10 BC2 BC6 vd} vd} VBC16{ VBC11 BC3 BC2 BC17{ BC12 VBC3 BC7 VBC15 vd v1} vd} vd Fc}


 S1182C2 ::~S1182C2(){ note_dtor("S1182C2", this);}
S1182C2 ::S1182C2(){ note_ctor("S1182C2", this);} // tgen

static void Test_S1182C2()
{
  extern Class_Descriptor cd_S1182C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S1182C2, buf);
    S1182C2 *dp, &lv = *(dp=new (buf) S1182C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S1182C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C2)");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*)(S1182C17*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C2");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C17*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(34,18), "S1182C2");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C17*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(34,18), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(40,20), "S1182C2");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(40,20), "S1182C2");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(56,32), "S1182C2");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(56,32), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(80,44), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(72,40), "S1182C2");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(72,40), "S1182C2");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(72,40), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(96,52), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(88,48), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C8*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(40,20), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C2");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(104,56), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(16,8), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(32,16), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C12*), ABISELECT(8,4), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(152,84), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,88), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,88), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(168,92), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(144,80), "S1182C2");
    check_base_class_offset(lv, (S1182C12*)(S1182C17*), ABISELECT(144,80), "S1182C2");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C17*), ABISELECT(120,64), "S1182C2");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C17*), ABISELECT(120,64), "S1182C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(184,100), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(176,96), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(192,104), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(192,104), "S1182C2");
    /*is_ambiguous_... S1182C2::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(200,108), "S1182C2");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*)(S1182C17*), ABISELECT(176,96), "S1182C2");
    check_base_class_offset(lv, (S1182C18*)(S1182C17*), ABISELECT(128,68), "S1182C2");
    check_base_class_offset(lv, (S1182C17*), ABISELECT(120,64), "S1182C2");
    check_field_offset(lv, s1182c2f0, ABISELECT(33,17), "S1182C2.s1182c2f0");
    test_class_info(&lv, &cd_S1182C2);
    dp->~S1182C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C2(Test_S1182C2, "S1182C2", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN7S1182C2C1Ev();
extern void _ZN7S1182C2D2Ev();
Name_Map name_map_S1182C2[] = {
  NSPAIR(_ZN7S1182C2C1Ev),
  NSPAIR(_ZN7S1182C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
extern Class_Descriptor cd_S1182C17;
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
static Base_Class bases_S1182C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(34,18), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C3,    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
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    8, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(56,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(72,40), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(88,48), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(40,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S1182C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    35, //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
    29, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    42, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(160,88), //bcp->offset
    142, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    47, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(144,80), //bcp->offset
    125, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(128,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
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(128,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
    63, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    57, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    60, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(192,104), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    62, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(176,96), //bcp->offset
    148, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(128,68), //bcp->offset
    111, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S1182C17,    ABISELECT(120,64), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C2[];
extern void _ZN7S1182C2D1Ev();
extern void _ZN7S1182C2D0Ev();
extern void ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S1182C2D1Ev,_ZThn20_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S1182C2D0Ev,_ZThn20_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S1182C2D1Ev,_ZThn32_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S1182C2D0Ev,_ZThn32_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S1182C2D1Ev,_ZThn48_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S1182C2D0Ev,_ZThn48_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S1182C2D1Ev,_ZThn56_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S1182C2D0Ev,_ZThn56_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S1182C2D1Ev,_ZThn64_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S1182C2D0Ev,_ZThn64_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1182C2D1Ev,_ZThn80_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1182C2D0Ev,_ZThn80_N7S1182C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C2[] = {
  ABISELECT(176,96),
  ABISELECT(144,80),
  ABISELECT(120,64),
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&_ZN7S1182C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C2D0Ev,
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-144,-80),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern VTBL_ENTRY _ZTV7S1182C2[];
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__7S1182C2[] = {
  ABISELECT(34,18),
  0,
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A__7S1182C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(26,14),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__7S1182C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(26,14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A2__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A__7S1182C2[] = {
  ABISELECT(10,6),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(10,6),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__7S1182C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C2[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C2[] = {
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C2[] = {
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__7S1182C2[] = {
  ABISELECT(48,24),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__7S1182C2[] = {
  ABISELECT(-70,-38),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C17__A4__7S1182C2[] = {
  ABISELECT(-86,-46),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-86,-46),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C2[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(72,36),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(40,20),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17__7S1182C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17__7S1182C2[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17__7S1182C2[] = {
  ABISELECT(64,32),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(32,16),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17__7S1182C2[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17__7S1182C2[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-94,-50),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-94,-50),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17__7S1182C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-144,-80),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-110,-62),
  ABISELECT(-144,-80),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-110,-62),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(88,48),
  ABISELECT(-22,-14),
  ABISELECT(-56,-32),
  ABISELECT(-16,-12),
  ABISELECT(-56,-32),
  ABISELECT(-22,-14),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A1__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-38,-22),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(56,32),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(-104,-56),
  ABISELECT(-70,-38),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C2[] = {
  ABISELECT(-126,-70),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-126,-70),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-142,-78),
  ABISELECT(-176,-96),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A3__7S1182C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-142,-78),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(88,48),
  ABISELECT(-54,-30),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  ABISELECT(-88,-48),
  ABISELECT(-54,-30),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-6,-2),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-6,-2),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C2[] = {
  0,
  ABISELECT(34,18),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C2[] = {
  ABISELECT(-158,-86),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-158,-86),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTT_ENTRY vtt_S1182C2[] = {
  {&(_ZTV7S1182C2[17]),  17,165},
  {&(_tg__ZTV7S1182C3__A__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A__7S1182C2[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A__7S1182C2[6]),  6,6},
  {&(_ZTV7S1182C2[17]),  17,165},
  {&(_ZTV7S1182C2[52]),  52,165},
  {&(_ZTV7S1182C2[62]),  62,165},
  {&(_ZTV7S1182C2[52]),  52,165},
  {&(_ZTV7S1182C2[68]),  68,165},
  {&(_ZTV7S1182C2[76]),  76,165},
  {&(_ZTV7S1182C2[33]),  33,165},
  {&(_ZTV7S1182C2[89]),  89,165},
  {&(_ZTV7S1182C2[89]),  89,165},
  {&(_ZTV7S1182C2[41]),  41,165},
  {&(_ZTV7S1182C2[109]),  109,165},
  {&(_ZTV7S1182C2[140]),  140,165},
  {&(_ZTV7S1182C2[148]),  148,165},
  {&(_ZTV7S1182C2[122]),  122,165},
  {&(_ZTV7S1182C2[157]),  157,165},
  {&(_ZTV7S1182C2[165]),  165,165},
  {&(_tg__ZTV7S1182C5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C8__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C5__7S1182C8__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C9__7S1182C2[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C2[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C2[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C14__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C2[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C15__7S1182C2[3]),  3,3},
  {&(_tg__ZTV8S1182C17__7S1182C2[16]),  16,18},
  {&(_tg__ZTV7S1182C38S1182C17__A4__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C2[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C2[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C2[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__8S1182C17__7S1182C2[15]),  15,17},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C18__8S1182C17__7S1182C2[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17__7S1182C2[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A1__7S1182C2[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A1__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C2[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C2[6]),  6,6},
  {&(_tg__ZTV8S1182C16__A2__7S1182C2[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A3__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C2[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A2__7S1182C2[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A2__7S1182C2[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C2[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1182C2[];
extern  VTBL_ENTRY _ZTV7S1182C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D0Ev,_ZThn44_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D0Ev,_ZThn28_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C12D1Ev,_ZThn44_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C12D1Ev,_ZThn28_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D0Ev,_ZThn16_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1182C12D1Ev,_ZThn16_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D0Ev,_ZThn44_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1182C16D1Ev,_ZThn44_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1182C2D0Ev,_ZThn80_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1182C2D1Ev,_ZThn80_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S1182C2D0Ev,_ZThn64_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S1182C2D1Ev,_ZThn64_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S1182C2D0Ev,_ZThn48_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S1182C2D0Ev,_ZThn32_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S1182C2D1Ev,_ZThn48_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S1182C2D1Ev,_ZThn32_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1182C2D0Ev,_ZThn56_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S1182C2D0Ev,_ZThn20_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S1182C2D1Ev,_ZThn56_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S1182C2D1Ev,_ZThn20_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C2 = {  "S1182C2", // class name
  bases_S1182C2, 65,
  &(vtc_S1182C2[0]), // expected_vtbl_contents
  &(vtt_S1182C2[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI7S1182C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1182C2),165, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C2),125, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C19  : S1182C5 , S7856C12 {
  short s1182c19f0;
  ~S1182C19(); // tgen
  S1182C19(); // tgen
};
//SIG(-1 S1182C19) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC5 Fs}


S1182C19 ::~S1182C19(){ note_dtor("S1182C19", this);} // tgen
S1182C19 ::S1182C19(){ note_ctor("S1182C19", this);} // tgen

static void Test_S1182C19()
{
  extern Class_Descriptor cd_S1182C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C19, buf);
    S1182C19 *dp, &lv = *(dp=new (buf) S1182C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C19)");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C19");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C19");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*), ABISELECT(10,6), "S1182C19");
    check_base_class_offset(lv, (S1182C5*), 0, "S1182C19");
    /*is_ambiguous_... S1182C19::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C19");
    check_field_offset(lv, s1182c19f0, ABISELECT(8,4), "S1182C19.s1182c19f0");
    test_class_info(&lv, &cd_S1182C19);
    dp->~S1182C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C19(Test_S1182C19, "S1182C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1182C19C1Ev();
extern void _ZN8S1182C19D1Ev();
Name_Map name_map_S1182C19[] = {
  NSPAIR(_ZN8S1182C19C1Ev),
  NSPAIR(_ZN8S1182C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1182C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1182C5,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S1182C19[];
static  VTBL_ENTRY vtc_S1182C19[] = {
  ABISELECT(10,6),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C19[0]),
};
extern VTBL_ENTRY _ZTV8S1182C19[];
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C19[] = {
  ABISELECT(10,6),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTT_ENTRY vtt_S1182C19[] = {
  {&(_ZTV8S1182C19[4]),  4,4},
  {&(_tg__ZTV7S1182C5__8S1182C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1182C19[];
extern  VTBL_ENTRY _ZTV8S1182C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C19[];
Class_Descriptor cd_S1182C19 = {  "S1182C19", // class name
  bases_S1182C19, 5,
  &(vtc_S1182C19[0]), // expected_vtbl_contents
  &(vtt_S1182C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1182C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1182C19),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C19),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  S1182C21  : S7856C15 , S1182C15 {
  virtual  ~S1182C21(); // _ZN8S1182C21D2Ev
  S1182C21(); // tgen
};
//SIG(-1 S1182C21) C1{ BC2{ m} BC3{ VBC2} vd}


 S1182C21 ::~S1182C21(){ note_dtor("S1182C21", this);}
S1182C21 ::S1182C21(){ note_ctor("S1182C21", this);} // tgen

static void Test_S1182C21()
{
  extern Class_Descriptor cd_S1182C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1182C21, buf);
    S1182C21 *dp, &lv = *(dp=new (buf) S1182C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1182C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C21)");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1182C21");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(8,4), "S1182C21");
    check_base_class_offset(lv, (S1182C15*), 0, "S1182C21");
    test_class_info(&lv, &cd_S1182C21);
    dp->~S1182C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C21(Test_S1182C21, "S1182C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1182C21C1Ev();
extern void _ZN8S1182C21D2Ev();
Name_Map name_map_S1182C21[] = {
  NSPAIR(_ZN8S1182C21C1Ev),
  NSPAIR(_ZN8S1182C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
static Base_Class bases_S1182C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C21[];
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY vtc_S1182C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
extern VTBL_ENTRY _ZTV8S1182C21[];
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C21[] = {
  {&(_ZTV8S1182C21[3]),  3,5},
  {&(_tg__ZTV8S1182C15__8S1182C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
Class_Descriptor cd_S1182C21 = {  "S1182C21", // class name
  bases_S1182C21, 3,
  &(vtc_S1182C21[0]), // expected_vtbl_contents
  &(vtt_S1182C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1182C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1182C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C21),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  S1182C22  : S1182C15 , virtual S7856C12 , S1182C12 , S1182C21 {
  virtual  ~S1182C22(); // _ZN8S1182C22D2Ev
  S1182C22(); // tgen
};
//SIG(-1 S1182C22) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


 S1182C22 ::~S1182C22(){ note_dtor("S1182C22", this);}
S1182C22 ::S1182C22(){ note_ctor("S1182C22", this);} // tgen

static void Test_S1182C22()
{
  extern Class_Descriptor cd_S1182C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S1182C22, buf);
    S1182C22 *dp, &lv = *(dp=new (buf) S1182C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S1182C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C22)");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C22");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C14::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(48,24), "S1182C22");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(72,40), "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(64,36), "S1182C22");
    check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(64,36), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(88,48), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(80,44), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(80,44), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(80,44), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(104,56), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(96,52), "S1182C22");
    /*is_ambiguous_... S1182C22::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(96,52), "S1182C22");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(96,52), "S1182C22");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(96,52), "S1182C22");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(48,24), "S1182C22");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), 0, "S1182C22");
    check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(112,60), "S1182C22");
    /*is_ambiguous_... S1182C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(112,60), "S1182C22");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(112,60), "S1182C22");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(16,8), "S1182C22");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C22");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(24,12), "S1182C22");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(32,16), "S1182C22");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(8,4), "S1182C22");
    check_base_class_offset(lv, (S1182C12*), ABISELECT(8,4), "S1182C22");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(40,20), "S1182C22");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(40,20), "S1182C22");
    check_base_class_offset(lv, (S1182C21*), ABISELECT(40,20), "S1182C22");
    test_class_info(&lv, &cd_S1182C22);
    dp->~S1182C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C22(Test_S1182C22, "S1182C22", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S1182C22C1Ev();
extern void _ZN8S1182C22D2Ev();
Name_Map name_map_S1182C22[] = {
  NSPAIR(_ZN8S1182C22C1Ev),
  NSPAIR(_ZN8S1182C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
static Base_Class bases_S1182C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1182C15,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S1182C15,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    34, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    40, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C22[];
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C22D1Ev,_ZThn24_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C22D0Ev,_ZThn24_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1182C22D1Ev,_ZThn36_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1182C22D0Ev,_ZThn36_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C22[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C22[];
static  VTBL_ENTRY _tg__ZTV8S1182C15__A__8S1182C22[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C22[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn88_N8S1182C16D1Ev,_ZThn48_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn88_N8S1182C16D0Ev,_ZThn48_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C12D1Ev,_ZThn20_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C12D0Ev,_ZThn20_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__8S1182C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C12D1Ev,_ZThn32_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C12D0Ev,_ZThn32_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__8S1182C22[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__8S1182C22[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__8S1182C22[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C22[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C22[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__A2__8S1182C22[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C22[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C22[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C22[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C22[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C22[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C22[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C22[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__A1__8S1182C22[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C22[] = {
  {&(_ZTV8S1182C22[14]),  14,93},
  {&(_tg__ZTV8S1182C15__A__8S1182C22[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C22[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A4__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C12__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__8S1182C22[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__8S1182C22[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C22[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__A2__8S1182C22[3]),  3,3},
  {&(_ZTV8S1182C22[30]),  30,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[64]),  64,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[54]),  54,93},
  {&(_ZTV8S1182C22[70]),  70,93},
  {&(_ZTV8S1182C22[78]),  78,93},
  {&(_ZTV8S1182C22[91]),  91,93},
  {&(_ZTV8S1182C22[91]),  91,93},
  {&(_ZTV8S1182C22[38]),  38,93},
  {&(_ZTV8S1182C22[41]),  41,93},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C22[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C22[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C22[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C22[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C22[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C22[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C22[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C22[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C22[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C22[6]),  6,6},
  {&(_tg__ZTV8S1182C15__A1__8S1182C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C12D0Ev,_ZThn32_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C12D1Ev,_ZThn32_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1182C12D0Ev,_ZThn20_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1182C12D1Ev,_ZThn20_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C16D0Ev,_ZThn48_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1182C16D1Ev,_ZThn48_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C22D0Ev,_ZThn36_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1182C22D1Ev,_ZThn36_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C22D0Ev,_ZThn24_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C22D1Ev,_ZThn24_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C22 = {  "S1182C22", // class name
  bases_S1182C22, 41,
  &(vtc_S1182C22[0]), // expected_vtbl_contents
  &(vtt_S1182C22[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S1182C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1182C22),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C22),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C20  : virtual S1182C21 , virtual S1182C9 , S1182C22 , S1182C16 , S1182C14 {
  virtual  ~S1182C20(); // _ZN8S1182C20D2Ev
  S1182C20(); // tgen
};
//SIG(-1 S1182C20) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


 S1182C20 ::~S1182C20(){ note_dtor("S1182C20", this);}
S1182C20 ::S1182C20(){ note_ctor("S1182C20", this);} // tgen

static void Test_S1182C20()
{
  extern Class_Descriptor cd_S1182C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S1182C20, buf);
    S1182C20 *dp, &lv = *(dp=new (buf) S1182C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S1182C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C20)");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), 0, "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), 0, "S1182C20");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), 0, "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C21*), ABISELECT(96,48), "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C20");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C20");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(120,60), "S1182C20");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(112,56), "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C9*), ABISELECT(104,52), "S1182C20");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(104,52), "S1182C20");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(144,76), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(136,72), "S1182C20");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(136,72), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(160,84), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(152,80), "S1182C20");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(152,80), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(152,80), "S1182C20");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C22*), ABISELECT(120,60), "S1182C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(168,88), "S1182C20");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C22*), ABISELECT(168,88), "S1182C20");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(16,8), "S1182C20");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(24,12), "S1182C20");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(24,12), "S1182C20");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(32,16), "S1182C20");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    check_base_class_offset(lv, (S1182C12*)(S1182C22*), ABISELECT(8,4), "S1182C20");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C21*)(S1182C22*), ABISELECT(40,20), "S1182C20");
    check_base_class_offset(lv, (S1182C22*), 0, "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(56,28), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(64,32), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(64,32), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(72,36), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C16*), ABISELECT(48,24), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(80,40), "S1182C20");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C14*), ABISELECT(80,40), "S1182C20");
    test_class_info(&lv, &cd_S1182C20);
    dp->~S1182C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C20(Test_S1182C20, "S1182C20", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S1182C20C1Ev();
extern void _ZN8S1182C20D2Ev();
Name_Map name_map_S1182C20[] = {
  NSPAIR(_ZN8S1182C20C1Ev),
  NSPAIR(_ZN8S1182C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C22;
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
static Base_Class bases_S1182C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1182C3,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1182C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,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
    24, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(168,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
    30, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    34, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    37, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    43, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(40,20), //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
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1182C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    48, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1182C20[];
extern void _ZN8S1182C20D1Ev();
extern void _ZN8S1182C20D0Ev();
extern void ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C20D1Ev,_ZThn48_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C20D0Ev,_ZThn48_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C20D1Ev,_ZThn52_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C20D0Ev,_ZThn52_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C20D1Ev,_ZThn60_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C20D0Ev,_ZThn60_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C20D1Ev,_ZThn80_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C20D0Ev,_ZThn80_N8S1182C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C20D1Ev,_ZThn88_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C20D0Ev,_ZThn88_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C20[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&_ZN8S1182C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C20D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S1182C20[];
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C22__8S1182C20[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C22__A1__8S1182C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C22__A4__8S1182C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S1182C16D1Ev,_ZThn76_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S1182C16D0Ev,_ZThn76_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S1182C12D1Ev,_ZThn76_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S1182C12D0Ev,_ZThn76_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn84_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn84_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C22__A1__8S1182C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C218S1182C22__A3__8S1182C20[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C22__8S1182C20[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C22__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C22__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C22__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C22D1Ev,_ZThn80_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C22D0Ev,_ZThn80_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C22__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C22D1Ev,_ZThn88_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C22D0Ev,_ZThn88_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C22__8S1182C20[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C22__8S1182C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A2__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A2__8S1182C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A2__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C16D1Ev,_ZThn56_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C16D0Ev,_ZThn56_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C20[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__A__8S1182C20[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C14D1Ev,_ZThn12_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C14D0Ev,_ZThn12_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__A__8S1182C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C20[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__8S1182C20[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C20[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C20[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C20[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__8S1182C20[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S1182C8D1Ev,_ZThn20_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S1182C8D0Ev,_ZThn20_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__8S1182C20[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__8S1182C20[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__8S1182C20[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__8S1182C20[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__8S1182C20[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__A2__8S1182C20[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C20[] = {
  {&(_ZTV8S1182C20[15]),  15,128},
  {&(_tg__ZTV8S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV8S1182C158S1182C22__A1__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C128S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C128S1182C22__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C22__A4__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C128S1182C22__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C128S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C22__A1__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C218S1182C22__A3__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C22__8S1182C20[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C8__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C22__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C22__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C22__8S1182C20[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C22__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C22__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C16__A1__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A5__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A2__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A1__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__A__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C15__8S1182C14__A__8S1182C20[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C14__A__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__A__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__A__8S1182C20[6]),  6,6},
  {&(_ZTV8S1182C20[76]),  76,128},
  {&(_ZTV8S1182C20[86]),  86,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[31]),  31,128},
  {&(_ZTV8S1182C20[99]),  99,128},
  {&(_ZTV8S1182C20[105]),  105,128},
  {&(_ZTV8S1182C20[113]),  113,128},
  {&(_ZTV8S1182C20[126]),  126,128},
  {&(_ZTV8S1182C20[126]),  126,128},
  {&(_ZTV8S1182C20[39]),  39,128},
  {&(_ZTV8S1182C20[42]),  42,128},
  {&(_ZTV8S1182C20[52]),  52,128},
  {&(_ZTV8S1182C20[60]),  60,128},
  {&(_ZTV8S1182C20[70]),  70,128},
  {&(_tg__ZTV8S1182C21__8S1182C20[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__8S1182C20[3]),  3,3},
  {&(_tg__ZTV7S1182C9__8S1182C20[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__8S1182C20[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__7S1182C9__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C8__8S1182C20[10]),  10,12},
  {&(_tg__ZTV8S1182C11__7S1182C8__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__8S1182C20[8]),  8,10},
  {&(_tg__ZTV8S1182C11__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__8S1182C20[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C20[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C20[10]),  10,12},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C14__8S1182C20[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__8S1182C20[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__8S1182C20[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__8S1182C20[6]),  6,6},
  {&(_tg__ZTV8S1182C15__A2__8S1182C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1182C20[];
extern  VTBL_ENTRY _ZTV8S1182C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C20[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1182C8D0Ev,_ZThn20_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1182C8D1Ev,_ZThn20_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C14D0Ev,_ZThn12_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C14D1Ev,_ZThn12_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C22D0Ev,_ZThn80_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C22D0Ev,_ZThn52_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C22D1Ev,_ZThn80_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C22D1Ev,_ZThn52_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C22D0Ev,_ZThn88_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C22D0Ev,_ZThn60_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C22D1Ev,_ZThn88_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C22D1Ev,_ZThn60_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C12D0Ev,_ZThn76_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D0Ev,_ZThn48_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C12D1Ev,_ZThn76_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C12D1Ev,_ZThn48_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn84_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C12D0Ev,_ZThn56_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn84_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C12D1Ev,_ZThn56_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C16D0Ev,_ZThn56_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C16D0Ev,_ZThn76_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C16D1Ev,_ZThn56_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S1182C16D1Ev,_ZThn76_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C20D0Ev,_ZThn88_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C20D0Ev,_ZThn60_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C20D1Ev,_ZThn88_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C20D1Ev,_ZThn60_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C20D0Ev,_ZThn80_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C20D0Ev,_ZThn52_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C20D1Ev,_ZThn80_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C20D1Ev,_ZThn52_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C20D0Ev,_ZThn48_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1182C20D1Ev,_ZThn48_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C20 = {  "S1182C20", // class name
  bases_S1182C20, 56,
  &(vtc_S1182C20[0]), // expected_vtbl_contents
  &(vtt_S1182C20[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S1182C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1182C20),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1182C20),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1182C1  : S1182C2 , S7856C9_nt , S1182C19 , S1182C20 , S1182C5 {
  ~S1182C1(); // tgen
  S1182C1(); // tgen
};
//SIG(1 S1182C1) C1{ BC2{ BC3{ BC4{ m} VBC5{ VBC4 BC6{ m} VBC7{ m}} VBC6} VBC8{ VBC9{ VBC4 VBC6 VBC3 BC7 BC10{ BC6 VBC4 VBC7 BC5 VBC3 vd} vd} VBC11{ BC7 BC6 BC5 Fi} VBC10 vd Fi[2]} BC12{ VBC8 VBC13{ m} VBC14{ VBC5 VBC15{ VBC6} VBC11 BC7 VBC9 vd Fi} BC16{ VBC10 BC11 BC3 BC7 vd} vd} VBC17{ VBC12 BC4 BC3 BC18{ BC13 VBC4 BC8 VBC16 vd v1} vd} vd Fc} BC13 BC19{ BC5 BC7 Fs} BC20{ VBC21{ BC6 BC15 vd} VBC9 BC22{ BC15 VBC7 BC12 BC21 vd} BC16 BC14 vd} BC5}


S1182C1 ::~S1182C1(){ note_dtor("S1182C1", this);} // tgen
S1182C1 ::S1182C1(){ note_ctor("S1182C1", this);} // tgen

static void Test_S1182C1()
{
  extern Class_Descriptor cd_S1182C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,46)];
    init_test(&cd_S1182C1, buf);
    S1182C1 *dp, &lv = *(dp=new (buf) S1182C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,180), "sizeof(S1182C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1182C1)");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C10*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C10*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C18*)(S1182C17*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C19*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C5*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C10*)(S1182C9*), 0, "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*)(S1182C9*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C10*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C10*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C19*), 0, "S1182C1");
    /*is_ambiguous_... S1182C22::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C5*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*), 0, "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C17*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*), 0, "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C3*)(S1182C16*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C14*)(S1182C20*), 0, "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C9*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C17*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(160,80), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C3*)(S1182C9*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C3*)(S1182C10*)(S1182C9*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C10*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*)(S1182C9*), ABISELECT(192,100), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C10::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C10*)(S1182C9*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C8*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C9*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(184,96), "S1182C1");
    check_base_class_offset(lv, (S1182C9*)(S1182C20*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C9*)(S1182C14*)(S1182C20*), ABISELECT(184,96), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*), ABISELECT(208,108), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C11 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C8*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*), ABISELECT(200,104), "S1182C1");
    check_base_class_offset(lv, (S1182C11*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C14*)(S1182C20*), ABISELECT(200,104), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C10*), ABISELECT(224,116), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C10*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C10*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C8::S1182C10 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*), ABISELECT(216,112), "S1182C1");
    check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C10*)(S1182C16*)(S1182C20*), ABISELECT(216,112), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C8 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C2*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C2*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C8*)(S1182C12*), ABISELECT(168,84), "S1182C1");
    check_base_class_offset(lv, (S1182C8*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(168,84), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C2*), ABISELECT(225,117), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*), ABISELECT(225,117), "S1182C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(225,117), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C14*)(S1182C20*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C2*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C12*), ABISELECT(232,120), "S1182C1");
    check_base_class_offset(lv, (S1182C14*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(232,120), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(16,8), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(24,12), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(24,12), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(32,16), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C2::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C12*)(S1182C2*), ABISELECT(8,4), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(280,148), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(288,152), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*), ABISELECT(288,152), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*), ABISELECT(296,156), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C12 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C12*), ABISELECT(272,144), "S1182C1");
    check_base_class_offset(lv, (S1182C12*)(S1182C17*), ABISELECT(272,144), "S1182C1");
    /*is_ambiguous_... S1182C17::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C17*), ABISELECT(248,128), "S1182C1");
    /*is_ambiguous_... S1182C17::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C17*), ABISELECT(248,128), "S1182C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    check_base_class_offset(lv, (S1182C8*)(S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*), ABISELECT(312,164), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*), ABISELECT(304,160), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*), ABISELECT(320,168), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*), ABISELECT(320,168), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*), ABISELECT(328,172), "S1182C1");
    check_base_class_offset(lv, (S1182C16*)(S1182C18*)(S1182C17*), ABISELECT(304,160), "S1182C1");
    check_base_class_offset(lv, (S1182C18*)(S1182C17*), ABISELECT(256,132), "S1182C1");
    check_base_class_offset(lv, (S1182C17*)(S1182C2*), ABISELECT(248,128), "S1182C1");
    check_base_class_offset(lv, (S1182C2*), 0, "S1182C1");
    /*is_ambiguous_... S1182C1::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    check_base_class_offset(lv, (S1182C5*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    /*is_ambiguous_... S1182C19::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C19*), ABISELECT(40,20), "S1182C1");
    check_base_class_offset(lv, (S1182C19*), ABISELECT(40,20), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C21*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C21 */ AMB_check_base_class_offset(lv, (S1182C21*)(S1182C20*), ABISELECT(336,176), "S1182C1");
    /*is_ambiguous_... S1182C22::S1182C15 */ AMB_check_base_class_offset(lv, (S1182C15*)(S1182C22*)(S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(72,36), "S1182C1");
    check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(80,40), "S1182C1");
    /*is_ambiguous_... S1182C16::S1182C3 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(80,40), "S1182C1");
    /*is_ambiguous_... S1182C16::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(88,44), "S1182C1");
    check_base_class_offset(lv, (S1182C16*)(S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    check_base_class_offset(lv, (S1182C12*)(S1182C22*)(S1182C20*), ABISELECT(64,32), "S1182C1");
    /*is_ambiguous_... S1182C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C15*)(S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C21*)(S1182C22*)(S1182C20*), ABISELECT(96,48), "S1182C1");
    check_base_class_offset(lv, (S1182C22*)(S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(112,56), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C5*)(S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C11*)(S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(120,60), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C3*)(S1182C16*)(S1182C20*), ABISELECT(120,60), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C16*)(S1182C20*), ABISELECT(128,64), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C16 */ AMB_check_base_class_offset(lv, (S1182C16*)(S1182C20*), ABISELECT(104,52), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1182C14*)(S1182C20*), ABISELECT(136,68), "S1182C1");
    /*is_ambiguous_... S1182C20::S1182C14 */ AMB_check_base_class_offset(lv, (S1182C14*)(S1182C20*), ABISELECT(136,68), "S1182C1");
    check_base_class_offset(lv, (S1182C20*), ABISELECT(56,28), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1182C5*), ABISELECT(152,76), "S1182C1");
    /*is_ambiguous_... S1182C1::S1182C5 */ AMB_check_base_class_offset(lv, (S1182C5*), ABISELECT(152,76), "S1182C1");
    test_class_info(&lv, &cd_S1182C1);
    dp->~S1182C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1182C1(Test_S1182C1, "S1182C1", ABISELECT(344,180));

#else // __cplusplus

extern void _ZN7S1182C1C1Ev();
extern void _ZN7S1182C1D1Ev();
Name_Map name_map_S1182C1[] = {
  NSPAIR(_ZN7S1182C1C1Ev),
  NSPAIR(_ZN7S1182C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C9;
extern VTBL_ENTRY _ZTI7S1182C9[];
extern  VTBL_ENTRY _ZTV7S1182C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C10;
extern VTBL_ENTRY _ZTI8S1182C10[];
extern  VTBL_ENTRY _ZTV8S1182C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C10[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1182C8;
extern VTBL_ENTRY _ZTI7S1182C8[];
extern  VTBL_ENTRY _ZTV7S1182C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C18;
extern VTBL_ENTRY _ZTI8S1182C18[];
extern  VTBL_ENTRY _ZTV8S1182C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C18[];
extern Class_Descriptor cd_S1182C17;
extern VTBL_ENTRY _ZTI8S1182C17[];
extern  VTBL_ENTRY _ZTV8S1182C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C17[];
extern Class_Descriptor cd_S1182C2;
extern VTBL_ENTRY _ZTI7S1182C2[];
extern  VTBL_ENTRY _ZTV7S1182C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C2[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C19;
extern VTBL_ENTRY _ZTI8S1182C19[];
extern  VTBL_ENTRY _ZTV8S1182C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C19[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S1182C12;
extern VTBL_ENTRY _ZTI8S1182C12[];
extern  VTBL_ENTRY _ZTV8S1182C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C15;
extern VTBL_ENTRY _ZTI8S1182C15[];
extern  VTBL_ENTRY _ZTV8S1182C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C15[];
extern Class_Descriptor cd_S1182C21;
extern VTBL_ENTRY _ZTI8S1182C21[];
extern  VTBL_ENTRY _ZTV8S1182C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C21[];
extern Class_Descriptor cd_S1182C22;
extern VTBL_ENTRY _ZTI8S1182C22[];
extern  VTBL_ENTRY _ZTV8S1182C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C22[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
extern Class_Descriptor cd_S1182C11;
extern VTBL_ENTRY _ZTI8S1182C11[];
extern  VTBL_ENTRY _ZTV8S1182C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1182C3;
extern VTBL_ENTRY _ZTI7S1182C3[];
extern  VTBL_ENTRY _ZTV7S1182C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C16;
extern VTBL_ENTRY _ZTI8S1182C16[];
extern  VTBL_ENTRY _ZTV8S1182C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1182C14;
extern VTBL_ENTRY _ZTI8S1182C14[];
extern  VTBL_ENTRY _ZTV8S1182C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C14[];
extern Class_Descriptor cd_S1182C20;
extern VTBL_ENTRY _ZTI8S1182C20[];
extern  VTBL_ENTRY _ZTV8S1182C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1182C20[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1182C5;
extern VTBL_ENTRY _ZTI7S1182C5[];
extern  VTBL_ENTRY _ZTV7S1182C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C5[];
static Base_Class bases_S1182C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(160,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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1182C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1182C3,    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
    28, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(168,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
    8, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(184,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
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(192,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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,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
    12, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S1182C9,    ABISELECT(184,96), //bcp->offset
    135, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(208,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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(200,104), //bcp->offset
    145, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(216,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
    22, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S1182C10,    ABISELECT(216,112), //bcp->offset
    149, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S1182C8,    ABISELECT(168,84), //bcp->offset
    122, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(225,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
    38, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(232,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(232,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
    28, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(232,120), //bcp->offset
    159, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(24,12), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(272,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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(280,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
    43, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(272,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
    42, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(288,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
    45, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(288,152), //bcp->offset
    223, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    47, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(272,144), //bcp->offset
    206, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(256,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
    64, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(248,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
    51, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(256,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
    63, //immediately_derived
  0, 0},
  {&cd_S1182C8,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    58, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    57, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(304,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(320,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
    60, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(320,168), //bcp->offset
    240, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    123, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    62, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(304,160), //bcp->offset
    229, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    122, //bcp->index_in_construction_vtbl_array
    212, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S1182C18,    ABISELECT(256,132), //bcp->offset
    192, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S1182C17,    ABISELECT(248,128), //bcp->offset
    172, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S1182C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    68, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    70, //immediately_derived
  0, 0},
  {&cd_S1182C19,    ABISELECT(40,20), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    124, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    73, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(336,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    222, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(336,176), //bcp->offset
    246, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    126, //bcp->index_in_construction_vtbl_array
    221, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    100, //immediately_derived
  0, 1},
  {&cd_S1182C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(80,40), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    128, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    83, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S1182C12,    ABISELECT(64,32), //bcp->offset
    63, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    127, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    87, //immediately_derived
  0, 0},
  {&cd_S1182C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S1182C21,    ABISELECT(96,48), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    129, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S1182C22,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    92, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S1182C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S1182C3,    ABISELECT(120,60), //bcp->offset
    100, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    131, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    97, //immediately_derived
  0, 0},
  {&cd_S1182C16,    ABISELECT(104,52), //bcp->offset
    90, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    130, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    99, //immediately_derived
  0, 0},
  {&cd_S1182C14,    ABISELECT(136,68), //bcp->offset
    106, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    132, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S1182C20,    ABISELECT(56,28), //bcp->offset
    46, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    125, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    102, //immediately_derived
  0, 0},
  {&cd_S1182C5,    ABISELECT(152,76), //bcp->offset
    118, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    133, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1182C1[];
extern void _ZN7S1182C1D1Ev();
extern void _ZN7S1182C1D0Ev();
extern void ABISELECT(_ZThn8_N7S1182C1D1Ev,_ZThn4_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C1D0Ev,_ZThn4_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S1182C1D1Ev,_ZThn28_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S1182C1D0Ev,_ZThn28_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S1182C1D1Ev,_ZThn32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S1182C1D0Ev,_ZThn32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S1182C1D1Ev,_ZThn48_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S1182C1D0Ev,_ZThn48_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S1182C1D1Ev,_ZThn52_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S1182C1D0Ev,_ZThn52_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S1182C1D1Ev,_ZThn68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S1182C1D0Ev,_ZThn68_N7S1182C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S1182C1D1Ev,_ZThn84_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S1182C1D0Ev,_ZThn84_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S1182C1D1Ev,_ZThn96_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S1182C1D0Ev,_ZThn96_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S1182C1D1Ev,_ZThn112_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S1182C1D0Ev,_ZThn112_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S1182C1D1Ev,_ZThn120_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S1182C1D0Ev,_ZThn120_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S1182C1D1Ev,_ZThn128_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S1182C1D0Ev,_ZThn128_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n136_N7S1182C1D1Ev,_ZTvn4_n68_N7S1182C1D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C1D0Ev,_ZTvn4_n68_N7S1182C1D0Ev)();
extern void _ZN8S1182C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S1182C1D1Ev,_ZThn144_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S1182C1D0Ev,_ZThn144_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S1182C1D1Ev,_ZThn160_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S1182C1D0Ev,_ZThn160_N7S1182C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S1182C1D1Ev,_ZThn176_N7S1182C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S1182C1D0Ev,_ZThn176_N7S1182C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1182C1[] = {
  ABISELECT(336,176),
  ABISELECT(304,160),
  ABISELECT(272,144),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(232,120),
  ABISELECT(225,117),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(168,84),
  ABISELECT(184,96),
  ABISELECT(168,84),
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&_ZN7S1182C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C1D0Ev,
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C1D1Ev,_ZThn4_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C1D0Ev,_ZThn4_N7S1182C1D0Ev),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(280,148),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S1182C1D1Ev,_ZThn28_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S1182C1D0Ev,_ZThn28_N7S1182C1D0Ev),
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1182C1D1Ev,_ZThn32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1182C1D0Ev,_ZThn32_N7S1182C1D0Ev),
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(64,32),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S1182C1D1Ev,_ZThn48_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N7S1182C1D0Ev,_ZThn48_N7S1182C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S1182C1D1Ev,_ZThn52_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S1182C1D0Ev,_ZThn52_N7S1182C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1182C1D1Ev,_ZThn68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S1182C1D0Ev,_ZThn68_N7S1182C1D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(8,4),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev),
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev),
  ABISELECT(-232,-120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-248,-128),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev),
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C1D1Ev,_ZTvn4_n68_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C1D0Ev,_ZTvn4_n68_N7S1182C1D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
  ABISELECT(-272,-144),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  ABISELECT(-336,-176),
  ABISELECT(-176,-96),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI7S1182C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1182C1[];
extern void _ZN7S1182C2D1Ev();
extern void _ZN7S1182C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C2__7S1182C1[] = {
  ABISELECT(304,160),
  ABISELECT(272,144),
  ABISELECT(248,128),
  ABISELECT(232,120),
  ABISELECT(232,120),
  ABISELECT(225,117),
  ABISELECT(216,112),
  ABISELECT(200,104),
  ABISELECT(168,84),
  ABISELECT(184,96),
  ABISELECT(168,84),
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&_ZN7S1182C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C37S1182C2__7S1182C1[] = {
  ABISELECT(160,80),
  0,
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C127S1182C2__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C127S1182C2__A4__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S1182C16D1Ev,_ZThn108_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S1182C16D0Ev,_ZThn108_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-208,-108),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C12D1Ev,_ZThn92_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C12D0Ev,_ZThn92_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C127S1182C2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S1182C12D1Ev,_ZThn108_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S1182C12D0Ev,_ZThn108_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-208,-108),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S1182C12D1Ev,_ZThn116_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S1182C12D0Ev,_ZThn116_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(-224,-116),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C127S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S1182C2D1Ev,_ZThn84_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S1182C2D0Ev,_ZThn84_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C2__7S1182C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C2__7S1182C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn216_N7S1182C2D1Ev,_ZThn112_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn216_N7S1182C2D0Ev,_ZThn112_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C2__7S1182C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A__7S1182C2__7S1182C1[] = {
  ABISELECT(224,116),
  ABISELECT(224,116),
  ABISELECT(217,113),
  ABISELECT(192,100),
  ABISELECT(176,92),
  ABISELECT(160,80),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  ABISELECT(160,80),
  ABISELECT(208,108),
  ABISELECT(-8,-4),
  ABISELECT(152,76),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D1Ev,_ZThn4_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S1182C2D0Ev,_ZThn4_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn232_N7S1182C2D1Ev,_ZThn120_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn232_N7S1182C2D0Ev,_ZThn120_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C2__7S1182C1[] = {
  ABISELECT(-232,-120),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2__7S1182C1[] = {
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(136,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S1182C2D1Ev,_ZThn128_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S1182C2D0Ev,_ZThn128_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C2__7S1182C1[] = {
  ABISELECT(8,4),
  ABISELECT(-248,-128),
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S1182C2D1Ev,_ZThn144_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S1182C2D0Ev,_ZThn144_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C2__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev)();
extern void ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C2__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D1Ev,_ZTvn4_n68_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n136_N7S1182C2D0Ev,_ZTvn4_n68_N7S1182C2D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S1182C2D1Ev,_ZThn160_N7S1182C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S1182C2D0Ev,_ZThn160_N7S1182C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C2__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C2__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI7S1182C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C19__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C19[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C19__A7__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C20D1Ev();
extern void _ZN8S1182C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C20__7S1182C1[] = {
  ABISELECT(280,148),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&_ZN8S1182C20D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C20D0Ev,
};
extern void _ZN8S1182C22D1Ev();
extern void _ZN8S1182C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(169,89),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(-56,-28),
  ABISELECT(112,56),
  ABISELECT(104,52),
  ABISELECT(128,68),
  ABISELECT(112,56),
  ABISELECT(-56,-28),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&_ZN8S1182C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C128S1182C228S1182C20__A4__7S1182C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C228S1182C20__A8__7S1182C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C16D1Ev,_ZThn80_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C16D0Ev,_ZThn80_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S1182C12D1Ev,_ZThn64_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S1182C12D0Ev,_ZThn64_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S1182C12D1Ev,_ZThn88_N8S1182C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S1182C12D0Ev,_ZThn88_N8S1182C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C228S1182C20__A1__7S1182C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C218S1182C228S1182C20__A3__7S1182C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D1Ev,_ZThn4_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C22D0Ev,_ZThn4_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn56_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn56_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C22D1Ev,_ZThn68_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C22D0Ev,_ZThn68_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C228S1182C20__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C22D1Ev,_ZThn84_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C22D0Ev,_ZThn84_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C22D1Ev,_ZThn92_N8S1182C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C22D0Ev,_ZThn92_N8S1182C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C228S1182C20__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D1Ev,_ZThn20_N8S1182C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C22D0Ev,_ZThn20_N8S1182C22D0Ev),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C20__A5__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C20__A9__7S1182C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C20__A7__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C20__A7__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C16D1Ev,_ZThn60_N8S1182C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C16D0Ev,_ZThn60_N8S1182C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C20__A4__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C20__A4__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C148S1182C20__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(136,68),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C14D1Ev,_ZThn28_N8S1182C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C14D0Ev,_ZThn28_N8S1182C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C148S1182C20__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn280_N8S1182C20D1Ev,_ZThn148_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn280_N8S1182C20D0Ev,_ZThn148_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C21__8S1182C20__7S1182C1[] = {
  ABISELECT(-280,-148),
  ABISELECT(-176,-96),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn128_N8S1182C20D1Ev,_ZThn68_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn128_N8S1182C20D0Ev,_ZThn68_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C20__7S1182C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn112_N8S1182C20D1Ev,_ZThn56_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn112_N8S1182C20D0Ev,_ZThn56_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C20__7S1182C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C20__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C128S1182C22__8S1182C20__7S1182C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(161,85),
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(-64,-32),
  ABISELECT(104,52),
  ABISELECT(152,80),
  ABISELECT(-64,-32),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D1Ev,_ZThn4_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C20D0Ev,_ZThn4_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C20__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn160_N8S1182C20D1Ev,_ZThn84_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn160_N8S1182C20D0Ev,_ZThn84_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn176_N8S1182C20D1Ev,_ZThn92_N8S1182C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev)();
extern void ABISELECT(_ZThn176_N8S1182C20D0Ev,_ZThn92_N8S1182C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C20__7S1182C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(80,40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(80,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C218S1182C22__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D1Ev,_ZThn20_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1182C20D0Ev,_ZThn20_N8S1182C20D0Ev),
};
extern void ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C20__7S1182C1[] = {
  ABISELECT(56,28),
  ABISELECT(-104,-52),
  ABISELECT(64,32),
  ABISELECT(112,60),
  ABISELECT(-104,-52),
  ABISELECT(56,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D1Ev,_ZThn24_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S1182C20D0Ev,_ZThn24_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A2__8S1182C20__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(40,20),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
};
extern void ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev)();
extern void ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__A__8S1182C20__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-136,-68),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D1Ev,_ZThn40_N8S1182C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S1182C20D0Ev,_ZThn40_N8S1182C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A__7S1182C1[] = {
  ABISELECT(-152,-76),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C8__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C8__7S1182C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C8__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C8__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C8__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void _ZN7S1182C9D1Ev();
extern void _ZN7S1182C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
  (VTBL_ENTRY)&_ZN7S1182C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C9D0Ev,
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C107S1182C9__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C9__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C9__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S1182C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C3__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(168,84),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C11__A2__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
extern void _ZN8S1182C10D1Ev();
extern void _ZN8S1182C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
  (VTBL_ENTRY)&_ZN8S1182C10D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C10__A3__7S1182C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C10__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S1182C10[0]),
};
extern void _ZN8S1182C14D1Ev();
extern void _ZN8S1182C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C14__7S1182C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&_ZN8S1182C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C14__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C14__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C14__7S1182C1[] = {
  ABISELECT(48,24),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C14__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1182C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C15__7S1182C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
extern void _ZN8S1182C17D1Ev();
extern void _ZN8S1182C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C17__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  ABISELECT(24,16),
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&_ZN8S1182C17D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C17__A4__7S1182C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-248,-128),
  ABISELECT(-248,-128),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void _ZN8S1182C18D1Ev();
extern void _ZN8S1182C18D0Ev();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&_ZN8S1182C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C18D0Ev,
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void _ZN7S1182C8D1Ev();
extern void _ZN7S1182C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&_ZN7S1182C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1182C8D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S1182C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D1Ev,_ZTv0_n32_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C18D0Ev,_ZTv0_n32_N8S1182C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1182C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C12__8S1182C17__7S1182C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C17__7S1182C1[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C17__7S1182C1[] = {
  ABISELECT(64,32),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C17__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C17__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(32,16),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D1Ev,_ZTv0_n32_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C17D0Ev,_ZTv0_n32_N8S1182C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C17__7S1182C1[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D1Ev,_ZTv0_n44_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C17D0Ev,_ZTv0_n44_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev)();
extern void _ZN8S1182C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C18__8S1182C17__7S1182C1[] = {
  ABISELECT(48,28),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-96,-52),
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  ABISELECT(-96,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D1Ev,_ZThn4_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1182C17D0Ev,_ZThn4_N8S1182C17D0Ev),
  (VTBL_ENTRY)&_ZN8S1182C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1182C16__A1__8S1182C17__7S1182C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1182C17[0]),
};
extern void _ZN8S1182C12D1Ev();
extern void _ZN8S1182C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-47,-27),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-60),
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&_ZN8S1182C12D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C12D0Ev,
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-272,-144),
  ABISELECT(-104,-60),
  ABISELECT(-56,-32),
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C1[] = {
  ABISELECT(-272,-144),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(288,152),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(272,144),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(104,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1182C9__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(88,48),
  ABISELECT(-24,-16),
  ABISELECT(-184,-96),
  ABISELECT(-16,-12),
  ABISELECT(-184,-96),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__8S1182C12__A1__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(272,144),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1182C11__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-200,-104),
  ABISELECT(-40,-24),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(40,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(-232,-120),
  ABISELECT(-72,-40),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C12[0]),
};
extern void _ZN8S1182C16D1Ev();
extern void _ZN8S1182C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-304,-160),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&_ZN8S1182C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C118S1182C16__A3__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C1[] = {
  ABISELECT(-304,-160),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C38S1182C16__A5__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(320,168),
  (VTBL_ENTRY)&(_ZTI7S1182C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1182C10__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(88,48),
  ABISELECT(-56,-32),
  ABISELECT(-216,-112),
  ABISELECT(-48,-28),
  ABISELECT(-216,-112),
  ABISELECT(-56,-32),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  ABISELECT(-8,-4),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C1[] = {
  0,
  ABISELECT(160,80),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-320,-168),
  ABISELECT(-320,-168),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1182C16[0]),
};
extern void _ZN8S1182C21D1Ev();
extern void _ZN8S1182C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1182C21__7S1182C1[] = {
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C21[0]),
  (VTBL_ENTRY)&_ZN8S1182C21D1Ev,
  (VTBL_ENTRY)&_ZN8S1182C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1182C158S1182C21__A1__7S1182C1[] = {
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1182C15[0]),
};
static  VTT_ENTRY vtt_S1182C1[] = {
  {&(_ZTV7S1182C1[18]),  18,252},
  {&(_tg__ZTV7S1182C2__7S1182C1[17]),  17,19},
  {&(_tg__ZTV7S1182C37S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C37S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C127S1182C2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C127S1182C2__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C127S1182C2__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C127S1182C2__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C127S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C127S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C127S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C127S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C2__7S1182C1[17]),  17,19},
  {&(_tg__ZTV7S1182C8__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__7S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C11__7S1182C2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C12__A__7S1182C2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C14__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__7S1182C2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A2__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C17__7S1182C2__7S1182C1[18]),  18,20},
  {&(_tg__ZTV8S1182C12__A1__7S1182C2__7S1182C1[15]),  15,17},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C2__7S1182C1[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A2__7S1182C2__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C19__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C19__A7__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C20__7S1182C1[15]),  15,17},
  {&(_tg__ZTV8S1182C228S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C158S1182C228S1182C20__A2__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C128S1182C228S1182C20__A2__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C128S1182C228S1182C20__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C128S1182C228S1182C20__A8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C128S1182C228S1182C20__A6__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C128S1182C228S1182C20__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C128S1182C228S1182C20__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C128S1182C228S1182C20__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C128S1182C228S1182C20__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C128S1182C228S1182C20__A2__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C128S1182C228S1182C20__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C228S1182C20__A1__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C218S1182C228S1182C20__A3__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C12__8S1182C228S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C228S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C228S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C228S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C228S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C228S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C228S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C228S1182C20__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C168S1182C20__A4__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C20__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C20__A9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C20__A7__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C20__A7__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C20__A4__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C20__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C20__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C20__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C148S1182C20__A1__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C148S1182C20__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C15__8S1182C148S1182C20__A1__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C11__8S1182C148S1182C20__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C148S1182C20__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C148S1182C20__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__8S1182C20__7S1182C1[4]),  4,6},
  {&(_tg__ZTV7S1182C9__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C128S1182C22__8S1182C20__7S1182C1[14]),  14,16},
  {&(_tg__ZTV7S1182C8__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C11__8S1182C20__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C20__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C128S1182C22__A1__8S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C218S1182C22__A1__8S1182C20__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C16__A1__8S1182C20__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C38S1182C16__A2__8S1182C20__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C14__A__8S1182C20__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__A__7S1182C1[4]),  4,4},
  {&(_ZTV7S1182C1[18]),  18,252},
  {&(_ZTV7S1182C1[133]),  133,252},
  {&(_ZTV7S1182C1[143]),  143,252},
  {&(_ZTV7S1182C1[133]),  133,252},
  {&(_ZTV7S1182C1[149]),  149,252},
  {&(_ZTV7S1182C1[157]),  157,252},
  {&(_ZTV7S1182C1[34]),  34,252},
  {&(_ZTV7S1182C1[170]),  170,252},
  {&(_ZTV7S1182C1[170]),  170,252},
  {&(_ZTV7S1182C1[42]),  42,252},
  {&(_ZTV7S1182C1[190]),  190,252},
  {&(_ZTV7S1182C1[221]),  221,252},
  {&(_ZTV7S1182C1[229]),  229,252},
  {&(_ZTV7S1182C1[203]),  203,252},
  {&(_ZTV7S1182C1[238]),  238,252},
  {&(_ZTV7S1182C1[246]),  246,252},
  {&(_ZTV7S1182C1[46]),  46,252},
  {&(_ZTV7S1182C1[61]),  61,252},
  {&(_ZTV7S1182C1[250]),  250,252},
  {&(_ZTV7S1182C1[77]),  77,252},
  {&(_ZTV7S1182C1[85]),  85,252},
  {&(_ZTV7S1182C1[88]),  88,252},
  {&(_ZTV7S1182C1[98]),  98,252},
  {&(_ZTV7S1182C1[106]),  106,252},
  {&(_ZTV7S1182C1[116]),  116,252},
  {&(_ZTV7S1182C1[122]),  122,252},
  {&(_tg__ZTV7S1182C5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C8__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C8__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__7S1182C8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C8__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C8__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C9__7S1182C1[7]),  7,9},
  {&(_tg__ZTV8S1182C107S1182C9__7S1182C1[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C107S1182C9__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C107S1182C9__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C107S1182C9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__7S1182C9__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C9__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C3__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C11__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C1[7]),  7,9},
  {&(_tg__ZTV7S1182C58S1182C10__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__8S1182C10__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C10__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C5__8S1182C14__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C14__7S1182C1[10]),  10,12},
  {&(_tg__ZTV8S1182C11__8S1182C14__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C9__8S1182C14__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C14__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C15__7S1182C1[3]),  3,3},
  {&(_tg__ZTV8S1182C17__7S1182C1[16]),  16,18},
  {&(_tg__ZTV7S1182C38S1182C17__A4__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C17__A4__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C188S1182C17__7S1182C1[11]),  11,14},
  {&(_tg__ZTV7S1182C88S1182C188S1182C17__A1__7S1182C1[10]),  10,12},
  {&(_tg__ZTV7S1182C9__7S1182C88S1182C188S1182C17__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__7S1182C88S1182C188S1182C17__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C88S1182C188S1182C17__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__7S1182C88S1182C188S1182C17__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__7S1182C88S1182C188S1182C17__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C9__8S1182C188S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C188S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__8S1182C188S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C188S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C188S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C16__8S1182C188S1182C17__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C188S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C12__8S1182C17__7S1182C1[15]),  15,17},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C17__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C17__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C17__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A1__8S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C18__8S1182C17__7S1182C1[11]),  11,14},
  {&(_tg__ZTV8S1182C16__A1__8S1182C17__7S1182C1[9]),  9,11},
  {&(_tg__ZTV7S1182C38S1182C16__A3__8S1182C17__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C12__A1__7S1182C1[14]),  14,16},
  {&(_tg__ZTV8S1182C168S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C168S1182C12__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C168S1182C12__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C168S1182C12__A3__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C168S1182C12__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C168S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C168S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C168S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C168S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C9__8S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C8__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C5__8S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C11__8S1182C12__A1__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__A1__8S1182C12__A1__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV8S1182C14__8S1182C12__A1__7S1182C1[11]),  11,13},
  {&(_tg__ZTV7S1182C38S1182C16__A1__8S1182C12__A1__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C16__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV8S1182C118S1182C16__A3__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C58S1182C118S1182C16__A6__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C38S1182C16__A5__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__7S1182C38S1182C16__A5__7S1182C1[4]),  4,4},
  {&(_tg__ZTV8S1182C10__8S1182C16__A2__7S1182C1[8]),  8,10},
  {&(_tg__ZTV7S1182C3__8S1182C16__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV7S1182C5__A1__8S1182C16__A2__7S1182C1[4]),  4,4},
  {&(_tg__ZTV7S1182C3__A__8S1182C16__A2__7S1182C1[6]),  6,6},
  {&(_tg__ZTV8S1182C21__7S1182C1[3]),  3,5},
  {&(_tg__ZTV8S1182C158S1182C21__A1__7S1182C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1182C1[];
extern  VTBL_ENTRY _ZTV7S1182C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1182C1[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D0Ev,_ZTv0_n36_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D0Ev,_ZThn32_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C17D1Ev,_ZTv0_n36_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1182C17D1Ev,_ZThn32_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D0Ev,_ZTv0_n60_N8S1182C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D0Ev,_ZThn16_N8S1182C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S1182C17D1Ev,_ZTv0_n60_N8S1182C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1182C17D1Ev,_ZThn16_N8S1182C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D0Ev,_ZTv0_n36_N8S1182C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D0Ev,_ZThn28_N8S1182C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S1182C18D1Ev,_ZTv0_n36_N8S1182C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C18D1Ev,_ZThn28_N8S1182C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D0Ev,_ZTv0_n32_N7S1182C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D0Ev,_ZThn28_N7S1182C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D0Ev,_ZThn12_N7S1182C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C8D1Ev,_ZTv0_n32_N7S1182C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1182C8D1Ev,_ZThn28_N7S1182C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S1182C8D1Ev,_ZThn12_N7S1182C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D0Ev,_ZTv0_n44_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C20D0Ev,_ZThn92_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C20D0Ev,_ZThn56_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C20D1Ev,_ZTv0_n44_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C20D1Ev,_ZThn92_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C20D1Ev,_ZThn56_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D0Ev,_ZTv0_n32_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C20D0Ev,_ZThn84_N8S1182C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C20D0Ev,_ZThn68_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C20D1Ev,_ZTv0_n32_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C20D1Ev,_ZThn84_N8S1182C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C20D1Ev,_ZThn68_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D0Ev,_ZTv0_n16_N8S1182C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S1182C20D0Ev,_ZThn148_N8S1182C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S1182C20D1Ev,_ZTv0_n16_N8S1182C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S1182C20D1Ev,_ZThn148_N8S1182C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D0Ev,_ZTv0_n32_N8S1182C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C14D0Ev,_ZThn28_N8S1182C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C14D1Ev,_ZTv0_n32_N8S1182C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1182C14D1Ev,_ZThn28_N8S1182C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D0Ev,_ZTv0_n32_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C22D0Ev,_ZThn84_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C22D0Ev,_ZThn68_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C22D1Ev,_ZTv0_n32_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C22D1Ev,_ZThn84_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S1182C22D1Ev,_ZThn68_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D0Ev,_ZTv0_n44_N8S1182C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C22D0Ev,_ZThn92_N8S1182C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D0Ev,_ZThn56_N8S1182C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C22D1Ev,_ZTv0_n44_N8S1182C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C22D1Ev,_ZThn92_N8S1182C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C22D1Ev,_ZThn56_N8S1182C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D0Ev,_ZTv0_n36_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C2D0Ev,_ZThn160_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C2D1Ev,_ZTv0_n36_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C2D1Ev,_ZThn160_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D0Ev,_ZTv0_n60_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C2D0Ev,_ZThn144_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C2D1Ev,_ZTv0_n60_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C2D1Ev,_ZThn144_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D0Ev,_ZTv0_n68_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C2D0Ev,_ZThn128_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C2D1Ev,_ZTv0_n68_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C2D1Ev,_ZThn128_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D0Ev,_ZTv0_n32_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C2D0Ev,_ZThn112_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C2D0Ev,_ZThn96_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C2D1Ev,_ZTv0_n32_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C2D1Ev,_ZThn112_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C2D1Ev,_ZThn96_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D0Ev,_ZTv0_n44_N7S1182C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C2D0Ev,_ZThn120_N7S1182C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C2D0Ev,_ZThn84_N7S1182C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C2D1Ev,_ZTv0_n44_N7S1182C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C2D1Ev,_ZThn120_N7S1182C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C2D1Ev,_ZThn84_N7S1182C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D0Ev,_ZTv0_n32_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C12D0Ev,_ZThn64_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C12D0Ev,_ZThn108_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C12D0Ev,_ZThn92_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C12D1Ev,_ZTv0_n32_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S1182C12D1Ev,_ZThn64_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C12D1Ev,_ZThn108_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S1182C12D1Ev,_ZThn92_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D0Ev,_ZTv0_n44_N8S1182C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C12D0Ev,_ZThn88_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D0Ev,_ZThn52_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1182C12D0Ev,_ZThn116_N8S1182C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D0Ev,_ZThn80_N8S1182C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1182C12D1Ev,_ZTv0_n44_N8S1182C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S1182C12D1Ev,_ZThn88_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1182C12D1Ev,_ZThn52_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S1182C12D1Ev,_ZThn116_N8S1182C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S1182C12D1Ev,_ZThn80_N8S1182C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D0Ev,_ZTv0_n32_N8S1182C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C16D0Ev,_ZThn60_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C16D0Ev,_ZThn80_N8S1182C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C16D0Ev,_ZThn108_N8S1182C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1182C16D1Ev,_ZTv0_n32_N8S1182C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1182C16D1Ev,_ZThn60_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S1182C16D1Ev,_ZThn80_N8S1182C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S1182C16D1Ev,_ZThn108_N8S1182C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S1182C1D0Ev,_ZTv0_n16_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1182C1D0Ev,_ZThn176_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S1182C1D1Ev,_ZTv0_n16_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S1182C1D1Ev,_ZThn176_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C1D0Ev,_ZTv0_n36_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C1D0Ev,_ZThn160_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S1182C1D1Ev,_ZTv0_n36_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S1182C1D1Ev,_ZThn160_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C1D0Ev,_ZTv0_n60_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C1D0Ev,_ZThn144_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1182C1D1Ev,_ZTv0_n60_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S1182C1D1Ev,_ZThn144_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C1D0Ev,_ZTv0_n68_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C1D0Ev,_ZThn128_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N7S1182C1D1Ev,_ZTv0_n68_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S1182C1D1Ev,_ZThn128_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C1D0Ev,_ZTv0_n32_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C1D0Ev,_ZThn112_N7S1182C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C1D0Ev,_ZThn96_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1182C1D1Ev,_ZTv0_n32_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S1182C1D1Ev,_ZThn112_N7S1182C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1182C1D1Ev,_ZThn96_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C1D0Ev,_ZTv0_n44_N7S1182C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C1D0Ev,_ZThn120_N7S1182C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C1D0Ev,_ZThn84_N7S1182C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1182C1D1Ev,_ZTv0_n44_N7S1182C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S1182C1D1Ev,_ZThn120_N7S1182C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S1182C1D1Ev,_ZThn84_N7S1182C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1182C1 = {  "S1182C1", // class name
  bases_S1182C1, 103,
  &(vtc_S1182C1[0]), // expected_vtbl_contents
  &(vtt_S1182C1[0]), // expected_vtt_contents
  ABISELECT(344,180), // object size
  NSPAIRA(_ZTI7S1182C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1182C1),252, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1182C1),222, //virtual table table var
  52, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C10  : virtual S7856C15 , S7856C12 , virtual S7856C9_nt {
  ~S6127C10(); // tgen
  S6127C10(); // tgen
};
//SIG(-1 S6127C10) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S6127C10 ::~S6127C10(){ note_dtor("S6127C10", this);} // tgen
S6127C10 ::S6127C10(){ note_ctor("S6127C10", this);} // tgen

static void Test_S6127C10()
{
  extern Class_Descriptor cd_S6127C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6127C10, buf);
    S6127C10 *dp, &lv = *(dp=new (buf) S6127C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6127C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C10)");
    check_base_class_offset(lv, (S7856C15*), 0, "S6127C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S6127C10");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C10");
    test_class_info(&lv, &cd_S6127C10);
    dp->~S6127C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C10(Test_S6127C10, "S6127C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6127C10C1Ev();
extern void _ZN8S6127C10D1Ev();
Name_Map name_map_S6127C10[] = {
  NSPAIR(_ZN8S6127C10C1Ev),
  NSPAIR(_ZN8S6127C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S6127C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S6127C10[];
static  VTBL_ENTRY vtc_S6127C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern VTBL_ENTRY _ZTV8S6127C10[];
static  VTT_ENTRY vtt_S6127C10[] = {
  {&(_ZTV8S6127C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
Class_Descriptor cd_S6127C10 = {  "S6127C10", // class name
  bases_S6127C10, 3,
  &(vtc_S6127C10[0]), // expected_vtbl_contents
  &(vtt_S6127C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6127C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6127C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C10),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  S6127C9  : S7856C15 , virtual S6127C10 , virtual S7856C12 {
  ~S6127C9(); // tgen
  S6127C9(); // tgen
};
//SIG(-1 S6127C9) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S6127C9 ::~S6127C9(){ note_dtor("S6127C9", this);} // tgen
S6127C9 ::S6127C9(){ note_ctor("S6127C9", this);} // tgen

static void Test_S6127C9()
{
  extern Class_Descriptor cd_S6127C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6127C9, buf);
    S6127C9 *dp, &lv = *(dp=new (buf) S6127C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6127C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C9)");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C9");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(8,4), "S6127C9");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C9");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C9");
    check_base_class_offset(lv, (S6127C10*), 0, "S6127C9");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C9");
    test_class_info(&lv, &cd_S6127C9);
    dp->~S6127C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C9(Test_S6127C9, "S6127C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6127C9C1Ev();
extern void _ZN7S6127C9D1Ev();
Name_Map name_map_S6127C9[] = {
  NSPAIR(_ZN7S6127C9C1Ev),
  NSPAIR(_ZN7S6127C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S6127C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    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},
  {&cd_S7856C12,    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 _ZTI7S6127C9[];
static  VTBL_ENTRY vtc_S6127C9[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern VTBL_ENTRY _ZTV7S6127C9[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C9[] = {
  {&(_ZTV7S6127C9[6]),  6,6},
  {&(_ZTV7S6127C9[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
Class_Descriptor cd_S6127C9 = {  "S6127C9", // class name
  bases_S6127C9, 6,
  &(vtc_S6127C9[0]), // expected_vtbl_contents
  &(vtt_S6127C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6127C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C9),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C9),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  S6127C12  : S7856C12 , virtual S7856C15 , virtual S7856C9_nt , S6127C10 , virtual S6127C9 {
  virtual  ~S6127C12(); // _ZN8S6127C12D2Ev
  S6127C12(); // tgen
};
//SIG(-1 S6127C12) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S6127C12 ::~S6127C12(){ note_dtor("S6127C12", this);}
S6127C12 ::S6127C12(){ note_ctor("S6127C12", this);} // tgen

static void Test_S6127C12()
{
  extern Class_Descriptor cd_S6127C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6127C12, buf);
    S6127C12 *dp, &lv = *(dp=new (buf) S6127C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6127C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C12)");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C12");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*), 0, "S6127C12");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C12");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(16,8), "S6127C12");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(16,8), "S6127C12");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(24,12), "S6127C12");
    check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C12");
    test_class_info(&lv, &cd_S6127C12);
    dp->~S6127C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C12(Test_S6127C12, "S6127C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S6127C12C1Ev();
extern void _ZN8S6127C12D2Ev();
Name_Map name_map_S6127C12[] = {
  NSPAIR(_ZN8S6127C12C1Ev),
  NSPAIR(_ZN8S6127C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
static Base_Class bases_S6127C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    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_S7856C15,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C12[];
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY vtc_S6127C12[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern VTBL_ENTRY _ZTV8S6127C12[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__A__8S6127C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__A1__8S6127C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C12[] = {
  {&(_ZTV8S6127C12[7]),  7,15},
  {&(_tg__ZTV8S6127C10__A__8S6127C12[4]),  4,4},
  {&(_ZTV8S6127C12[15]),  15,15},
  {&(_ZTV8S6127C12[15]),  15,15},
  {&(_tg__ZTV7S6127C9__8S6127C12[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12[6]),  6,6},
  {&(_tg__ZTV8S6127C10__A1__8S6127C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
Class_Descriptor cd_S6127C12 = {  "S6127C12", // class name
  bases_S6127C12, 10,
  &(vtc_S6127C12[0]), // expected_vtbl_contents
  &(vtt_S6127C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S6127C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C12),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C12),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  S6127C6  : virtual S7856C15 , virtual S7856C12 , virtual S6127C9 , S7856C9_nt , S6127C12 {
  virtual  ~S6127C6(); // _ZN7S6127C6D2Ev
  S6127C6(); // tgen
};
//SIG(-1 S6127C6) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S6127C6 ::~S6127C6(){ note_dtor("S6127C6", this);}
S6127C6 ::S6127C6(){ note_ctor("S6127C6", this);} // tgen

static void Test_S6127C6()
{
  extern Class_Descriptor cd_S6127C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6127C6, buf);
    S6127C6 *dp, &lv = *(dp=new (buf) S6127C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6127C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C6)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(9,5), "S6127C6");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(9,5), "S6127C6");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(24,12), "S6127C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(24,12), "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C6");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(16,8), "S6127C6");
    check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C6");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(16,8), "S6127C6");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(8,4), "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), 0, "S6127C6");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), 0, "S6127C6");
    check_base_class_offset(lv, (S6127C12*), 0, "S6127C6");
    test_class_info(&lv, &cd_S6127C6);
    dp->~S6127C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C6(Test_S6127C6, "S6127C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6127C6C1Ev();
extern void _ZN7S6127C6D2Ev();
Name_Map name_map_S6127C6[] = {
  NSPAIR(_ZN7S6127C6C1Ev),
  NSPAIR(_ZN7S6127C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
static Base_Class bases_S6127C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    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
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C6[];
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY vtc_S6127C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
extern VTBL_ENTRY _ZTV7S6127C6[];
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__7S6127C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A1__7S6127C6[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__7S6127C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C6[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C6[] = {
  {&(_ZTV7S6127C6[7]),  7,15},
  {&(_tg__ZTV8S6127C12__7S6127C6[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A1__7S6127C6[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__7S6127C6[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__7S6127C6[6]),  6,6},
  {&(_ZTV7S6127C6[15]),  15,15},
  {&(_ZTV7S6127C6[15]),  15,15},
  {&(_tg__ZTV7S6127C9__7S6127C6[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
Class_Descriptor cd_S6127C6 = {  "S6127C6", // class name
  bases_S6127C6, 12,
  &(vtc_S6127C6[0]), // expected_vtbl_contents
  &(vtt_S6127C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6127C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6127C6),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C6),10, //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  S6127C13  : S7856C9_nt , S7856C12 , S6127C10 {
  int s6127c13f0;
  ~S6127C13(); // tgen
  S6127C13(); // tgen
};
//SIG(-1 S6127C13) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S6127C13 ::~S6127C13(){ note_dtor("S6127C13", this);} // tgen
S6127C13 ::S6127C13(){ note_ctor("S6127C13", this);} // tgen

static void Test_S6127C13()
{
  extern Class_Descriptor cd_S6127C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6127C13, buf);
    S6127C13 *dp, &lv = *(dp=new (buf) S6127C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6127C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C13)");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C13");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S6127C13");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C13");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C13");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(12,8), "S6127C13");
    check_base_class_offset(lv, (S6127C10*), 0, "S6127C13");
    check_field_offset(lv, s6127c13f0, ABISELECT(8,4), "S6127C13.s6127c13f0");
    test_class_info(&lv, &cd_S6127C13);
    dp->~S6127C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C13(Test_S6127C13, "S6127C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S6127C13C1Ev();
extern void _ZN8S6127C13D1Ev();
Name_Map name_map_S6127C13[] = {
  NSPAIR(_ZN8S6127C13C1Ev),
  NSPAIR(_ZN8S6127C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
static Base_Class bases_S6127C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_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, 1},
  {&cd_S6127C10,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C13[];
static  VTBL_ENTRY vtc_S6127C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
extern VTBL_ENTRY _ZTV8S6127C13[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C13[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C13[] = {
  {&(_ZTV8S6127C13[4]),  4,4},
  {&(_tg__ZTV8S6127C10__8S6127C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
Class_Descriptor cd_S6127C13 = {  "S6127C13", // class name
  bases_S6127C13, 6,
  &(vtc_S6127C13[0]), // expected_vtbl_contents
  &(vtt_S6127C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S6127C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6127C13),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C13),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  S6127C5  : virtual S6127C6 , virtual S6127C13 , virtual S6127C12 {
  int s6127c5f0[2];
  virtual  ~S6127C5(); // _ZN7S6127C5D2Ev
  S6127C5(); // tgen
};
//SIG(-1 S6127C5) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S6127C5 ::~S6127C5(){ note_dtor("S6127C5", this);}
S6127C5 ::S6127C5(){ note_ctor("S6127C5", this);} // tgen

static void Test_S6127C5()
{
  extern Class_Descriptor cd_S6127C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6127C5, buf);
    S6127C5 *dp, &lv = *(dp=new (buf) S6127C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6127C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C5)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(25,17), "S6127C5");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), 0, "S6127C5");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), 0, "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), 0, "S6127C5");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(24,16), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C5");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(16,12), "S6127C5");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(40,24), "S6127C5");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C5");
    check_base_class_offset(lv, (S6127C13*), ABISELECT(32,20), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(56,32), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C5");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*), ABISELECT(48,28), "S6127C5");
    check_field_offset(lv, s6127c5f0, ABISELECT(8,4), "S6127C5.s6127c5f0");
    test_class_info(&lv, &cd_S6127C5);
    dp->~S6127C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C5(Test_S6127C5, "S6127C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6127C5C1Ev();
extern void _ZN7S6127C5D2Ev();
Name_Map name_map_S6127C5[] = {
  NSPAIR(_ZN7S6127C5C1Ev),
  NSPAIR(_ZN7S6127C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
static Base_Class bases_S6127C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C5[];
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C5[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C5[];
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C5[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C5[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C5[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTT_ENTRY vtt_S6127C5[] = {
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[20]),  20,36},
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[10]),  10,36},
  {&(_ZTV7S6127C5[26]),  26,36},
  {&(_ZTV7S6127C5[34]),  34,36},
  {&(_tg__ZTV7S6127C6__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C5[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C5[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C5[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C5[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C5[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C5 = {  "S6127C5", // class name
  bases_S6127C5, 22,
  &(vtc_S6127C5[0]), // expected_vtbl_contents
  &(vtt_S6127C5[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6127C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C5),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C5),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C16  : virtual S7856C12 {
  ~S6127C16(); // tgen
  S6127C16(); // tgen
};
//SIG(-1 S6127C16) C1{ VBC2{ m}}


S6127C16 ::~S6127C16(){ note_dtor("S6127C16", this);} // tgen
S6127C16 ::S6127C16(){ note_ctor("S6127C16", this);} // tgen

static void Test_S6127C16()
{
  extern Class_Descriptor cd_S6127C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6127C16, buf);
    S6127C16 *dp, &lv = *(dp=new (buf) S6127C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6127C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C16)");
    check_base_class_offset(lv, (S7856C12*), 0, "S6127C16");
    test_class_info(&lv, &cd_S6127C16);
    dp->~S6127C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C16(Test_S6127C16, "S6127C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6127C16C1Ev();
extern void _ZN8S6127C16D1Ev();
Name_Map name_map_S6127C16[] = {
  NSPAIR(_ZN8S6127C16C1Ev),
  NSPAIR(_ZN8S6127C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S6127C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S6127C16[];
static  VTBL_ENTRY vtc_S6127C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern VTBL_ENTRY _ZTV8S6127C16[];
static  VTT_ENTRY vtt_S6127C16[] = {
  {&(_ZTV8S6127C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
Class_Descriptor cd_S6127C16 = {  "S6127C16", // class name
  bases_S6127C16, 1,
  &(vtc_S6127C16[0]), // expected_vtbl_contents
  &(vtt_S6127C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6127C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6127C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C16),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  S6127C15  : virtual S6127C10 , virtual S6127C16 , virtual S6127C13 , S7856C9_nt , virtual S6127C6 {
  int s6127c15f0;
  virtual  ~S6127C15(); // _ZN8S6127C15D2Ev
  S6127C15(); // tgen
};
//SIG(-1 S6127C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S6127C15 ::~S6127C15(){ note_dtor("S6127C15", this);}
S6127C15 ::S6127C15(){ note_ctor("S6127C15", this);} // tgen

static void Test_S6127C15()
{
  extern Class_Descriptor cd_S6127C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6127C15, buf);
    S6127C15 *dp, &lv = *(dp=new (buf) S6127C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6127C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C15)");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C15");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(48,28), "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(12,8), "S6127C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(12,8), "S6127C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), ABISELECT(12,8), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(12,8), "S6127C15");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C15");
    /*is_ambiguous_... S6127C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C15");
    check_base_class_offset(lv, (S6127C16*), 0, "S6127C15");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(24,16), "S6127C15");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C15");
    check_base_class_offset(lv, (S6127C13*), ABISELECT(16,12), "S6127C15");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C15");
    /*is_ambiguous_... S6127C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(48,28), "S6127C15");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C15");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(40,24), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(32,20), "S6127C15");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(32,20), "S6127C15");
    check_field_offset(lv, s6127c15f0, ABISELECT(8,4), "S6127C15.s6127c15f0");
    test_class_info(&lv, &cd_S6127C15);
    dp->~S6127C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C15(Test_S6127C15, "S6127C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S6127C15C1Ev();
extern void _ZN8S6127C15D2Ev();
Name_Map name_map_S6127C15[] = {
  NSPAIR(_ZN8S6127C15C1Ev),
  NSPAIR(_ZN8S6127C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
static Base_Class bases_S6127C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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_S7856C9_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
    3, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    13, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C15[];
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S6127C15D1Ev,_ZThn20_N8S6127C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S6127C15D0Ev,_ZThn20_N8S6127C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern VTBL_ENTRY _ZTV8S6127C15[];
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A1__8S6127C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A2__8S6127C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTT_ENTRY vtt_S6127C15[] = {
  {&(_ZTV8S6127C15[10]),  10,32},
  {&(_ZTV8S6127C15[32]),  32,32},
  {&(_ZTV8S6127C15[10]),  10,32},
  {&(_ZTV8S6127C15[16]),  16,32},
  {&(_ZTV8S6127C15[24]),  24,32},
  {&(_ZTV8S6127C15[32]),  32,32},
  {&(_tg__ZTV8S6127C10__8S6127C15[4]),  4,4},
  {&(_tg__ZTV8S6127C16__8S6127C15[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C15[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A1__8S6127C15[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C15[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A2__8S6127C15[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C15[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6127C15D0Ev,_ZThn20_N8S6127C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6127C15D1Ev,_ZThn20_N8S6127C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C15 = {  "S6127C15", // class name
  bases_S6127C15, 20,
  &(vtc_S6127C15[0]), // expected_vtbl_contents
  &(vtt_S6127C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S6127C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C17  : virtual S6127C12 , S6127C13 , S6127C9 , S7856C9_nt {
  virtual  ~S6127C17(); // _ZN8S6127C17D2Ev
  S6127C17(); // tgen
};
//SIG(-1 S6127C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S6127C17 ::~S6127C17(){ note_dtor("S6127C17", this);}
S6127C17 ::S6127C17(){ note_ctor("S6127C17", this);} // tgen

static void Test_S6127C17()
{
  extern Class_Descriptor cd_S6127C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S6127C17, buf);
    S6127C17 *dp, &lv = *(dp=new (buf) S6127C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S6127C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C17)");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(32,16), "S6127C17");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C17");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(33,17), "S6127C17");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(33,17), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(40,20), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(48,24), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(48,24), "S6127C17");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(40,20), "S6127C17");
    check_base_class_offset(lv, (S6127C12*), ABISELECT(24,12), "S6127C17");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), 0, "S6127C17");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(8,4), "S6127C17");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*), 0, "S6127C17");
    check_base_class_offset(lv, (S6127C13*), 0, "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(16,8), "S6127C17");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*), ABISELECT(16,8), "S6127C17");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), ABISELECT(24,12), "S6127C17");
    test_class_info(&lv, &cd_S6127C17);
    dp->~S6127C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C17(Test_S6127C17, "S6127C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S6127C17C1Ev();
extern void _ZN8S6127C17D2Ev();
Name_Map name_map_S6127C17[] = {
  NSPAIR(_ZN8S6127C17C1Ev),
  NSPAIR(_ZN8S6127C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S6127C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    7, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6127C12,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6127C13,    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},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C17[];
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S6127C17D1Ev,_ZThn12_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S6127C17D0Ev,_ZThn12_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern VTBL_ENTRY _ZTV8S6127C17[];
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9__A__8S6127C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__8S6127C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__8S6127C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__A1__8S6127C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTT_ENTRY vtt_S6127C17[] = {
  {&(_ZTV8S6127C17[8]),  8,32},
  {&(_tg__ZTV8S6127C13__8S6127C17[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C17[4]),  4,4},
  {&(_tg__ZTV7S6127C9__A__8S6127C17[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9__A__8S6127C17[4]),  4,4},
  {&(_ZTV8S6127C17[24]),  24,32},
  {&(_ZTV8S6127C17[32]),  32,32},
  {&(_ZTV8S6127C17[32]),  32,32},
  {&(_ZTV8S6127C17[16]),  16,32},
  {&(_tg__ZTV8S6127C12__8S6127C17[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__8S6127C17[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17[6]),  6,6},
  {&(_tg__ZTV8S6127C10__A1__8S6127C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C17D0Ev,_ZThn12_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C17D1Ev,_ZThn12_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C17 = {  "S6127C17", // class name
  bases_S6127C17, 19,
  &(vtc_S6127C17[0]), // expected_vtbl_contents
  &(vtt_S6127C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S6127C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C4  : virtual S6127C5 , virtual S77C13_nt , virtual S6127C15 , S6127C17 {
  virtual  ~S6127C4(); // _ZN7S6127C4D2Ev
  S6127C4(); // tgen
};
//SIG(-1 S6127C4) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S6127C4 ::~S6127C4(){ note_dtor("S6127C4", this);}
S6127C4 ::S6127C4(){ note_ctor("S6127C4", this);} // tgen

static void Test_S6127C4()
{
  extern Class_Descriptor cd_S6127C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S6127C4, buf);
    S6127C4 *dp, &lv = *(dp=new (buf) S6127C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S6127C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C4)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C4");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C4");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), ABISELECT(57,33), "S6127C4");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(57,33), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(32,16), "S6127C4");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(56,32), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(48,28), "S6127C4");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(48,28), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(72,40), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(64,36), "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(64,36), "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(64,36), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(88,48), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(80,44), "S6127C4");
    /*is_ambiguous_... S6127C4::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(80,44), "S6127C4");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(80,44), "S6127C4");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(80,44), "S6127C4");
    check_base_class_offset(lv, (S6127C5*), ABISELECT(32,16), "S6127C4");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(96,52), "S6127C4");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(96,52), "S6127C4");
    check_base_class_offset(lv, (S6127C15*), ABISELECT(96,52), "S6127C4");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(8,4), "S6127C4");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C4");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*), 0, "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(16,8), "S6127C4");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(16,8), "S6127C4");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(24,12), "S6127C4");
    check_base_class_offset(lv, (S6127C17*), 0, "S6127C4");
    test_class_info(&lv, &cd_S6127C4);
    dp->~S6127C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C4(Test_S6127C4, "S6127C4", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S6127C4C1Ev();
extern void _ZN7S6127C4D2Ev();
Name_Map name_map_S6127C4[] = {
  NSPAIR(_ZN7S6127C4C1Ev),
  NSPAIR(_ZN7S6127C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static Base_Class bases_S6127C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    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
    5, //immediately_derived
  0, 1},
  {&cd_S6127C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6127C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C13,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    33, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C17,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C4[];
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C4[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C4[];
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__7S6127C4[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A1__7S6127C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A4__7S6127C4[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A1__7S6127C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__7S6127C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__7S6127C4[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C4[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C4[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C4[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C4[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C4[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C4[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C4[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C4[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C4[] = {
  {&(_ZTV7S6127C4[14]),  14,72},
  {&(_tg__ZTV8S6127C17__7S6127C4[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A4__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__7S6127C4[6]),  6,6},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[43]),  43,72},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[33]),  33,72},
  {&(_ZTV7S6127C4[49]),  49,72},
  {&(_ZTV7S6127C4[57]),  57,72},
  {&(_ZTV7S6127C4[70]),  70,72},
  {&(_ZTV7S6127C4[70]),  70,72},
  {&(_ZTV7S6127C4[22]),  22,72},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C4[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C4[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C4[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C4[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C4[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C4[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C4[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C4 = {  "S6127C4", // class name
  bases_S6127C4, 36,
  &(vtc_S6127C4[0]), // expected_vtbl_contents
  &(vtt_S6127C4[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S6127C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6127C4),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C4),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C18  : S77C13_nt , virtual S7856C15 , S6127C5 , virtual S6127C17 {
  virtual  ~S6127C18(); // _ZN8S6127C18D2Ev
  virtual void  v1(); // _ZN8S6127C182v1Ev
  S6127C18(); // tgen
};
//SIG(-1 S6127C18) C1{ BC2{ m} VBC3{ m} BC4{ VBC5{ VBC3 VBC6{ m} VBC7{ BC3 VBC8{ VBC3 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC3 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ VBC10 BC11 BC7 BC9 vd} vd v1}


 S6127C18 ::~S6127C18(){ note_dtor("S6127C18", this);}
void  S6127C18 ::v1(){vfunc_called(this, "_ZN8S6127C182v1Ev");}
S6127C18 ::S6127C18(){ note_ctor("S6127C18", this);} // tgen

static void Test_S6127C18()
{
  extern Class_Descriptor cd_S6127C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S6127C18, buf);
    S6127C18 *dp, &lv = *(dp=new (buf) S6127C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S6127C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C18)");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), ABISELECT(25,17), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C18");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), 0, "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), 0, "S6127C18");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), 0, "S6127C18");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), 0, "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), 0, "S6127C18");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(24,16), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(16,12), "S6127C18");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(16,12), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(40,24), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(32,20), "S6127C18");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(32,20), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(56,32), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C18");
    /*is_ambiguous_... S6127C18::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(48,28), "S6127C18");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(48,28), "S6127C18");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(48,28), "S6127C18");
    check_base_class_offset(lv, (S6127C5*), 0, "S6127C18");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(72,40), "S6127C18");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(64,36), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C18");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C18");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(88,48), "S6127C18");
    check_base_class_offset(lv, (S6127C17*), ABISELECT(64,36), "S6127C18");
    test_class_info(&lv, &cd_S6127C18);
    dp->~S6127C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C18(Test_S6127C18, "S6127C18", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S6127C18C1Ev();
extern void _ZN8S6127C18D2Ev();
Name_Map name_map_S6127C18[] = {
  NSPAIR(_ZN8S6127C18C1Ev),
  NSPAIR(_ZN8S6127C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
static Base_Class bases_S6127C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    30, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C18[];
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S6127C18D1Ev,_ZThn12_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S6127C18D0Ev,_ZThn12_N8S6127C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C18D1Ev,_ZThn28_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C18D0Ev,_ZThn28_N8S6127C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn36_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn36_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C18[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern VTBL_ENTRY _ZTV8S6127C18[];
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C18[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C18[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C18[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C18[] = {
  ABISELECT(-32,-20),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C18[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C18[] = {
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A1__8S6127C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A4__8S6127C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A1__8S6127C18[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__8S6127C18[] = {
  ABISELECT(16,8),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__8S6127C18[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__8S6127C18[] = {
  ABISELECT(-55,-27),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTT_ENTRY vtt_S6127C18[] = {
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C18[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C18[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C18[8]),  8,10},
  {&(_ZTV8S6127C18[22]),  22,55},
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_ZTV8S6127C18[11]),  11,55},
  {&(_ZTV8S6127C18[28]),  28,55},
  {&(_ZTV8S6127C18[36]),  36,55},
  {&(_ZTV8S6127C18[47]),  47,55},
  {&(_ZTV8S6127C18[55]),  55,55},
  {&(_tg__ZTV7S6127C6__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C13__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C18[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C17__8S6127C18[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A4__8S6127C18[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C18[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A1__8S6127C18[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__8S6127C18[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__8S6127C18[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__8S6127C18[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn36_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn36_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C18D0Ev,_ZThn28_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6127C18D0Ev,_ZThn12_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C18D1Ev,_ZThn28_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6127C18D1Ev,_ZThn12_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C18 = {  "S6127C18", // class name
  bases_S6127C18, 33,
  &(vtc_S6127C18[0]), // expected_vtbl_contents
  &(vtt_S6127C18[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S6127C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C18),55, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C18),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C3  : virtual S6127C4 , S7856C15 , S6127C9 , S6127C18 {
  virtual  ~S6127C3(); // _ZN7S6127C3D2Ev
  S6127C3(); // tgen
};
//SIG(-1 S6127C3) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} BC5 BC7 BC16{ BC12 VBC5 BC3 VBC15 vd v1} vd}


 S6127C3 ::~S6127C3(){ note_dtor("S6127C3", this);}
S6127C3 ::S6127C3(){ note_ctor("S6127C3", this);} // tgen

static void Test_S6127C3()
{
  extern Class_Descriptor cd_S6127C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S6127C3, buf);
    S6127C3 *dp, &lv = *(dp=new (buf) S6127C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S6127C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C3)");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(81,49), "S6127C3");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C18*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(81,49), "S6127C3");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C3");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(56,32), "S6127C3");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(80,48), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(72,44), "S6127C3");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*)(S6127C18*), ABISELECT(72,44), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(96,56), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(88,52), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(88,52), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*)(S6127C18*), ABISELECT(88,52), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(112,64), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(104,60), "S6127C3");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*)(S6127C18*), ABISELECT(104,60), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(104,60), "S6127C3");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(56,32), "S6127C3");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C3");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(120,68), "S6127C3");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(120,68), "S6127C3");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(120,68), "S6127C3");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(32,20), "S6127C3");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(40,24), "S6127C3");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(40,24), "S6127C3");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C3");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(24,16), "S6127C3");
    check_base_class_offset(lv, (S6127C4*), ABISELECT(24,16), "S6127C3");
    /*is_ambiguous_... S6127C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), 0, "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*), 0, "S6127C3");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C18*), ABISELECT(8,4), "S6127C3");
    check_base_class_offset(lv, (S6127C5*)(S6127C18*), ABISELECT(8,4), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(144,80), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(136,76), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(152,84), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(152,84), "S6127C3");
    /*is_ambiguous_... S6127C3::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(160,88), "S6127C3");
    check_base_class_offset(lv, (S6127C17*)(S6127C18*), ABISELECT(136,76), "S6127C3");
    check_base_class_offset(lv, (S6127C18*), ABISELECT(8,4), "S6127C3");
    test_class_info(&lv, &cd_S6127C3);
    dp->~S6127C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C3(Test_S6127C3, "S6127C3", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN7S6127C3C1Ev();
extern void _ZN7S6127C3D2Ev();
Name_Map name_map_S6127C3[] = {
  NSPAIR(_ZN7S6127C3C1Ev),
  NSPAIR(_ZN7S6127C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C18;
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
static Base_Class bases_S6127C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(72,44), //bcp->offset
    68, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    16, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(88,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(104,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    26, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    30, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    33, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(40,24), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(24,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C9,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_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
    51, //immediately_derived
  0, 0},
  {&cd_S6127C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    45, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(152,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(136,76), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S6127C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C3[];
extern void _ZN7S6127C3D1Ev();
extern void _ZN7S6127C3D0Ev();
extern void ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev)();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S6127C3D1Ev,_ZThn16_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S6127C3D0Ev,_ZThn16_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S6127C3D1Ev,_ZThn32_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S6127C3D0Ev,_ZThn32_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S6127C3D1Ev,_ZThn60_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S6127C3D0Ev,_ZThn60_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn120_N7S6127C3D1Ev,_ZThn68_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn120_N7S6127C3D0Ev,_ZThn68_N7S6127C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S6127C3D1Ev,_ZThn76_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S6127C3D0Ev,_ZThn76_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C3[] = {
  ABISELECT(136,76),
  ABISELECT(120,68),
  ABISELECT(120,68),
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(56,32),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(24,16),
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&_ZN7S6127C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C3D0Ev,
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-24,-16),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  ABISELECT(-56,-32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern VTBL_ENTRY _ZTV7S6127C3[];
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__7S6127C3[] = {
  0,
  ABISELECT(56,32),
  0,
  ABISELECT(81,49),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C9__A__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C18__7S6127C3[] = {
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(96,56),
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(73,45),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S6127C5D1Ev,_ZThn40_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S6127C5D0Ev,_ZThn40_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C5D1Ev,_ZThn56_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C5D0Ev,_ZThn56_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C58S6127C18__A1__7S6127C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn40_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn40_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C18__7S6127C3[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C18__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C18__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C18D1Ev,_ZThn56_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C18D0Ev,_ZThn56_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C18__7S6127C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S6127C18D1Ev,_ZThn72_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S6127C18D0Ev,_ZThn72_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C18__7S6127C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C18__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C3[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-24,-16),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__7S6127C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__7S6127C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__7S6127C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__7S6127C3[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C3[] = {
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C3[] = {
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-120,-68),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C3[] = {
  ABISELECT(-88,-52),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C3[] = {
  ABISELECT(48,24),
  ABISELECT(-72,-44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-72,-44),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C3[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C3[] = {
  ABISELECT(-136,-76),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(32,16),
  ABISELECT(-104,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-104,-60),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-56,-32),
  0,
  ABISELECT(-56,-32),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C3[] = {
  ABISELECT(-152,-84),
  ABISELECT(-96,-52),
  ABISELECT(-152,-84),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTT_ENTRY vtt_S6127C3[] = {
  {&(_ZTV7S6127C3[16]),  16,122},
  {&(_tg__ZTV7S6127C9__A__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C9__A__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C18__7S6127C3[11]),  11,14},
  {&(_tg__ZTV7S6127C58S6127C18__A1__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C58S6127C18__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C18__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C13__7S6127C58S6127C18__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C58S6127C18__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C18__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C18__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C18__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C13__8S6127C18__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C18__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C17__8S6127C18__7S6127C3[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C18__7S6127C3[6]),  6,6},
  {&(_ZTV7S6127C3[47]),  47,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[76]),  76,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[66]),  66,122},
  {&(_ZTV7S6127C3[82]),  82,122},
  {&(_ZTV7S6127C3[90]),  90,122},
  {&(_ZTV7S6127C3[103]),  103,122},
  {&(_ZTV7S6127C3[103]),  103,122},
  {&(_ZTV7S6127C3[55]),  55,122},
  {&(_ZTV7S6127C3[29]),  29,122},
  {&(_ZTV7S6127C3[114]),  114,122},
  {&(_ZTV7S6127C3[122]),  122,122},
  {&(_tg__ZTV7S6127C4__7S6127C3[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C3[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C3[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C3[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C3[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C3[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C3[3]),  3,3},
  {&(_tg__ZTV8S6127C17__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C3[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C3[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C3[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__7S6127C3[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C3[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S6127C3[];
extern  VTBL_ENTRY _ZTV7S6127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C3[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6127C18D0Ev,_ZThn72_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6127C18D1Ev,_ZThn72_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C18D0Ev,_ZThn56_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D0Ev,_ZThn40_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C18D1Ev,_ZThn56_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C18D1Ev,_ZThn40_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C5D0Ev,_ZThn56_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6127C5D0Ev,_ZThn40_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C5D1Ev,_ZThn56_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6127C5D1Ev,_ZThn40_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6127C3D0Ev,_ZThn76_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6127C3D1Ev,_ZThn76_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C3D0Ev,_ZThn60_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C3D1Ev,_ZThn60_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C3D0Ev,_ZThn68_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C3D0Ev,_ZThn32_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C3D1Ev,_ZThn68_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C3D1Ev,_ZThn32_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6127C3D0Ev,_ZThn16_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6127C3D1Ev,_ZThn16_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C3 = {  "S6127C3", // class name
  bases_S6127C3, 52,
  &(vtc_S6127C3[0]), // expected_vtbl_contents
  &(vtt_S6127C3[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI7S6127C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6127C3),122, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C3),87, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C20  : S7856C12 , S6127C16 {
  virtual  ~S6127C20(); // _ZN8S6127C20D2Ev
  S6127C20(); // tgen
};
//SIG(-1 S6127C20) C1{ BC2{ m} BC3{ VBC2} vd}


 S6127C20 ::~S6127C20(){ note_dtor("S6127C20", this);}
S6127C20 ::S6127C20(){ note_ctor("S6127C20", this);} // tgen

static void Test_S6127C20()
{
  extern Class_Descriptor cd_S6127C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6127C20, buf);
    S6127C20 *dp, &lv = *(dp=new (buf) S6127C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6127C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C20)");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S6127C20");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*), ABISELECT(8,4), "S6127C20");
    check_base_class_offset(lv, (S6127C16*), 0, "S6127C20");
    test_class_info(&lv, &cd_S6127C20);
    dp->~S6127C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C20(Test_S6127C20, "S6127C20", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S6127C20C1Ev();
extern void _ZN8S6127C20D2Ev();
Name_Map name_map_S6127C20[] = {
  NSPAIR(_ZN8S6127C20C1Ev),
  NSPAIR(_ZN8S6127C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
static Base_Class bases_S6127C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C20[];
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY vtc_S6127C20[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
extern VTBL_ENTRY _ZTV8S6127C20[];
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C20[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C20[] = {
  {&(_ZTV8S6127C20[3]),  3,5},
  {&(_tg__ZTV8S6127C16__8S6127C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
Class_Descriptor cd_S6127C20 = {  "S6127C20", // class name
  bases_S6127C20, 3,
  &(vtc_S6127C20[0]), // expected_vtbl_contents
  &(vtt_S6127C20[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S6127C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6127C20),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C20),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  S6127C21  : S6127C16 , virtual S7856C9_nt , S6127C4 , S6127C20 {
  virtual  ~S6127C21(); // _ZN8S6127C21D2Ev
  S6127C21(); // tgen
};
//SIG(-1 S6127C21) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


 S6127C21 ::~S6127C21(){ note_dtor("S6127C21", this);}
S6127C21 ::S6127C21(){ note_ctor("S6127C21", this);} // tgen

static void Test_S6127C21()
{
  extern Class_Descriptor cd_S6127C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S6127C21, buf);
    S6127C21 *dp, &lv = *(dp=new (buf) S6127C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S6127C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C21)");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C21");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C15::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(48,24), "S6127C21");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(72,40), "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(64,36), "S6127C21");
    check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(64,36), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(88,48), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(80,44), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(80,44), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(80,44), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(104,56), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(96,52), "S6127C21");
    /*is_ambiguous_... S6127C21::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(96,52), "S6127C21");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(96,52), "S6127C21");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(96,52), "S6127C21");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(48,24), "S6127C21");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C21");
    check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(112,60), "S6127C21");
    /*is_ambiguous_... S6127C15::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(112,60), "S6127C21");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(112,60), "S6127C21");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(16,8), "S6127C21");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(24,12), "S6127C21");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(24,12), "S6127C21");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(32,16), "S6127C21");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(8,4), "S6127C21");
    check_base_class_offset(lv, (S6127C4*), ABISELECT(8,4), "S6127C21");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(40,20), "S6127C21");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(40,20), "S6127C21");
    check_base_class_offset(lv, (S6127C20*), ABISELECT(40,20), "S6127C21");
    test_class_info(&lv, &cd_S6127C21);
    dp->~S6127C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C21(Test_S6127C21, "S6127C21", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S6127C21C1Ev();
extern void _ZN8S6127C21D2Ev();
Name_Map name_map_S6127C21[] = {
  NSPAIR(_ZN8S6127C21C1Ev),
  NSPAIR(_ZN8S6127C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
static Base_Class bases_S6127C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6127C16,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(80,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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S6127C16,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    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
    27, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    34, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    40, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C21[];
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C21D1Ev,_ZThn24_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C21D0Ev,_ZThn24_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S6127C21D1Ev,_ZThn36_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn64_N8S6127C21D0Ev,_ZThn36_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn112_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn112_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C21[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S6127C21[];
static  VTBL_ENTRY _tg__ZTV8S6127C16__A__8S6127C21[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C21[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__8S6127C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__8S6127C21[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn88_N8S6127C17D1Ev,_ZThn48_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn88_N8S6127C17D0Ev,_ZThn48_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn40_N7S6127C4D1Ev,_ZThn20_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn40_N7S6127C4D0Ev,_ZThn20_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__8S6127C21[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S6127C4D1Ev,_ZThn32_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S6127C4D0Ev,_ZThn32_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__8S6127C21[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__8S6127C21[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__8S6127C21[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__8S6127C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C21[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__A2__8S6127C21[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C21[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C21[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C21[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C21[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C21[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C21[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__8S6127C21[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__8S6127C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__8S6127C21[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__A1__8S6127C21[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C21[] = {
  {&(_ZTV8S6127C21[14]),  14,93},
  {&(_tg__ZTV8S6127C16__A__8S6127C21[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C21[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__8S6127C21[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__8S6127C21[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C21[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__A2__8S6127C21[3]),  3,3},
  {&(_ZTV8S6127C21[30]),  30,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[64]),  64,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[54]),  54,93},
  {&(_ZTV8S6127C21[70]),  70,93},
  {&(_ZTV8S6127C21[78]),  78,93},
  {&(_ZTV8S6127C21[91]),  91,93},
  {&(_ZTV8S6127C21[91]),  91,93},
  {&(_ZTV8S6127C21[38]),  38,93},
  {&(_ZTV8S6127C21[41]),  41,93},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C21[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C13__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C21[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C21[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C21[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C21[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__8S6127C21[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__8S6127C21[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C21[6]),  6,6},
  {&(_tg__ZTV8S6127C16__A1__8S6127C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C4D0Ev,_ZThn32_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6127C4D1Ev,_ZThn32_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6127C4D0Ev,_ZThn20_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6127C4D1Ev,_ZThn20_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C17D0Ev,_ZThn48_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C17D1Ev,_ZThn48_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C21D0Ev,_ZThn36_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6127C21D1Ev,_ZThn36_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C21D0Ev,_ZThn24_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6127C21D1Ev,_ZThn24_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C21 = {  "S6127C21", // class name
  bases_S6127C21, 41,
  &(vtc_S6127C21[0]), // expected_vtbl_contents
  &(vtt_S6127C21[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S6127C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6127C21),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C21),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C19  : virtual S6127C20 , virtual S6127C6 , S6127C21 , S6127C17 , S6127C15 {
  virtual  ~S6127C19(); // _ZN8S6127C19D2Ev
  S6127C19(); // tgen
};
//SIG(-1 S6127C19) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


 S6127C19 ::~S6127C19(){ note_dtor("S6127C19", this);}
S6127C19 ::S6127C19(){ note_ctor("S6127C19", this);} // tgen

static void Test_S6127C19()
{
  extern Class_Descriptor cd_S6127C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S6127C19, buf);
    S6127C19 *dp, &lv = *(dp=new (buf) S6127C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S6127C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6127C19)");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C19");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C20*), ABISELECT(96,48), "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C19");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C19");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(120,60), "S6127C19");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(112,56), "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C6*), ABISELECT(104,52), "S6127C19");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(104,52), "S6127C19");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(144,76), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(136,72), "S6127C19");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(136,72), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(160,84), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(152,80), "S6127C19");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(152,80), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(152,80), "S6127C19");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*)(S6127C21*), ABISELECT(120,60), "S6127C19");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*)(S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(168,88), "S6127C19");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*)(S6127C21*), ABISELECT(168,88), "S6127C19");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(16,8), "S6127C19");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(24,12), "S6127C19");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(24,12), "S6127C19");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(32,16), "S6127C19");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    check_base_class_offset(lv, (S6127C4*)(S6127C21*), ABISELECT(8,4), "S6127C19");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C20*)(S6127C21*), ABISELECT(40,20), "S6127C19");
    check_base_class_offset(lv, (S6127C21*), 0, "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(56,28), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(64,32), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(64,32), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(72,36), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C17*), ABISELECT(48,24), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(80,40), "S6127C19");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C15*), ABISELECT(80,40), "S6127C19");
    test_class_info(&lv, &cd_S6127C19);
    dp->~S6127C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C19(Test_S6127C19, "S6127C19", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S6127C19C1Ev();
extern void _ZN8S6127C19D2Ev();
Name_Map name_map_S6127C19[] = {
  NSPAIR(_ZN8S6127C19C1Ev),
  NSPAIR(_ZN8S6127C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C21;
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
static Base_Class bases_S6127C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C16,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6127C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    20, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(160,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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,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
    24, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(168,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
    30, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    34, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    37, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    43, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(40,20), //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
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S6127C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    48, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C9_nt,    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
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6127C19[];
extern void _ZN8S6127C19D1Ev();
extern void _ZN8S6127C19D0Ev();
extern void ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C19D1Ev,_ZThn52_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C19D0Ev,_ZThn52_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C19D1Ev,_ZThn60_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C19D0Ev,_ZThn60_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C19D1Ev,_ZThn80_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C19D0Ev,_ZThn80_N8S6127C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn168_N8S6127C19D1Ev,_ZThn88_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn168_N8S6127C19D0Ev,_ZThn88_N8S6127C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C19[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&_ZN8S6127C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C19D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S6127C19[];
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C21__8S6127C19[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C21__A1__8S6127C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C21__A4__8S6127C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn144_N8S6127C17D1Ev,_ZThn76_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn144_N8S6127C17D0Ev,_ZThn76_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C4D1Ev,_ZThn76_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C4D0Ev,_ZThn76_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C4D1Ev,_ZThn84_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C4D0Ev,_ZThn84_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C21__A1__8S6127C19[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C208S6127C21__A3__8S6127C19[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C21__8S6127C19[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C21__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C21__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C21__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C21D1Ev,_ZThn80_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C21D0Ev,_ZThn80_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C21__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn168_N8S6127C21D1Ev,_ZThn88_N8S6127C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
extern void ABISELECT(_ZThn168_N8S6127C21D0Ev,_ZThn88_N8S6127C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C21__8S6127C19[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C21__8S6127C19[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__8S6127C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A2__8S6127C19[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A2__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S6127C17D1Ev,_ZThn56_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S6127C17D0Ev,_ZThn56_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__8S6127C19[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__A__8S6127C19[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S6127C15D1Ev,_ZThn12_N8S6127C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S6127C15D0Ev,_ZThn12_N8S6127C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__A__8S6127C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C19[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__8S6127C19[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C19[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__8S6127C19[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C19[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__8S6127C19[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C5D1Ev,_ZThn20_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C5D0Ev,_ZThn20_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__8S6127C19[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__8S6127C19[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__8S6127C19[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__8S6127C19[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__8S6127C19[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__A2__8S6127C19[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C19[] = {
  {&(_ZTV8S6127C19[15]),  15,128},
  {&(_tg__ZTV8S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV8S6127C168S6127C21__A1__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C48S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C48S6127C21__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C21__A4__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C48S6127C21__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C48S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C21__A1__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C208S6127C21__A3__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C21__8S6127C19[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C6__8S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C21__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C21__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C21__8S6127C19[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C21__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C21__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C17__A1__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A2__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__A__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C16__8S6127C15__A__8S6127C19[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C15__A__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__A__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__A__8S6127C19[6]),  6,6},
  {&(_ZTV8S6127C19[76]),  76,128},
  {&(_ZTV8S6127C19[86]),  86,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[31]),  31,128},
  {&(_ZTV8S6127C19[99]),  99,128},
  {&(_ZTV8S6127C19[105]),  105,128},
  {&(_ZTV8S6127C19[113]),  113,128},
  {&(_ZTV8S6127C19[126]),  126,128},
  {&(_ZTV8S6127C19[126]),  126,128},
  {&(_ZTV8S6127C19[39]),  39,128},
  {&(_ZTV8S6127C19[42]),  42,128},
  {&(_ZTV8S6127C19[52]),  52,128},
  {&(_ZTV8S6127C19[60]),  60,128},
  {&(_ZTV8S6127C19[70]),  70,128},
  {&(_tg__ZTV8S6127C20__8S6127C19[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__8S6127C19[3]),  3,3},
  {&(_tg__ZTV7S6127C6__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C10__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C5__8S6127C19[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__8S6127C19[8]),  8,10},
  {&(_tg__ZTV8S6127C13__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__8S6127C19[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C19[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C19[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C15__8S6127C19[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__8S6127C19[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__8S6127C19[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__8S6127C19[6]),  6,6},
  {&(_tg__ZTV8S6127C16__A2__8S6127C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S6127C19[];
extern  VTBL_ENTRY _ZTV8S6127C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C19[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C5D0Ev,_ZThn20_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C5D1Ev,_ZThn20_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C15D0Ev,_ZThn12_N8S6127C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6127C15D1Ev,_ZThn12_N8S6127C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C21D0Ev,_ZThn80_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C21D0Ev,_ZThn52_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C21D1Ev,_ZThn80_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C21D1Ev,_ZThn52_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C21D0Ev,_ZThn88_N8S6127C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C21D0Ev,_ZThn60_N8S6127C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C21D1Ev,_ZThn88_N8S6127C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C21D1Ev,_ZThn60_N8S6127C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C4D0Ev,_ZThn76_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn48_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C4D1Ev,_ZThn76_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn48_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C4D0Ev,_ZThn84_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6127C4D0Ev,_ZThn56_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C4D1Ev,_ZThn84_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6127C4D1Ev,_ZThn56_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C17D0Ev,_ZThn56_N8S6127C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6127C17D0Ev,_ZThn76_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C17D1Ev,_ZThn56_N8S6127C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S6127C17D1Ev,_ZThn76_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C19D0Ev,_ZThn88_N8S6127C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C19D0Ev,_ZThn60_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6127C19D1Ev,_ZThn88_N8S6127C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C19D1Ev,_ZThn60_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C19D0Ev,_ZThn80_N8S6127C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C19D0Ev,_ZThn52_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C19D1Ev,_ZThn80_N8S6127C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S6127C19D1Ev,_ZThn52_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C19 = {  "S6127C19", // class name
  bases_S6127C19, 56,
  &(vtc_S6127C19[0]), // expected_vtbl_contents
  &(vtt_S6127C19[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S6127C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6127C19),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6127C19),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6127C1  : S7856C24 , S6127C3 , virtual S6127C19 {
  long double s6127c1f0;
  virtual  ~S6127C1(); // _ZN7S6127C1D2Ev
  S6127C1(); // tgen
};
//SIG(1 S6127C1) C1{ BC2{ m} BC3{ VBC4{ VBC5{ VBC6{ VBC7{ m} VBC8{ m} VBC9{ BC7 VBC10{ VBC7 BC8 VBC11{ m}} VBC8} BC11 BC12{ BC8 VBC7 VBC11 BC10 VBC9 vd} vd} VBC13{ BC11 BC8 BC10 Fi} VBC12 vd Fi[2]} VBC14{ m} VBC15{ VBC10 VBC16{ VBC8} VBC13 BC11 VBC6 vd Fi} BC17{ VBC12 BC13 BC9 BC11 vd} vd} BC7 BC9 BC18{ BC14 VBC7 BC5 VBC17 vd v1} vd} VBC19{ VBC20{ BC8 BC16 vd} VBC6 BC21{ BC16 VBC11 BC4 BC20 vd} BC17 BC15 vd} vd FD}


 S6127C1 ::~S6127C1(){ note_dtor("S6127C1", this);}
S6127C1 ::S6127C1(){ note_ctor("S6127C1", this);} // tgen

static void Test_S6127C1()
{
  extern Class_Descriptor cd_S6127C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S6127C1, buf);
    S6127C1 *dp, &lv = *(dp=new (buf) S6127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S6127C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6127C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C12*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C12*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C18*)(S6127C3*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(105,61), "S6127C1");
    check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(105,61), "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*), 0, "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*), 0, "S6127C1");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C12*)(S6127C16*)(S6127C20*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C9*)(S6127C17*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*)(S6127C6*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C12*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C12*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*), 0, "S6127C1");
    /*is_ambiguous_... S6127C21::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C3*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C15*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C9*)(S6127C6*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C9*)(S6127C12*)(S6127C6*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C12*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C6::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*)(S6127C6*), ABISELECT(104,60), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C12::S6127C10 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C12*)(S6127C6*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C5*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C6*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(96,56), "S6127C1");
    check_base_class_offset(lv, (S6127C6*)(S6127C19*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C6*)(S6127C15*)(S6127C19*), ABISELECT(96,56), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*), ABISELECT(120,68), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C13 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C5*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*), ABISELECT(112,64), "S6127C1");
    check_base_class_offset(lv, (S6127C13*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C15*)(S6127C19*), ABISELECT(112,64), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C12*), ABISELECT(136,76), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C12*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C12*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C5 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C5::S6127C12 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*), ABISELECT(128,72), "S6127C1");
    check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C12*)(S6127C17*)(S6127C19*), ABISELECT(128,72), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C5*)(S6127C4*), ABISELECT(80,44), "S6127C1");
    check_base_class_offset(lv, (S6127C5*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(80,44), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S6127C4*), 0, "S6127C1");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C4*)(S6127C21*)(S6127C19*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C15*)(S6127C19*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C15*)(S6127C4*), ABISELECT(144,80), "S6127C1");
    check_base_class_offset(lv, (S6127C15*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(144,80), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(56,32), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(64,36), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*), ABISELECT(64,36), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*), ABISELECT(72,40), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C4 */ AMB_check_base_class_offset(lv, (S6127C17*)(S6127C4*), ABISELECT(48,28), "S6127C1");
    check_base_class_offset(lv, (S6127C4*)(S6127C3*), ABISELECT(48,28), "S6127C1");
    /*is_ambiguous_... S6127C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C3::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C3*), 0, "S6127C1");
    check_base_class_offset(lv, (S77C13_nt*)(S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    check_base_class_offset(lv, (S6127C5*)(S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*), ABISELECT(168,92), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*), ABISELECT(160,88), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*), ABISELECT(176,96), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*), ABISELECT(176,96), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*), ABISELECT(184,100), "S6127C1");
    check_base_class_offset(lv, (S6127C17*)(S6127C18*)(S6127C3*), ABISELECT(160,88), "S6127C1");
    check_base_class_offset(lv, (S6127C18*)(S6127C3*), ABISELECT(8,4), "S6127C1");
    check_base_class_offset(lv, (S6127C3*), 0, "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C1::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C20*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C20 */ AMB_check_base_class_offset(lv, (S6127C20*)(S6127C19*), ABISELECT(288,152), "S6127C1");
    /*is_ambiguous_... S6127C21::S6127C16 */ AMB_check_base_class_offset(lv, (S6127C16*)(S6127C21*)(S6127C19*), ABISELECT(192,104), "S6127C1");
    /*is_ambiguous_... S6127C13::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(208,112), "S6127C1");
    check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(216,116), "S6127C1");
    /*is_ambiguous_... S6127C17::S6127C9 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(216,116), "S6127C1");
    /*is_ambiguous_... S6127C17::S7856C9_nt */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(224,120), "S6127C1");
    check_base_class_offset(lv, (S6127C17*)(S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    check_base_class_offset(lv, (S6127C4*)(S6127C21*)(S6127C19*), ABISELECT(200,108), "S6127C1");
    /*is_ambiguous_... S6127C20::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C16*)(S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C20*)(S6127C21*)(S6127C19*), ABISELECT(232,124), "S6127C1");
    check_base_class_offset(lv, (S6127C21*)(S6127C19*), ABISELECT(192,104), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(248,132), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C10*)(S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C13*)(S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C15*)(S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(256,136), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C9*)(S6127C17*)(S6127C19*), ABISELECT(256,136), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C17*)(S6127C19*), ABISELECT(264,140), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C17 */ AMB_check_base_class_offset(lv, (S6127C17*)(S6127C19*), ABISELECT(240,128), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S6127C15*)(S6127C19*), ABISELECT(272,144), "S6127C1");
    /*is_ambiguous_... S6127C19::S6127C15 */ AMB_check_base_class_offset(lv, (S6127C15*)(S6127C19*), ABISELECT(272,144), "S6127C1");
    check_base_class_offset(lv, (S6127C19*), ABISELECT(192,104), "S6127C1");
    check_field_offset(lv, s6127c1f0, ABISELECT(32,16), "S6127C1.s6127c1f0");
    test_class_info(&lv, &cd_S6127C1);
    dp->~S6127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6127C1(Test_S6127C1, "S6127C1", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN7S6127C1C1Ev();
extern void _ZN7S6127C1D2Ev();
Name_Map name_map_S6127C1[] = {
  NSPAIR(_ZN7S6127C1C1Ev),
  NSPAIR(_ZN7S6127C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C6;
extern VTBL_ENTRY _ZTI7S6127C6[];
extern  VTBL_ENTRY _ZTV7S6127C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C6[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C12;
extern VTBL_ENTRY _ZTI8S6127C12[];
extern  VTBL_ENTRY _ZTV8S6127C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C12[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S6127C5;
extern VTBL_ENTRY _ZTI7S6127C5[];
extern  VTBL_ENTRY _ZTV7S6127C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C5[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C18;
extern VTBL_ENTRY _ZTI8S6127C18[];
extern  VTBL_ENTRY _ZTV8S6127C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C18[];
extern Class_Descriptor cd_S6127C3;
extern VTBL_ENTRY _ZTI7S6127C3[];
extern  VTBL_ENTRY _ZTV7S6127C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S6127C4;
extern VTBL_ENTRY _ZTI7S6127C4[];
extern  VTBL_ENTRY _ZTV7S6127C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C16;
extern VTBL_ENTRY _ZTI8S6127C16[];
extern  VTBL_ENTRY _ZTV8S6127C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C16[];
extern Class_Descriptor cd_S6127C20;
extern VTBL_ENTRY _ZTI8S6127C20[];
extern  VTBL_ENTRY _ZTV8S6127C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C20[];
extern Class_Descriptor cd_S6127C21;
extern VTBL_ENTRY _ZTI8S6127C21[];
extern  VTBL_ENTRY _ZTV8S6127C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C21[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S6127C10;
extern VTBL_ENTRY _ZTI8S6127C10[];
extern  VTBL_ENTRY _ZTV8S6127C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C10[];
extern Class_Descriptor cd_S6127C13;
extern VTBL_ENTRY _ZTI8S6127C13[];
extern  VTBL_ENTRY _ZTV8S6127C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S6127C9;
extern VTBL_ENTRY _ZTI7S6127C9[];
extern  VTBL_ENTRY _ZTV7S6127C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C17;
extern VTBL_ENTRY _ZTI8S6127C17[];
extern  VTBL_ENTRY _ZTV8S6127C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S6127C15;
extern VTBL_ENTRY _ZTI8S6127C15[];
extern  VTBL_ENTRY _ZTV8S6127C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C15[];
extern Class_Descriptor cd_S6127C19;
extern VTBL_ENTRY _ZTI8S6127C19[];
extern  VTBL_ENTRY _ZTV8S6127C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6127C19[];
static Base_Class bases_S6127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(80,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, 0},
  {&cd_S7856C12,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6127C10,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6127C9,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6127C6,    ABISELECT(96,56), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(112,64), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    21, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6127C12,    ABISELECT(128,72), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6127C5,    ABISELECT(80,44), //bcp->offset
    57, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S6127C16,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C9_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
    27, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(144,80), //bcp->offset
    94, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    34, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(64,36), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    36, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6127C9,    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
    39, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    52, //immediately_derived
  0, 0},
  {&cd_S6127C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    47, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    49, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(176,96), //bcp->offset
    118, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(160,88), //bcp->offset
    107, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S6127C18,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S6127C3,    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
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    ABISELECT(288,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
    56, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(288,152), //bcp->offset
    197, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    83, //immediately_derived
  0, 1},
  {&cd_S6127C16,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(200,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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(208,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
    62, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    61, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    64, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(216,116), //bcp->offset
    158, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    66, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S6127C4,    ABISELECT(200,108), //bcp->offset
    142, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(232,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
    70, //immediately_derived
  0, 0},
  {&cd_S6127C16,    ABISELECT(232,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S6127C20,    ABISELECT(232,124), //bcp->offset
    164, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S6127C21,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C9_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
    76, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(248,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
    76, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    75, //immediately_derived
  0, 0},
  {&cd_S6127C10,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S6127C13,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    78, //immediately_derived
  0, 0},
  {&cd_S6127C9,    ABISELECT(256,136), //bcp->offset
    179, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(264,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
    80, //immediately_derived
  0, 0},
  {&cd_S6127C17,    ABISELECT(240,128), //bcp->offset
    169, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    ABISELECT(272,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
    82, //immediately_derived
  0, 0},
  {&cd_S6127C15,    ABISELECT(272,144), //bcp->offset
    185, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S6127C19,    ABISELECT(192,104), //bcp->offset
    124, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6127C1[];
extern void _ZN7S6127C1D1Ev();
extern void _ZN7S6127C1D0Ev();
extern void ABISELECT(_ZThn8_N7S6127C1D1Ev,_ZThn4_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C1D0Ev,_ZThn4_N7S6127C1D0Ev)();
extern void _ZN8S6127C182v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C1D1Ev,_ZThn28_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C1D0Ev,_ZThn28_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C1D1Ev,_ZThn44_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C1D0Ev,_ZThn44_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C1D1Ev,_ZThn56_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C1D0Ev,_ZThn56_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6127C1D1Ev,_ZThn72_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6127C1D0Ev,_ZThn72_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C1D1Ev,_ZThn80_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C1D0Ev,_ZThn80_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C1D1Ev,_ZThn88_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C1D0Ev,_ZThn88_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S6127C1D1Ev,_ZThn104_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S6127C1D0Ev,_ZThn104_N7S6127C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n128_N7S6127C1D1Ev,_ZTvn4_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn8_n128_N7S6127C1D0Ev,_ZTvn4_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S6127C1D1Ev,_ZTvn20_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S6127C1D0Ev,_ZTvn20_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn48_n128_N7S6127C1D1Ev,_ZTvn24_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn48_n128_N7S6127C1D0Ev,_ZTvn24_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTvn80_n128_N7S6127C1D1Ev,_ZTvn40_n64_N7S6127C1D1Ev)();
extern void ABISELECT(_ZTvn80_n128_N7S6127C1D0Ev,_ZTvn40_n64_N7S6127C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S6127C1D1Ev,_ZThn152_N7S6127C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S6127C1D0Ev,_ZThn152_N7S6127C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6127C1[] = {
  ABISELECT(288,152),
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&_ZN7S6127C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C1D0Ev,
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C1D1Ev,_ZThn4_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C1D0Ev,_ZThn4_N7S6127C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-80,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-192,-104),
  ABISELECT(96,48),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n128_N7S6127C1D1Ev,_ZTvn4_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n128_N7S6127C1D0Ev,_ZTvn4_n64_N7S6127C1D0Ev),
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S6127C1D1Ev,_ZTvn20_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S6127C1D0Ev,_ZTvn20_n64_N7S6127C1D0Ev),
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N7S6127C1D1Ev,_ZTvn24_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n128_N7S6127C1D0Ev,_ZTvn24_n64_N7S6127C1D0Ev),
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N7S6127C1D1Ev,_ZTvn40_n64_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n128_N7S6127C1D0Ev,_ZTvn40_n64_N7S6127C1D0Ev),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI7S6127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6127C1[];
extern void _ZN7S6127C3D1Ev();
extern void _ZN7S6127C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C3__7S6127C1[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,64),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&_ZN7S6127C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C97S6127C3__A2__7S6127C1[] = {
  0,
  ABISELECT(80,44),
  0,
  ABISELECT(105,61),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C97S6127C3__A2__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void _ZN8S6127C18D1Ev();
extern void _ZN8S6127C18D0Ev();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&_ZN8S6127C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C18D0Ev,
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S6127C5D1Ev,_ZThn52_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S6127C5D0Ev,_ZThn52_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn120_N7S6127C5D1Ev,_ZThn68_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn120_N7S6127C5D0Ev,_ZThn68_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C58S6127C187S6127C3__A1__7S6127C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S6127C18D1Ev,_ZThn52_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S6127C18D0Ev,_ZThn52_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn120_N8S6127C18D1Ev,_ZThn68_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn120_N8S6127C18D0Ev,_ZThn68_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev)();
extern void ABISELECT(_ZThn152_N8S6127C18D1Ev,_ZThn84_N8S6127C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev)();
extern void ABISELECT(_ZThn152_N8S6127C18D0Ev,_ZThn84_N8S6127C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__8S6127C187S6127C3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S6127C18[0]),
};
extern void ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C3D1Ev,_ZThn28_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C3D0Ev,_ZThn28_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C3__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C3__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C3D1Ev,_ZThn56_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C3D0Ev,_ZThn56_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C3__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C3__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S6127C3D1Ev,_ZThn72_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S6127C3D0Ev,_ZThn72_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S6127C3D1Ev,_ZThn80_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S6127C3D0Ev,_ZThn80_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C3__7S6127C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev)();
extern void _ZN8S6127C182v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C18__7S6127C3__7S6127C1[] = {
  ABISELECT(152,84),
  ABISELECT(120,68),
  ABISELECT(104,60),
  ABISELECT(72,40),
  ABISELECT(88,52),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(-8,-4),
  ABISELECT(97,57),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D1Ev,_ZThn4_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6127C3D0Ev,_ZThn4_N7S6127C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6127C182v1Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev)();
extern void ABISELECT(_ZThn160_N7S6127C3D1Ev,_ZThn88_N7S6127C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev)();
extern void ABISELECT(_ZThn160_N7S6127C3D0Ev,_ZThn88_N7S6127C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C3__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6127C3[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C4__7S6127C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-48,-28),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(57,33),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C4__7S6127C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C4__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C4__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C4__7S6127C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN7S6127C5D1Ev();
extern void _ZN7S6127C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&_ZN7S6127C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C5D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C5__7S6127C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C5__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C5__7S6127C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6127C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev),
};
extern void _ZN7S6127C6D1Ev();
extern void _ZN7S6127C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
  (VTBL_ENTRY)&_ZN7S6127C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C6D0Ev,
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C127S6127C6__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C6__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6127C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C13__A2__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
extern void _ZN8S6127C12D1Ev();
extern void _ZN8S6127C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
  (VTBL_ENTRY)&_ZN8S6127C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C12__A3__7S6127C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S6127C12[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C15__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C15__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C15__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__7S6127C1[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C17__A2__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A3__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(32,16),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-96,-52),
  ABISELECT(-176,-96),
  ABISELECT(-71,-35),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C19D1Ev();
extern void _ZN8S6127C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&_ZN8S6127C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C19D0Ev,
};
extern void _ZN8S6127C21D1Ev();
extern void _ZN8S6127C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-192,-104),
  ABISELECT(-64,-32),
  ABISELECT(-80,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-87,-43),
  ABISELECT(-96,-48),
  ABISELECT(-112,-60),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&_ZN8S6127C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void _ZN7S6127C4D1Ev();
extern void _ZN7S6127C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&_ZN7S6127C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6127C4D0Ev,
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C177S6127C48S6127C218S6127C19__A3__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C218S6127C19__A6__7S6127C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(72,36),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(120,64),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(104,52),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(72,36),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev)();
extern void ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6127C4[0]),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C218S6127C19__A1__7S6127C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C208S6127C218S6127C19__A3__7S6127C1[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
extern void ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C4__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D1Ev,_ZThn4_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C21D0Ev,_ZThn4_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(64,32),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D1Ev,_ZTv0_n32_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C21D0Ev,_ZTv0_n32_N8S6127C21D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D1Ev,_ZTv0_n44_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C21D0Ev,_ZTv0_n44_N8S6127C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C218S6127C19__7S6127C1[] = {
  ABISELECT(-232,-124),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D1Ev,_ZThn20_N8S6127C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C21D0Ev,_ZThn20_N8S6127C21D0Ev),
};
extern void _ZN8S6127C17D1Ev();
extern void _ZN8S6127C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&_ZN8S6127C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C138S6127C178S6127C19__A4__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C108S6127C138S6127C178S6127C19__A7__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C178S6127C19__A5__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  0,
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C10__7S6127C98S6127C178S6127C19__A5__7S6127C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S6127C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(112,56),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__A__8S6127C178S6127C19__A3__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6127C17[0]),
};
extern void _ZN8S6127C15D1Ev();
extern void _ZN8S6127C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&_ZN8S6127C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C16__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(160,80),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C158S6127C19__A1__7S6127C1[] = {
  ABISELECT(176,88),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(176,88),
  (VTBL_ENTRY)&(_ZTI8S6127C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D1Ev,_ZTv0_n32_N8S6127C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C15D0Ev,_ZTv0_n32_N8S6127C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6127C20__8S6127C19__7S6127C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-288,-152),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C6__8S6127C19__7S6127C1[] = {
  ABISELECT(96,48),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-96,-56),
  ABISELECT(9,5),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C5__8S6127C19__7S6127C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-80,-44),
  ABISELECT(25,17),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6127C48S6127C21__8S6127C19__7S6127C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-104,-52),
  ABISELECT(-120,-64),
  ABISELECT(-200,-108),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(-72,-36),
  ABISELECT(-200,-108),
  ABISELECT(-95,-47),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D1Ev,_ZThn4_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S6127C19D0Ev,_ZThn4_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S6127C13__8S6127C19__7S6127C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-7,-3),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C12__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(64,32),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  ABISELECT(-23,-11),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D1Ev,_ZTv0_n32_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6127C19D0Ev,_ZTv0_n32_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__8S6127C19__7S6127C1[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-144,-80),
  ABISELECT(-39,-19),
  ABISELECT(-64,-36),
  ABISELECT(-144,-80),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D1Ev,_ZTv0_n44_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S6127C19D0Ev,_ZTv0_n44_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-216,-116),
  ABISELECT(-136,-72),
  ABISELECT(-216,-116),
  ABISELECT(-111,-55),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C208S6127C21__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-232,-124),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D1Ev,_ZThn20_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6127C19D0Ev,_ZThn20_N8S6127C19D0Ev),
};
extern void ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C17__A1__8S6127C19__7S6127C1[] = {
  ABISELECT(-240,-128),
  ABISELECT(-160,-84),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  ABISELECT(-240,-128),
  ABISELECT(-135,-67),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D1Ev,_ZThn24_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6127C19D0Ev,_ZThn24_N8S6127C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6127C98S6127C17__A2__8S6127C19__7S6127C1[] = {
  ABISELECT(-256,-136),
  ABISELECT(-176,-92),
  ABISELECT(-256,-136),
  ABISELECT(-151,-75),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
};
extern void ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6127C15__A__8S6127C19__7S6127C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-176,-88),
  ABISELECT(-160,-80),
  ABISELECT(-128,-64),
  ABISELECT(-272,-144),
  ABISELECT(-167,-83),
  ABISELECT(-192,-100),
  ABISELECT(-272,-144),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S6127C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D1Ev,_ZThn40_N8S6127C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S6127C19D0Ev,_ZThn40_N8S6127C19D0Ev),
};
extern void _ZN8S6127C20D1Ev();
extern void _ZN8S6127C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6127C20__7S6127C1[] = {
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C20[0]),
  (VTBL_ENTRY)&_ZN8S6127C20D1Ev,
  (VTBL_ENTRY)&_ZN8S6127C20D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S6127C168S6127C20__A1__7S6127C1[] = {
  ABISELECT(-288,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S6127C16[0]),
};
static  VTT_ENTRY vtt_S6127C1[] = {
  {&(_ZTV7S6127C1[18]),  18,203},
  {&(_tg__ZTV7S6127C3__7S6127C1[16]),  16,18},
  {&(_tg__ZTV7S6127C97S6127C3__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C97S6127C3__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C187S6127C3__7S6127C1[11]),  11,14},
  {&(_tg__ZTV7S6127C58S6127C187S6127C3__A1__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C58S6127C187S6127C3__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C58S6127C187S6127C3__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C13__7S6127C58S6127C187S6127C3__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C58S6127C187S6127C3__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C6__8S6127C187S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C13__8S6127C187S6127C3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C187S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C17__8S6127C187S6127C3__7S6127C1[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A1__8S6127C187S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C4__7S6127C3__7S6127C1[15]),  15,17},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C3__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C18__7S6127C3__7S6127C1[11]),  11,14},
  {&(_tg__ZTV8S6127C17__A1__7S6127C3__7S6127C1[9]),  9,11},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C3__7S6127C1[6]),  6,6},
  {&(_ZTV7S6127C1[49]),  49,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[78]),  78,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[68]),  68,203},
  {&(_ZTV7S6127C1[84]),  84,203},
  {&(_ZTV7S6127C1[92]),  92,203},
  {&(_ZTV7S6127C1[105]),  105,203},
  {&(_ZTV7S6127C1[105]),  105,203},
  {&(_ZTV7S6127C1[57]),  57,203},
  {&(_ZTV7S6127C1[31]),  31,203},
  {&(_ZTV7S6127C1[116]),  116,203},
  {&(_ZTV7S6127C1[124]),  124,203},
  {&(_ZTV7S6127C1[140]),  140,203},
  {&(_ZTV7S6127C1[201]),  201,203},
  {&(_ZTV7S6127C1[156]),  156,203},
  {&(_ZTV7S6127C1[164]),  164,203},
  {&(_ZTV7S6127C1[167]),  167,203},
  {&(_ZTV7S6127C1[177]),  177,203},
  {&(_ZTV7S6127C1[185]),  185,203},
  {&(_ZTV7S6127C1[195]),  195,203},
  {&(_tg__ZTV7S6127C4__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C4__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C4__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C4__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C4__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C4__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C6__7S6127C5__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C5__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C13__7S6127C5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C5__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C6__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C127S6127C6__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C127S6127C6__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C127S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C6__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C13__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C13__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C1[7]),  7,9},
  {&(_tg__ZTV8S6127C108S6127C12__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C12__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C13__8S6127C15__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C15__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C15__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C16__7S6127C1[3]),  3,3},
  {&(_tg__ZTV8S6127C17__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C17__A2__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C17__A5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C17__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C17__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C17__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C17__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C19__7S6127C1[15]),  15,17},
  {&(_tg__ZTV8S6127C218S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C168S6127C218S6127C19__A2__7S6127C1[3]),  3,3},
  {&(_tg__ZTV7S6127C48S6127C218S6127C19__A1__7S6127C1[14]),  14,16},
  {&(_tg__ZTV8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C177S6127C48S6127C218S6127C19__A3__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C177S6127C48S6127C218S6127C19__A6__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C177S6127C48S6127C218S6127C19__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C177S6127C48S6127C218S6127C19__A2__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__7S6127C48S6127C218S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__7S6127C48S6127C218S6127C19__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__7S6127C48S6127C218S6127C19__A1__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C17__A1__7S6127C48S6127C218S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C218S6127C19__A1__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C208S6127C218S6127C19__A3__7S6127C1[3]),  3,3},
  {&(_tg__ZTV7S6127C4__8S6127C218S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C6__8S6127C218S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C218S6127C19__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C218S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C218S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C4__A1__8S6127C218S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C218S6127C19__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C178S6127C19__A3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C138S6127C178S6127C19__A4__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C108S6127C138S6127C178S6127C19__A7__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C98S6127C178S6127C19__A5__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C10__7S6127C98S6127C178S6127C19__A5__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__8S6127C178S6127C19__A3__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV7S6127C9__A__8S6127C178S6127C19__A3__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C158S6127C19__A1__7S6127C1[10]),  10,12},
  {&(_tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C16__8S6127C158S6127C19__A1__7S6127C1[3]),  3,3},
  {&(_tg__ZTV8S6127C13__8S6127C158S6127C19__A1__7S6127C1[4]),  4,4},
  {&(_tg__ZTV7S6127C6__8S6127C158S6127C19__A1__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C9__8S6127C158S6127C19__A1__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C20__8S6127C19__7S6127C1[4]),  4,6},
  {&(_tg__ZTV7S6127C6__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C48S6127C21__8S6127C19__7S6127C1[14]),  14,16},
  {&(_tg__ZTV7S6127C5__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C13__8S6127C19__7S6127C1[4]),  4,4},
  {&(_tg__ZTV8S6127C12__A1__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV8S6127C15__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV8S6127C15__8S6127C19__7S6127C1[11]),  11,13},
  {&(_tg__ZTV7S6127C98S6127C177S6127C48S6127C21__A1__8S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C208S6127C21__A1__8S6127C19__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C17__A1__8S6127C19__7S6127C1[8]),  8,10},
  {&(_tg__ZTV7S6127C98S6127C17__A2__8S6127C19__7S6127C1[6]),  6,6},
  {&(_tg__ZTV8S6127C15__A__8S6127C19__7S6127C1[10]),  10,12},
  {&(_tg__ZTV8S6127C20__7S6127C1[3]),  3,5},
  {&(_tg__ZTV8S6127C168S6127C20__A1__7S6127C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6127C1[];
extern  VTBL_ENTRY _ZTV7S6127C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6127C1[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D0Ev,_ZTv0_n16_N8S6127C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D0Ev,_ZThn48_N8S6127C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6127C19D1Ev,_ZTv0_n16_N8S6127C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S6127C19D1Ev,_ZThn48_N8S6127C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D0Ev,_ZTv0_n32_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D0Ev,_ZThn44_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D0Ev,_ZThn28_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C4D1Ev,_ZTv0_n32_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C4D1Ev,_ZThn44_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C4D1Ev,_ZThn28_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D0Ev,_ZTv0_n44_N7S6127C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D0Ev,_ZThn52_N7S6127C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D0Ev,_ZThn16_N7S6127C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C4D1Ev,_ZTv0_n44_N7S6127C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C4D1Ev,_ZThn52_N7S6127C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S6127C4D1Ev,_ZThn16_N7S6127C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D0Ev,_ZTv0_n32_N8S6127C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D0Ev,_ZThn44_N8S6127C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C17D1Ev,_ZTv0_n32_N8S6127C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6127C17D1Ev,_ZThn44_N8S6127C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D0Ev,_ZTv0_n36_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C3D0Ev,_ZThn88_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C3D1Ev,_ZTv0_n36_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C3D1Ev,_ZThn88_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D0Ev,_ZTv0_n32_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C3D0Ev,_ZThn72_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C3D0Ev,_ZThn56_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C3D1Ev,_ZTv0_n32_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C3D1Ev,_ZThn72_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C3D1Ev,_ZThn56_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D0Ev,_ZTv0_n44_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C3D0Ev,_ZThn80_N7S6127C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C3D0Ev,_ZThn44_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C3D1Ev,_ZTv0_n44_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C3D1Ev,_ZThn80_N7S6127C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C3D1Ev,_ZThn44_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D0Ev,_ZTv0_n60_N7S6127C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C3D0Ev,_ZThn28_N7S6127C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C3D1Ev,_ZTv0_n60_N7S6127C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C3D1Ev,_ZThn28_N7S6127C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D0Ev,_ZTv0_n36_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C18D0Ev,_ZThn84_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6127C18D1Ev,_ZTv0_n36_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6127C18D1Ev,_ZThn84_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D0Ev,_ZTv0_n32_N8S6127C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C18D0Ev,_ZThn68_N8S6127C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C18D0Ev,_ZThn52_N8S6127C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6127C18D1Ev,_ZTv0_n32_N8S6127C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6127C18D1Ev,_ZThn68_N8S6127C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6127C18D1Ev,_ZThn52_N8S6127C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D0Ev,_ZTv0_n32_N7S6127C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D0Ev,_ZThn28_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D0Ev,_ZThn12_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C5D0Ev,_ZThn68_N7S6127C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C5D0Ev,_ZThn52_N7S6127C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C5D1Ev,_ZTv0_n32_N7S6127C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C5D1Ev,_ZThn28_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6127C5D1Ev,_ZThn12_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S6127C5D1Ev,_ZThn68_N7S6127C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6127C5D1Ev,_ZThn52_N7S6127C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6127C1D0Ev,_ZTv0_n16_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6127C1D0Ev,_ZThn152_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6127C1D1Ev,_ZTv0_n16_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6127C1D1Ev,_ZThn152_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S6127C1D0Ev,_ZTv0_n64_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6127C1D0Ev,_ZThn104_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S6127C1D1Ev,_ZTv0_n64_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6127C1D1Ev,_ZThn104_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C1D0Ev,_ZTv0_n36_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C1D0Ev,_ZThn88_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6127C1D1Ev,_ZTv0_n36_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S6127C1D1Ev,_ZThn88_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C1D0Ev,_ZTv0_n32_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C1D0Ev,_ZThn72_N7S6127C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C1D0Ev,_ZThn56_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6127C1D1Ev,_ZTv0_n32_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6127C1D1Ev,_ZThn72_N7S6127C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6127C1D1Ev,_ZThn56_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C1D0Ev,_ZTv0_n44_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C1D0Ev,_ZThn80_N7S6127C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C1D0Ev,_ZThn44_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6127C1D1Ev,_ZTv0_n44_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6127C1D1Ev,_ZThn80_N7S6127C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6127C1D1Ev,_ZThn44_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C1D0Ev,_ZTv0_n60_N7S6127C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C1D0Ev,_ZThn28_N7S6127C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S6127C1D1Ev,_ZTv0_n60_N7S6127C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6127C1D1Ev,_ZThn28_N7S6127C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6127C1 = {  "S6127C1", // class name
  bases_S6127C1, 84,
  &(vtc_S6127C1[0]), // expected_vtbl_contents
  &(vtt_S6127C1[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI7S6127C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6127C1),203, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6127C1),176, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21091C4  {
  virtual void  v6(); // _ZN8S21091C42v6Ev
  virtual void  v7(); // _ZN8S21091C42v7Ev
  ~S21091C4(); // tgen
  S21091C4(); // tgen
};
//SIG(-1 S21091C4) C1{ v1 v2}


void  S21091C4 ::v6(){vfunc_called(this, "_ZN8S21091C42v6Ev");}
void  S21091C4 ::v7(){vfunc_called(this, "_ZN8S21091C42v7Ev");}
S21091C4 ::~S21091C4(){ note_dtor("S21091C4", this);} // tgen
S21091C4 ::S21091C4(){ note_ctor("S21091C4", this);} // tgen

static void Test_S21091C4()
{
  extern Class_Descriptor cd_S21091C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21091C4, buf);
    S21091C4 *dp, &lv = *(dp=new (buf) S21091C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21091C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C4)");
    test_class_info(&lv, &cd_S21091C4);
    dp->~S21091C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C4(Test_S21091C4, "S21091C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21091C4C1Ev();
extern void _ZN8S21091C4D1Ev();
Name_Map name_map_S21091C4[] = {
  NSPAIR(_ZN8S21091C4C1Ev),
  NSPAIR(_ZN8S21091C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C4[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY vtc_S21091C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C4[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
Class_Descriptor cd_S21091C4 = {  "S21091C4", // class name
  0,0,//no base classes
  &(vtc_S21091C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21091C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C4),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  S21091C6  {
  ::S7856C24 s21091c6f0;
  int s21091c6f1[4];
  virtual void  v8(); // _ZN8S21091C62v8Ev
  ~S21091C6(); // tgen
  S21091C6(); // tgen
};
//SIG(-1 S21091C6) C1{ v1 FC2{ m} Fi[4]}


void  S21091C6 ::v8(){vfunc_called(this, "_ZN8S21091C62v8Ev");}
S21091C6 ::~S21091C6(){ note_dtor("S21091C6", this);} // tgen
S21091C6 ::S21091C6(){ note_ctor("S21091C6", this);} // tgen

static void Test_S21091C6()
{
  extern Class_Descriptor cd_S21091C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21091C6, buf);
    S21091C6 *dp, &lv = *(dp=new (buf) S21091C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21091C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C6)");
    check_field_offset(lv, s21091c6f0, ABISELECT(8,4), "S21091C6.s21091c6f0");
    check_field_offset(lv, s21091c6f1, ABISELECT(12,8), "S21091C6.s21091c6f1");
    test_class_info(&lv, &cd_S21091C6);
    dp->~S21091C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C6(Test_S21091C6, "S21091C6", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S21091C6C1Ev();
extern void _ZN8S21091C6D1Ev();
Name_Map name_map_S21091C6[] = {
  NSPAIR(_ZN8S21091C6C1Ev),
  NSPAIR(_ZN8S21091C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C6[];
extern void _ZN8S21091C62v8Ev();
static  VTBL_ENTRY vtc_S21091C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C6[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
};
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
Class_Descriptor cd_S21091C6 = {  "S21091C6", // class name
  0,0,//no base classes
  &(vtc_S21091C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S21091C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C6),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  S21091C8  {
  virtual void  v9(); // _ZN8S21091C82v9Ev
  virtual void  v10(); // _ZN8S21091C83v10Ev
  ~S21091C8(); // tgen
  S21091C8(); // tgen
};
//SIG(-1 S21091C8) C1{ v1 v2}


void  S21091C8 ::v9(){vfunc_called(this, "_ZN8S21091C82v9Ev");}
void  S21091C8 ::v10(){vfunc_called(this, "_ZN8S21091C83v10Ev");}
S21091C8 ::~S21091C8(){ note_dtor("S21091C8", this);} // tgen
S21091C8 ::S21091C8(){ note_ctor("S21091C8", this);} // tgen

static void Test_S21091C8()
{
  extern Class_Descriptor cd_S21091C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21091C8, buf);
    S21091C8 *dp, &lv = *(dp=new (buf) S21091C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21091C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C8)");
    test_class_info(&lv, &cd_S21091C8);
    dp->~S21091C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C8(Test_S21091C8, "S21091C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21091C8C1Ev();
extern void _ZN8S21091C8D1Ev();
Name_Map name_map_S21091C8[] = {
  NSPAIR(_ZN8S21091C8C1Ev),
  NSPAIR(_ZN8S21091C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21091C8[];
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
static  VTBL_ENTRY vtc_S21091C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C8[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
};
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
Class_Descriptor cd_S21091C8 = {  "S21091C8", // class name
  0,0,//no base classes
  &(vtc_S21091C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21091C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21091C8),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  S21091C7  : S21091C8 {
  int s21091c7f0[5];
  void *s21091c7f1;
  __tsi64 s21091c7f2[4];
  virtual void  v11(); // _ZN8S21091C73v11Ev
  virtual void  v12(); // _ZN8S21091C73v12Ev
  virtual void  v13(); // _ZN8S21091C73v13Ev
  virtual void  v14(); // _ZN8S21091C73v14Ev
  ~S21091C7(); // tgen
  S21091C7(); // tgen
};
//SIG(-1 S21091C7) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S21091C7 ::v11(){vfunc_called(this, "_ZN8S21091C73v11Ev");}
void  S21091C7 ::v12(){vfunc_called(this, "_ZN8S21091C73v12Ev");}
void  S21091C7 ::v13(){vfunc_called(this, "_ZN8S21091C73v13Ev");}
void  S21091C7 ::v14(){vfunc_called(this, "_ZN8S21091C73v14Ev");}
S21091C7 ::~S21091C7(){ note_dtor("S21091C7", this);} // tgen
S21091C7 ::S21091C7(){ note_ctor("S21091C7", this);} // tgen

static void Test_S21091C7()
{
  extern Class_Descriptor cd_S21091C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S21091C7, buf);
    S21091C7 *dp, &lv = *(dp=new (buf) S21091C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S21091C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C7)");
    check_base_class_offset(lv, (S21091C8*), 0, "S21091C7");
    check_field_offset(lv, s21091c7f0, ABISELECT(8,4), "S21091C7.s21091c7f0");
    check_field_offset(lv, s21091c7f1, ABISELECT(32,24), "S21091C7.s21091c7f1");
    check_field_offset(lv, s21091c7f2, ABISELECT(40,28), "S21091C7.s21091c7f2");
    test_class_info(&lv, &cd_S21091C7);
    dp->~S21091C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C7(Test_S21091C7, "S21091C7", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN8S21091C7C1Ev();
extern void _ZN8S21091C7D1Ev();
Name_Map name_map_S21091C7[] = {
  NSPAIR(_ZN8S21091C7C1Ev),
  NSPAIR(_ZN8S21091C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
static Base_Class bases_S21091C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S21091C7[];
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C7[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
Class_Descriptor cd_S21091C7 = {  "S21091C7", // class name
  bases_S21091C7, 1,
  &(vtc_S21091C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI8S21091C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21091C7),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  S21091C3  : virtual S21091C4 , virtual S7856C24 , S21091C6 , S21091C7 {
  virtual void  v15(); // _ZN8S21091C33v15Ev
  virtual void  v16(); // _ZN8S21091C33v16Ev
  virtual void  v17(); // _ZN8S21091C33v17Ev
  ~S21091C3(); // tgen
  S21091C3(); // tgen
};
//SIG(-1 S21091C3) C1{ VBC2{ v4 v5} VBC3{ m} BC4{ v6 FC3 Fi[4]} BC5{ BC6{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3}


void  S21091C3 ::v15(){vfunc_called(this, "_ZN8S21091C33v15Ev");}
void  S21091C3 ::v16(){vfunc_called(this, "_ZN8S21091C33v16Ev");}
void  S21091C3 ::v17(){vfunc_called(this, "_ZN8S21091C33v17Ev");}
S21091C3 ::~S21091C3(){ note_dtor("S21091C3", this);} // tgen
S21091C3 ::S21091C3(){ note_ctor("S21091C3", this);} // tgen

static void Test_S21091C3()
{
  extern Class_Descriptor cd_S21091C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,23)];
    init_test(&cd_S21091C3, buf);
    S21091C3 *dp, &lv = *(dp=new (buf) S21091C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S21091C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C3)");
    check_base_class_offset(lv, (S21091C4*), ABISELECT(104,84), "S21091C3");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C3");
    check_base_class_offset(lv, (S21091C6*), 0, "S21091C3");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(32,24), "S21091C3");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(32,24), "S21091C3");
    test_class_info(&lv, &cd_S21091C3);
    dp->~S21091C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C3(Test_S21091C3, "S21091C3", ABISELECT(112,88));

#else // __cplusplus

extern void _ZN8S21091C3C1Ev();
extern void _ZN8S21091C3D1Ev();
Name_Map name_map_S21091C3[] = {
  NSPAIR(_ZN8S21091C3C1Ev),
  NSPAIR(_ZN8S21091C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    ABISELECT(104,84), //bcp->offset
    16, //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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21091C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21091C8,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(32,24), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C3[];
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY vtc_S21091C3[] = {
  0,
  ABISELECT(104,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  0,
  0,
  ABISELECT(-104,-84),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S21091C3[];
static  VTT_ENTRY vtt_S21091C3[] = {
  {&(_ZTV8S21091C3[4]),  4,22},
  {&(_ZTV8S21091C3[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
Class_Descriptor cd_S21091C3 = {  "S21091C3", // class name
  bases_S21091C3, 5,
  &(vtc_S21091C3[0]), // expected_vtbl_contents
  &(vtt_S21091C3[0]), // expected_vtt_contents
  ABISELECT(112,88), // object size
  NSPAIRA(_ZTI8S21091C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21091C3),22, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C3),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  S21091C2  : virtual S21091C3 {
  ::S19994C18 s21091c2f0;
  ::S21091C7 s21091c2f1;
  int s21091c2f2;
  ::S19994C7 s21091c2f3;
  virtual void  v18(); // _ZN8S21091C23v18Ev
  virtual void  v19(); // _ZN8S21091C23v19Ev
  virtual void  v20(); // _ZN8S21091C23v20Ev
  virtual void  v21(); // _ZN8S21091C23v21Ev
  ~S21091C2(); // tgen
  S21091C2(); // tgen
};
//SIG(-1 S21091C2) C1{ VBC2{ VBC3{ v5 v6} VBC4{ m} BC5{ v7 FC4 Fi[4]} BC6{ BC7{ v8 v9} v10 v11 v12 v13 Fi[5] Fp FL[4]} v14 v15 v16} v1 v2 v3 v4 FC8{ VBC9{ v20 FC10{ m} Fi[4]} BC11{ v21 v22} VBC12{ v23 v24} BC13{ BC11 VBC14{ VBC10 VBC12 BC11 VBC15{ BC12 v25 v26 v27 v28 Fi[5] Fp FL[4]} v29} BC10 BC15 BC12 v30} BC16{ v31 Fp FD[7]} v17 v18 v19 Fi} FC6 Fi FC17{ BC14 VBC16 vd v32 Fp}}


void  S21091C2 ::v18(){vfunc_called(this, "_ZN8S21091C23v18Ev");}
void  S21091C2 ::v19(){vfunc_called(this, "_ZN8S21091C23v19Ev");}
void  S21091C2 ::v20(){vfunc_called(this, "_ZN8S21091C23v20Ev");}
void  S21091C2 ::v21(){vfunc_called(this, "_ZN8S21091C23v21Ev");}
S21091C2 ::~S21091C2(){ note_dtor("S21091C2", this);} // tgen
S21091C2 ::S21091C2(){ note_ctor("S21091C2", this);} // tgen

static void Test_S21091C2()
{
  extern Class_Descriptor cd_S21091C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,145)];
    init_test(&cd_S21091C2, buf);
    S21091C2 *dp, &lv = *(dp=new (buf) S21091C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,576), "sizeof(S21091C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C2)");
    check_base_class_offset(lv, (S21091C4*)(S21091C3*), 0, "S21091C2");
    check_base_class_offset(lv, (S7856C24*)(S21091C3*), 0, "S21091C2");
    check_base_class_offset(lv, (S21091C6*)(S21091C3*), ABISELECT(672,492), "S21091C2");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C3*), ABISELECT(704,516), "S21091C2");
    check_base_class_offset(lv, (S21091C7*)(S21091C3*), ABISELECT(704,516), "S21091C2");
    check_base_class_offset(lv, (S21091C3*), ABISELECT(672,492), "S21091C2");
    check_field_offset(lv, s21091c2f0, ABISELECT(16,4), "S21091C2.s21091c2f0");
    check_field_offset(lv, s21091c2f1, ABISELECT(368,264), "S21091C2.s21091c2f1");
    check_field_offset(lv, s21091c2f2, ABISELECT(440,324), "S21091C2.s21091c2f2");
    check_field_offset(lv, s21091c2f3, ABISELECT(448,328), "S21091C2.s21091c2f3");
    test_class_info(&lv, &cd_S21091C2);
    dp->~S21091C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C2(Test_S21091C2, "S21091C2", ABISELECT(784,576));

#else // __cplusplus

extern void _ZN8S21091C2C1Ev();
extern void _ZN8S21091C2D1Ev();
Name_Map name_map_S21091C2[] = {
  NSPAIR(_ZN8S21091C2C1Ev),
  NSPAIR(_ZN8S21091C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C3;
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
static Base_Class bases_S21091C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21091C6,    ABISELECT(672,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(704,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(704,516), //bcp->offset
    31, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C3,    ABISELECT(672,492), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C2[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C2[] = {
  0,
  0,
  ABISELECT(672,492),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV8S21091C2[];
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C2[] = {
  ABISELECT(-672,-492),
  ABISELECT(-672,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C3__8S21091C2[] = {
  0,
  0,
  ABISELECT(672,492),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
static  VTT_ENTRY vtt_S21091C2[] = {
  {&(_ZTV8S21091C2[7]),  7,39},
  {&(_ZTV8S21091C2[27]),  27,39},
  {&(_ZTV8S21091C2[7]),  7,39},
  {&(_ZTV8S21091C2[33]),  33,39},
  {&(_tg__ZTV8S21091C3__8S21091C2[4]),  4,8},
  {&(_tg__ZTV8S21091C4__8S21091C3__8S21091C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21091C2[];
extern  VTBL_ENTRY _ZTV8S21091C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C2[];
Class_Descriptor cd_S21091C2 = {  "S21091C2", // class name
  bases_S21091C2, 6,
  &(vtc_S21091C2[0]), // expected_vtbl_contents
  &(vtt_S21091C2[0]), // expected_vtt_contents
  ABISELECT(784,576), // object size
  NSPAIRA(_ZTI8S21091C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21091C2),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C2),6, //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  S21091C12  {
  void *s21091c12f0;
  long double s21091c12f1[7];
  virtual void  v22(); // _ZN9S21091C123v22Ev
  ~S21091C12(); // tgen
  S21091C12(); // tgen
};
//SIG(-1 S21091C12) C1{ v1 Fp FD[7]}


void  S21091C12 ::v22(){vfunc_called(this, "_ZN9S21091C123v22Ev");}
S21091C12 ::~S21091C12(){ note_dtor("S21091C12", this);} // tgen
S21091C12 ::S21091C12(){ note_ctor("S21091C12", this);} // tgen

static void Test_S21091C12()
{
  extern Class_Descriptor cd_S21091C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S21091C12, buf);
    S21091C12 *dp, &lv = *(dp=new (buf) S21091C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S21091C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C12)");
    check_field_offset(lv, s21091c12f0, ABISELECT(8,4), "S21091C12.s21091c12f0");
    check_field_offset(lv, s21091c12f1, ABISELECT(16,8), "S21091C12.s21091c12f1");
    test_class_info(&lv, &cd_S21091C12);
    dp->~S21091C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C12(Test_S21091C12, "S21091C12", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN9S21091C12C1Ev();
extern void _ZN9S21091C12D1Ev();
Name_Map name_map_S21091C12[] = {
  NSPAIR(_ZN9S21091C12C1Ev),
  NSPAIR(_ZN9S21091C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S21091C12[];
extern void _ZN9S21091C123v22Ev();
static  VTBL_ENTRY vtc_S21091C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C12[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
};
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
Class_Descriptor cd_S21091C12 = {  "S21091C12", // class name
  0,0,//no base classes
  &(vtc_S21091C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI9S21091C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S21091C12),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  S21091C11  : virtual S7856C24 , virtual S21091C8 , S21091C4 , virtual S21091C7 {
  virtual void  v34(); // _ZN9S21091C113v34Ev
  ~S21091C11(); // tgen
  S21091C11(); // tgen
};
//SIG(-1 S21091C11) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S21091C11 ::v34(){vfunc_called(this, "_ZN9S21091C113v34Ev");}
S21091C11 ::~S21091C11(){ note_dtor("S21091C11", this);} // tgen
S21091C11 ::S21091C11(){ note_ctor("S21091C11", this);} // tgen

static void Test_S21091C11()
{
  extern Class_Descriptor cd_S21091C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S21091C11, buf);
    S21091C11 *dp, &lv = *(dp=new (buf) S21091C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S21091C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C11)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C11");
    /*is_ambiguous_... S21091C11::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*), ABISELECT(8,4), "S21091C11");
    check_base_class_offset(lv, (S21091C4*), 0, "S21091C11");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(16,8), "S21091C11");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(16,8), "S21091C11");
    test_class_info(&lv, &cd_S21091C11);
    dp->~S21091C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C11(Test_S21091C11, "S21091C11", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN9S21091C11C1Ev();
extern void _ZN9S21091C11D1Ev();
Name_Map name_map_S21091C11[] = {
  NSPAIR(_ZN9S21091C11C1Ev),
  NSPAIR(_ZN9S21091C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21091C8,    ABISELECT(8,4), //bcp->offset
    8, //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_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21091C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(16,8), //bcp->offset
    14, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C11[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C11[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C11[];
static  VTT_ENTRY vtt_S21091C11[] = {
  {&(_ZTV9S21091C11[5]),  5,28},
  {&(_ZTV9S21091C11[12]),  12,28},
  {&(_ZTV9S21091C11[22]),  22,28},
};
extern VTBL_ENTRY _ZTI9S21091C11[];
extern  VTBL_ENTRY _ZTV9S21091C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C11[];
Class_Descriptor cd_S21091C11 = {  "S21091C11", // class name
  bases_S21091C11, 5,
  &(vtc_S21091C11[0]), // expected_vtbl_contents
  &(vtt_S21091C11[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI9S21091C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21091C11),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C11),3, //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  S21091C10  : S21091C4 , virtual S21091C11 , S7856C24 , S21091C7 , S21091C8 {
  virtual void  v35(); // _ZN9S21091C103v35Ev
  ~S21091C10(); // tgen
  S21091C10(); // tgen
};
//SIG(-1 S21091C10) C1{ BC2{ v2 v3} VBC3{ VBC4{ m} VBC5{ v4 v5} BC2 VBC6{ BC5 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} BC4 BC6 BC5 v1}


void  S21091C10 ::v35(){vfunc_called(this, "_ZN9S21091C103v35Ev");}
S21091C10 ::~S21091C10(){ note_dtor("S21091C10", this);} // tgen
S21091C10 ::S21091C10(){ note_ctor("S21091C10", this);} // tgen

static void Test_S21091C10()
{
  extern Class_Descriptor cd_S21091C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S21091C10, buf);
    S21091C10 *dp, &lv = *(dp=new (buf) S21091C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S21091C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21091C10)");
    /*is_ambiguous_... S21091C10::S21091C4 */ AMB_check_base_class_offset(lv, (S21091C4*), 0, "S21091C10");
    check_base_class_offset(lv, (S7856C24*)(S21091C11*), ABISELECT(96,72), "S21091C10");
    /*is_ambiguous_... S21091C11::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C11*), ABISELECT(96,72), "S21091C10");
    check_base_class_offset(lv, (S21091C4*)(S21091C11*), ABISELECT(88,68), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(104,76), "S21091C10");
    check_base_class_offset(lv, (S21091C7*)(S21091C11*), ABISELECT(104,76), "S21091C10");
    check_base_class_offset(lv, (S21091C11*), ABISELECT(88,68), "S21091C10");
    /*is_ambiguous_... S21091C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(8,4), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C7 */ AMB_check_base_class_offset(lv, (S21091C7*), ABISELECT(8,4), "S21091C10");
    /*is_ambiguous_... S21091C10::S21091C8 */ AMB_check_base_class_offset(lv, (S21091C8*), ABISELECT(80,64), "S21091C10");
    test_class_info(&lv, &cd_S21091C10);
    dp->~S21091C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C10(Test_S21091C10, "S21091C10", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S21091C10C1Ev();
extern void _ZN9S21091C10D1Ev();
Name_Map name_map_S21091C10[] = {
  NSPAIR(_ZN9S21091C10C1Ev),
  NSPAIR(_ZN9S21091C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C11;
extern VTBL_ENTRY _ZTI9S21091C11[];
extern  VTBL_ENTRY _ZTV9S21091C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
static Base_Class bases_S21091C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21091C8,    ABISELECT(96,72), //bcp->offset
    32, //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
    6, //immediately_derived
  0, 1},
  {&cd_S21091C4,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21091C8,    ABISELECT(104,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(104,76), //bcp->offset
    38, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C11,    ABISELECT(88,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S21091C8,    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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21091C7,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21091C8,    ABISELECT(80,64), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C10[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C103v35Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C10[] = {
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(96,72),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C103v35Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI9S21091C10[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C10[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN9S21091C113v34Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C11__9S21091C10[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN9S21091C113v34Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C8__9S21091C11__9S21091C10[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C7__9S21091C11__9S21091C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21091C11[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
static  VTT_ENTRY vtt_S21091C10[] = {
  {&(_ZTV9S21091C10[6]),  6,52},
  {&(_ZTV9S21091C10[29]),  29,52},
  {&(_ZTV9S21091C10[36]),  36,52},
  {&(_ZTV9S21091C10[46]),  46,52},
  {&(_tg__ZTV9S21091C11__9S21091C10[5]),  5,8},
  {&(_tg__ZTV8S21091C8__9S21091C11__9S21091C10[4]),  4,6},
  {&(_tg__ZTV8S21091C7__9S21091C11__9S21091C10[8]),  8,14},
};
extern VTBL_ENTRY _ZTI9S21091C10[];
extern  VTBL_ENTRY _ZTV9S21091C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C10[];
Class_Descriptor cd_S21091C10 = {  "S21091C10", // class name
  bases_S21091C10, 11,
  &(vtc_S21091C10[0]), // expected_vtbl_contents
  &(vtt_S21091C10[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S21091C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21091C10),52, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C10),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21091C15  : virtual S7856C24 , S21091C12 , S21091C7 {
  int s21091c15f0[10];
  ::S21091C10 s21091c15f1;
  virtual void  v23(); // _ZN9S21091C153v23Ev
  virtual void  v24(); // _ZN9S21091C153v24Ev
  virtual void  v25(); // _ZN9S21091C153v25Ev
  virtual void  v26(); // _ZN9S21091C153v26Ev
  virtual void  v27(); // _ZN9S21091C153v27Ev
  ~S21091C15(); // tgen
  S21091C15(); // tgen
};
//SIG(-1 S21091C15) C1{ VBC2{ m} BC3{ v6 Fp FD[7]} BC4{ BC5{ v7 v8} v9 v10 v11 v12 Fi[5] Fp FL[4]} v1 v2 v3 v4 v5 Fi[10] FC6{ BC7{ v14 v15} VBC8{ VBC2 VBC5 BC7 VBC4 v16} BC2 BC4 BC5 v13}}


void  S21091C15 ::v23(){vfunc_called(this, "_ZN9S21091C153v23Ev");}
void  S21091C15 ::v24(){vfunc_called(this, "_ZN9S21091C153v24Ev");}
void  S21091C15 ::v25(){vfunc_called(this, "_ZN9S21091C153v25Ev");}
void  S21091C15 ::v26(){vfunc_called(this, "_ZN9S21091C153v26Ev");}
void  S21091C15 ::v27(){vfunc_called(this, "_ZN9S21091C153v27Ev");}
S21091C15 ::~S21091C15(){ note_dtor("S21091C15", this);} // tgen
S21091C15 ::S21091C15(){ note_ctor("S21091C15", this);} // tgen

static void Test_S21091C15()
{
  extern Class_Descriptor cd_S21091C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,83)];
    init_test(&cd_S21091C15, buf);
    S21091C15 *dp, &lv = *(dp=new (buf) S21091C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,328), "sizeof(S21091C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C15)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21091C15");
    check_base_class_offset(lv, (S21091C12*), 0, "S21091C15");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*), ABISELECT(128,92), "S21091C15");
    check_base_class_offset(lv, (S21091C7*), ABISELECT(128,92), "S21091C15");
    check_field_offset(lv, s21091c15f0, ABISELECT(200,152), "S21091C15.s21091c15f0");
    check_field_offset(lv, s21091c15f1, ABISELECT(240,192), "S21091C15.s21091c15f1");
    test_class_info(&lv, &cd_S21091C15);
    dp->~S21091C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C15(Test_S21091C15, "S21091C15", ABISELECT(416,328));

#else // __cplusplus

extern void _ZN9S21091C15C1Ev();
extern void _ZN9S21091C15D1Ev();
Name_Map name_map_S21091C15[] = {
  NSPAIR(_ZN9S21091C15C1Ev),
  NSPAIR(_ZN9S21091C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
static Base_Class bases_S21091C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21091C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S21091C8,    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
    3, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(128,92), //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 _ZTI9S21091C15[];
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C15[];
static  VTT_ENTRY vtt_S21091C15[] = {
  {&(_ZTV9S21091C15[3]),  3,17},
};
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
Class_Descriptor cd_S21091C15 = {  "S21091C15", // class name
  bases_S21091C15, 4,
  &(vtc_S21091C15[0]), // expected_vtbl_contents
  &(vtt_S21091C15[0]), // expected_vtt_contents
  ABISELECT(416,328), // object size
  NSPAIRA(_ZTI9S21091C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21091C15),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C15),1, //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  S21091C14  : virtual S21091C15 {
  int s21091c14f0[2];
  virtual void  v28(); // _ZN9S21091C143v28Ev
  virtual void  v29(); // _ZN9S21091C143v29Ev
  virtual void  v30(); // _ZN9S21091C143v30Ev
  ~S21091C14(); // tgen
  S21091C14(); // tgen
};
//SIG(-1 S21091C14) C1{ VBC2{ VBC3{ m} BC4{ v4 Fp FD[7]} BC5{ BC6{ v5 v6} v7 v8 v9 v10 Fi[5] Fp FL[4]} v11 v12 v13 v14 v15 Fi[10] FC7{ BC8{ v17 v18} VBC9{ VBC3 VBC6 BC8 VBC5 v19} BC3 BC5 BC6 v16}} v1 v2 v3 Fi[2]}


void  S21091C14 ::v28(){vfunc_called(this, "_ZN9S21091C143v28Ev");}
void  S21091C14 ::v29(){vfunc_called(this, "_ZN9S21091C143v29Ev");}
void  S21091C14 ::v30(){vfunc_called(this, "_ZN9S21091C143v30Ev");}
S21091C14 ::~S21091C14(){ note_dtor("S21091C14", this);} // tgen
S21091C14 ::S21091C14(){ note_ctor("S21091C14", this);} // tgen

static void Test_S21091C14()
{
  extern Class_Descriptor cd_S21091C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,86)];
    init_test(&cd_S21091C14, buf);
    S21091C14 *dp, &lv = *(dp=new (buf) S21091C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S21091C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C14)");
    check_base_class_offset(lv, (S7856C24*)(S21091C15*), 0, "S21091C14");
    check_base_class_offset(lv, (S21091C12*)(S21091C15*), ABISELECT(16,12), "S21091C14");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C15*), ABISELECT(144,104), "S21091C14");
    check_base_class_offset(lv, (S21091C7*)(S21091C15*), ABISELECT(144,104), "S21091C14");
    check_base_class_offset(lv, (S21091C15*), ABISELECT(16,12), "S21091C14");
    check_field_offset(lv, s21091c14f0, ABISELECT(8,4), "S21091C14.s21091c14f0");
    test_class_info(&lv, &cd_S21091C14);
    dp->~S21091C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C14(Test_S21091C14, "S21091C14", ABISELECT(432,340));

#else // __cplusplus

extern void _ZN9S21091C14C1Ev();
extern void _ZN9S21091C14D1Ev();
Name_Map name_map_S21091C14[] = {
  NSPAIR(_ZN9S21091C14C1Ev),
  NSPAIR(_ZN9S21091C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C15;
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
static Base_Class bases_S21091C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21091C12,    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_S21091C8,    ABISELECT(144,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(144,104), //bcp->offset
    28, //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
    4, //immediately_derived
  0, 0},
  {&cd_S21091C15,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21091C14[];
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C14[] = {
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV9S21091C14[];
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__9S21091C14[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
static  VTT_ENTRY vtt_S21091C14[] = {
  {&(_ZTV9S21091C14[4]),  4,36},
  {&(_ZTV9S21091C14[22]),  22,36},
  {&(_ZTV9S21091C14[30]),  30,36},
  {&(_tg__ZTV9S21091C15__9S21091C14[3]),  3,9},
};
extern VTBL_ENTRY _ZTI9S21091C14[];
extern  VTBL_ENTRY _ZTV9S21091C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C14[];
Class_Descriptor cd_S21091C14 = {  "S21091C14", // class name
  bases_S21091C14, 5,
  &(vtc_S21091C14[0]), // expected_vtbl_contents
  &(vtt_S21091C14[0]), // expected_vtt_contents
  ABISELECT(432,340), // object size
  NSPAIRA(_ZTI9S21091C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21091C14),36, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21091C14),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  S21091C1  : virtual S21091C2 , virtual S21091C14 {
  __tsi64 s21091c1f0[8];
  virtual void  v1(); // _ZN8S21091C12v1Ev
  virtual void  v2(); // _ZN8S21091C12v2Ev
  virtual void  v3(); // _ZN8S21091C12v3Ev
  virtual void  v4(); // _ZN8S21091C12v4Ev
  virtual void  v5(); // _ZN8S21091C12v5Ev
  ~S21091C1(); // tgen
  S21091C1(); // tgen
};
//SIG(1 S21091C1) C1{ VBC2{ VBC3{ VBC4{ v6 v7} VBC5{ m} BC6{ v8 FC5 Fi[4]} BC7{ BC8{ v9 v10} v11 v12 v13 v14 Fi[5] Fp FL[4]} v15 v16 v17} v18 v19 v20 v21 FC9{ VBC10{ v34 FC11{ m} Fi[4]} BC12{ v35 v36} VBC13{ v37 v38} BC14{ BC12 VBC15{ VBC11 VBC13 BC12 VBC16{ BC13 v39 v40 v41 v42 Fi[5] Fp FL[4]} v43} BC11 BC16 BC13 v44} BC17{ v45 Fp FD[7]} v31 v32 v33 Fi} FC7 Fi FC18{ BC15 VBC17 vd v46 Fp}} VBC19{ VBC20{ VBC5 BC21{ v22 Fp FD[7]} BC7 v23 v24 v25 v26 v27 Fi[10] FC22{ BC4 VBC23{ VBC5 VBC8 BC4 VBC7 v48} BC5 BC7 BC8 v47}} v28 v29 v30 Fi[2]} v1 v2 v3 v4 v5 FL[8]}


void  S21091C1 ::v1(){vfunc_called(this, "_ZN8S21091C12v1Ev");}
void  S21091C1 ::v2(){vfunc_called(this, "_ZN8S21091C12v2Ev");}
void  S21091C1 ::v3(){vfunc_called(this, "_ZN8S21091C12v3Ev");}
void  S21091C1 ::v4(){vfunc_called(this, "_ZN8S21091C12v4Ev");}
void  S21091C1 ::v5(){vfunc_called(this, "_ZN8S21091C12v5Ev");}
S21091C1 ::~S21091C1(){ note_dtor("S21091C1", this);} // tgen
S21091C1 ::S21091C1(){ note_ctor("S21091C1", this);} // tgen

static void Test_S21091C1()
{
  extern Class_Descriptor cd_S21091C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(82,247)];
    init_test(&cd_S21091C1, buf);
    S21091C1 *dp, &lv = *(dp=new (buf) S21091C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,984), "sizeof(S21091C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21091C1)");
    check_base_class_offset(lv, (S21091C4*)(S21091C3*), 0, "S21091C1");
    check_base_class_offset(lv, (S7856C24*)(S21091C3*), 0, "S21091C1");
    check_base_class_offset(lv, (S7856C24*)(S21091C15*), 0, "S21091C1");
    check_base_class_offset(lv, (S21091C6*)(S21091C3*), ABISELECT(752,560), "S21091C1");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C3*), ABISELECT(784,584), "S21091C1");
    check_base_class_offset(lv, (S21091C7*)(S21091C3*), ABISELECT(784,584), "S21091C1");
    check_base_class_offset(lv, (S21091C3*)(S21091C2*), ABISELECT(752,560), "S21091C1");
    check_base_class_offset(lv, (S21091C2*), ABISELECT(80,68), "S21091C1");
    check_base_class_offset(lv, (S21091C12*)(S21091C15*), ABISELECT(880,656), "S21091C1");
    check_base_class_offset(lv, (S21091C8*)(S21091C7*)(S21091C15*), ABISELECT(1008,748), "S21091C1");
    check_base_class_offset(lv, (S21091C7*)(S21091C15*), ABISELECT(1008,748), "S21091C1");
    check_base_class_offset(lv, (S21091C15*)(S21091C14*), ABISELECT(880,656), "S21091C1");
    check_base_class_offset(lv, (S21091C14*), ABISELECT(856,644), "S21091C1");
    check_field_offset(lv, s21091c1f0, ABISELECT(8,4), "S21091C1.s21091c1f0");
    test_class_info(&lv, &cd_S21091C1);
    dp->~S21091C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21091C1(Test_S21091C1, "S21091C1", ABISELECT(1296,984));

#else // __cplusplus

extern void _ZN8S21091C1C1Ev();
extern void _ZN8S21091C1D1Ev();
Name_Map name_map_S21091C1[] = {
  NSPAIR(_ZN8S21091C1C1Ev),
  NSPAIR(_ZN8S21091C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21091C4;
extern VTBL_ENTRY _ZTI8S21091C4[];
extern  VTBL_ENTRY _ZTV8S21091C4[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21091C6;
extern VTBL_ENTRY _ZTI8S21091C6[];
extern  VTBL_ENTRY _ZTV8S21091C6[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C3;
extern VTBL_ENTRY _ZTI8S21091C3[];
extern  VTBL_ENTRY _ZTV8S21091C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C3[];
extern Class_Descriptor cd_S21091C2;
extern VTBL_ENTRY _ZTI8S21091C2[];
extern  VTBL_ENTRY _ZTV8S21091C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C2[];
extern Class_Descriptor cd_S21091C12;
extern VTBL_ENTRY _ZTI9S21091C12[];
extern  VTBL_ENTRY _ZTV9S21091C12[];
extern Class_Descriptor cd_S21091C8;
extern VTBL_ENTRY _ZTI8S21091C8[];
extern  VTBL_ENTRY _ZTV8S21091C8[];
extern Class_Descriptor cd_S21091C7;
extern VTBL_ENTRY _ZTI8S21091C7[];
extern  VTBL_ENTRY _ZTV8S21091C7[];
extern Class_Descriptor cd_S21091C15;
extern VTBL_ENTRY _ZTI9S21091C15[];
extern  VTBL_ENTRY _ZTV9S21091C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C15[];
extern Class_Descriptor cd_S21091C14;
extern VTBL_ENTRY _ZTI9S21091C14[];
extern  VTBL_ENTRY _ZTV9S21091C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21091C14[];
static Base_Class bases_S21091C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21091C4,    0, //bcp->offset
    -1, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21091C6,    ABISELECT(752,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21091C8,    ABISELECT(784,584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(784,584), //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21091C3,    ABISELECT(752,560), //bcp->offset
    34, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21091C2,    ABISELECT(80,68), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21091C12,    ABISELECT(880,656), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21091C8,    ABISELECT(1008,748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21091C7,    ABISELECT(1008,748), //bcp->offset
    91, //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21091C15,    ABISELECT(880,656), //bcp->offset
    70, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21091C14,    ABISELECT(856,644), //bcp->offset
    60, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21091C1[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C12v1Ev();
extern void _ZN8S21091C12v2Ev();
extern void _ZN8S21091C12v3Ev();
extern void _ZN8S21091C12v4Ev();
extern void _ZN8S21091C12v5Ev();
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY vtc_S21091C1[] = {
  ABISELECT(880,656),
  ABISELECT(856,644),
  0,
  0,
  ABISELECT(752,560),
  ABISELECT(80,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21091C12v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(672,492),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
  ABISELECT(-784,-584),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
  0,
  0,
  0,
  ABISELECT(-856,-644),
  ABISELECT(24,12),
  ABISELECT(-856,-644),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-656),
  ABISELECT(-880,-656),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
  ABISELECT(-1008,-748),
  (VTBL_ENTRY)&(_ZTI8S21091C1[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern VTBL_ENTRY _ZTV8S21091C1[];
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
extern void _ZN8S21091C23v18Ev();
extern void _ZN8S21091C23v19Ev();
extern void _ZN8S21091C23v20Ev();
extern void _ZN8S21091C23v21Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C2__8S21091C1[] = {
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  ABISELECT(672,492),
  ABISELECT(-80,-68),
  ABISELECT(-80,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v18Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v19Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v20Ev,
  (VTBL_ENTRY)&_ZN8S21091C23v21Ev,
};
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C2__8S21091C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  ABISELECT(-672,-492),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C2__8S21091C1[] = {
  0,
  0,
  ABISELECT(80,68),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C78S21091C3__8S21091C2__8S21091C1[] = {
  ABISELECT(-704,-516),
  (VTBL_ENTRY)&(_ZTI8S21091C2[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern void _ZN8S21091C62v8Ev();
extern void _ZN8S21091C33v15Ev();
extern void _ZN8S21091C33v16Ev();
extern void _ZN8S21091C33v17Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C3__8S21091C1[] = {
  ABISELECT(-752,-560),
  ABISELECT(-752,-560),
  0,
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C62v8Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v15Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v16Ev,
  (VTBL_ENTRY)&_ZN8S21091C33v17Ev,
};
extern void _ZN8S21091C42v6Ev();
extern void _ZN8S21091C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C4__8S21091C3__8S21091C1[] = {
  0,
  0,
  ABISELECT(752,560),
  (VTBL_ENTRY)&(_ZTI8S21091C3[0]),
  (VTBL_ENTRY)&_ZN8S21091C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21091C42v7Ev,
};
extern void _ZN9S21091C143v28Ev();
extern void _ZN9S21091C143v29Ev();
extern void _ZN9S21091C143v30Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C14__8S21091C1[] = {
  ABISELECT(-856,-644),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C143v28Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v29Ev,
  (VTBL_ENTRY)&_ZN9S21091C143v30Ev,
};
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__9S21091C14__8S21091C1[] = {
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  ABISELECT(128,92),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-656),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
extern void _ZN8S21091C82v9Ev();
extern void _ZN8S21091C83v10Ev();
extern void _ZN8S21091C73v11Ev();
extern void _ZN8S21091C73v12Ev();
extern void _ZN8S21091C73v13Ev();
extern void _ZN8S21091C73v14Ev();
static  VTBL_ENTRY _tg__ZTV8S21091C79S21091C15__9S21091C14__8S21091C1[] = {
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S21091C14[0]),
  (VTBL_ENTRY)&_ZN8S21091C82v9Ev,
  (VTBL_ENTRY)&_ZN8S21091C83v10Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v11Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v12Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v13Ev,
  (VTBL_ENTRY)&_ZN8S21091C73v14Ev,
};
extern void _ZN9S21091C123v22Ev();
extern void _ZN9S21091C153v23Ev();
extern void _ZN9S21091C153v24Ev();
extern void _ZN9S21091C153v25Ev();
extern void _ZN9S21091C153v26Ev();
extern void _ZN9S21091C153v27Ev();
static  VTBL_ENTRY _tg__ZTV9S21091C15__8S21091C1[] = {
  ABISELECT(-880,-656),
  0,
  (VTBL_ENTRY)&(_ZTI9S21091C15[0]),
  (VTBL_ENTRY)&_ZN9S21091C123v22Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v23Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v24Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v25Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v26Ev,
  (VTBL_ENTRY)&_ZN9S21091C153v27Ev,
};
static  VTT_ENTRY vtt_S21091C1[] = {
  {&(_ZTV8S21091C1[10]),  10,99},
  {&(_ZTV8S21091C1[28]),  28,99},
  {&(_ZTV8S21091C1[48]),  48,99},
  {&(_ZTV8S21091C1[10]),  10,99},
  {&(_ZTV8S21091C1[54]),  54,99},
  {&(_ZTV8S21091C1[67]),  67,99},
  {&(_ZTV8S21091C1[85]),  85,99},
  {&(_ZTV8S21091C1[93]),  93,99},
  {&(_tg__ZTV8S21091C2__8S21091C1[7]),  7,13},
  {&(_tg__ZTV8S21091C3__8S21091C2__8S21091C1[14]),  14,18},
  {&(_tg__ZTV8S21091C4__8S21091C2__8S21091C1[4]),  4,6},
  {&(_tg__ZTV8S21091C78S21091C3__8S21091C2__8S21091C1[2]),  2,8},
  {&(_tg__ZTV8S21091C3__8S21091C1[4]),  4,8},
  {&(_tg__ZTV8S21091C4__8S21091C3__8S21091C1[4]),  4,6},
  {&(_tg__ZTV9S21091C14__8S21091C1[4]),  4,7},
  {&(_tg__ZTV9S21091C15__9S21091C14__8S21091C1[15]),  15,21},
  {&(_tg__ZTV8S21091C79S21091C15__9S21091C14__8S21091C1[2]),  2,8},
  {&(_tg__ZTV9S21091C15__8S21091C1[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S21091C1[];
extern  VTBL_ENTRY _ZTV8S21091C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21091C1[];
Class_Descriptor cd_S21091C1 = {  "S21091C1", // class name
  bases_S21091C1, 12,
  &(vtc_S21091C1[0]), // expected_vtbl_contents
  &(vtt_S21091C1[0]), // expected_vtt_contents
  ABISELECT(1296,984), // object size
  NSPAIRA(_ZTI8S21091C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21091C1),99, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21091C1),18, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7445C3  {
  void *s7445c3f0;
  short s7445c3f1;
  int s7445c3f2;
  long double s7445c3f3[8];
  int s7445c3f4;
  void  mf7445c3(); // _ZN7S7445C38mf7445c3Ev
};
//SIG(-1 S7445C3) C1{ m Fp Fs Fi FD[8] Fi}


void  S7445C3 ::mf7445c3(){}

static void Test_S7445C3()
{
  {
    init_simple_test("S7445C3");
    S7445C3 lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S7445C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C3)");
    check_field_offset(lv, s7445c3f0, 0, "S7445C3.s7445c3f0");
    check_field_offset(lv, s7445c3f1, ABISELECT(8,4), "S7445C3.s7445c3f1");
    check_field_offset(lv, s7445c3f2, ABISELECT(12,8), "S7445C3.s7445c3f2");
    check_field_offset(lv, s7445c3f3, ABISELECT(16,12), "S7445C3.s7445c3f3");
    check_field_offset(lv, s7445c3f4, ABISELECT(144,108), "S7445C3.s7445c3f4");
  }
}
static Arrange_To_Call_Me vS7445C3(Test_S7445C3, "S7445C3", ABISELECT(160,112));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S7445C3[];
VTBL_ENTRY *P__ZTI7S7445C3 = _ZTI7S7445C3; 
Class_Descriptor cd_S7445C3 = {  "S7445C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI7S7445C3),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  S7445C2  : virtual S7445C3 {
  int s7445c2f0;
  void *s7445c2f1;
  __tsi64 s7445c2f2:62;
  char s7445c2f3:4;
  virtual  ~S7445C2(); // _ZN7S7445C2D2Ev
  S7445C2(); // tgen
};
//SIG(-1 S7445C2) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4}


 S7445C2 ::~S7445C2(){ note_dtor("S7445C2", this);}
S7445C2 ::S7445C2(){ note_ctor("S7445C2", this);} // tgen

static void Test_S7445C2()
{
  extern Class_Descriptor cd_S7445C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,35)];
    init_test(&cd_S7445C2, buf);
    S7445C2 *dp, &lv = *(dp=new (buf) S7445C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S7445C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C2)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7445C2");
    check_field_offset(lv, s7445c2f0, ABISELECT(8,4), "S7445C2.s7445c2f0");
    check_field_offset(lv, s7445c2f1, ABISELECT(16,8), "S7445C2.s7445c2f1");
    set_bf_and_test(lv, s7445c2f2, ABISELECT(24,12), 0, 62, 1, "S7445C2");
    set_bf_and_test(lv, s7445c2f2, ABISELECT(24,12), 0, 62, hide_sll(1LL<<61), "S7445C2");
    set_bf_and_test(lv, s7445c2f3, ABISELECT(32,20), 0, 4, 1, "S7445C2");
    set_bf_and_test(lv, s7445c2f3, ABISELECT(32,20), 0, 4, hide_sll(1LL<<3), "S7445C2");
    test_class_info(&lv, &cd_S7445C2);
    dp->~S7445C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C2(Test_S7445C2, "S7445C2", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S7445C2C1Ev();
extern void _ZN7S7445C2D2Ev();
Name_Map name_map_S7445C2[] = {
  NSPAIR(_ZN7S7445C2C1Ev),
  NSPAIR(_ZN7S7445C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C2[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY vtc_S7445C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7445C2[];
static  VTT_ENTRY vtt_S7445C2[] = {
  {&(_ZTV7S7445C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
Class_Descriptor cd_S7445C2 = {  "S7445C2", // class name
  bases_S7445C2, 1,
  &(vtc_S7445C2[0]), // expected_vtbl_contents
  &(vtt_S7445C2[0]), // expected_vtt_contents
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S7445C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C2),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  S7445C5  : virtual S7445C3 {
  ::S7445C2 s7445c5f0[5];
  ~S7445C5(); // tgen
  S7445C5(); // tgen
};
//SIG(-1 S7445C5) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} FC3{ VBC2 vd Fi Fp FL:62 Fc:4}[5]}


S7445C5 ::~S7445C5(){ note_dtor("S7445C5", this);} // tgen
S7445C5 ::S7445C5(){ note_ctor("S7445C5", this);} // tgen

static void Test_S7445C5()
{
  extern Class_Descriptor cd_S7445C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,200)];
    init_test(&cd_S7445C5, buf);
    S7445C5 *dp, &lv = *(dp=new (buf) S7445C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,796), "sizeof(S7445C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C5)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(1056,684), "S7445C5");
    check_field_offset(lv, s7445c5f0, ABISELECT(16,4), "S7445C5.s7445c5f0");
    test_class_info(&lv, &cd_S7445C5);
    dp->~S7445C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C5(Test_S7445C5, "S7445C5", ABISELECT(1216,796));

#else // __cplusplus

extern void _ZN7S7445C5C1Ev();
extern void _ZN7S7445C5D1Ev();
Name_Map name_map_S7445C5[] = {
  NSPAIR(_ZN7S7445C5C1Ev),
  NSPAIR(_ZN7S7445C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1056,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7445C5[];
static  VTBL_ENTRY vtc_S7445C5[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern VTBL_ENTRY _ZTV7S7445C5[];
static  VTT_ENTRY vtt_S7445C5[] = {
  {&(_ZTV7S7445C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
Class_Descriptor cd_S7445C5 = {  "S7445C5", // class name
  bases_S7445C5, 1,
  &(vtc_S7445C5[0]), // expected_vtbl_contents
  &(vtt_S7445C5[0]), // expected_vtt_contents
  ABISELECT(1216,796), // object size
  NSPAIRA(_ZTI7S7445C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7445C7_nt  {
  __tsi64 s7445c7f0;
  virtual void  v5(); // _ZN10S7445C7_nt2v5Ev
  virtual void  v6(); // _ZN10S7445C7_nt2v6Ev
  ~S7445C7_nt(); // tgen
  S7445C7_nt(); // tgen
};
//SIG(-1 S7445C7_nt) C1{ v1 v2 FL}


void  S7445C7_nt ::v5(){vfunc_called(this, "_ZN10S7445C7_nt2v5Ev");}
void  S7445C7_nt ::v6(){vfunc_called(this, "_ZN10S7445C7_nt2v6Ev");}
S7445C7_nt ::~S7445C7_nt(){ note_dtor("S7445C7_nt", this);} // tgen
S7445C7_nt ::S7445C7_nt(){ note_ctor("S7445C7_nt", this);} // tgen

//skip512 S7445C7_nt

#else // __cplusplus

extern void _ZN10S7445C7_ntC1Ev();
extern void _ZN10S7445C7_ntD1Ev();
Name_Map name_map_S7445C7_nt[] = {
  NSPAIR(_ZN10S7445C7_ntC1Ev),
  NSPAIR(_ZN10S7445C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7445C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
VTBL_ENTRY *P__ZTI10S7445C7_nt = _ZTI10S7445C7_nt; 
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
Class_Descriptor cd_S7445C7_nt = {  "S7445C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7445C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S7445C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7445C7_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  S7445C6  : virtual S7445C7_nt {
  ::S7445C2 s7445c6f0;
  void *s7445c6f1;
  virtual void  v7(); // _ZN7S7445C62v7Ev
  virtual void  v8(); // _ZN7S7445C62v8Ev
  ~S7445C6(); // tgen
  S7445C6(); // tgen
};
//SIG(-1 S7445C6) C1{ VBC2{ v3 v4 FL} v1 v2 FC3{ VBC4{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp}


void  S7445C6 ::v7(){vfunc_called(this, "_ZN7S7445C62v7Ev");}
void  S7445C6 ::v8(){vfunc_called(this, "_ZN7S7445C62v8Ev");}
S7445C6 ::~S7445C6(){ note_dtor("S7445C6", this);} // tgen
S7445C6 ::S7445C6(){ note_ctor("S7445C6", this);} // tgen

static void Test_S7445C6()
{
  extern Class_Descriptor cd_S7445C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,40)];
    init_test(&cd_S7445C6, buf);
    S7445C6 *dp, &lv = *(dp=new (buf) S7445C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,156), "sizeof(S7445C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C6)");
    check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(232,144), "S7445C6");
    check_field_offset(lv, s7445c6f0, ABISELECT(16,4), "S7445C6.s7445c6f0");
    check_field_offset(lv, s7445c6f1, ABISELECT(224,140), "S7445C6.s7445c6f1");
    test_class_info(&lv, &cd_S7445C6);
    dp->~S7445C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C6(Test_S7445C6, "S7445C6", ABISELECT(256,156));

#else // __cplusplus

extern void _ZN7S7445C6C1Ev();
extern void _ZN7S7445C6D1Ev();
Name_Map name_map_S7445C6[] = {
  NSPAIR(_ZN7S7445C6C1Ev),
  NSPAIR(_ZN7S7445C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
static Base_Class bases_S7445C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(232,144), //bcp->offset
    5, //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 _ZTI7S7445C6[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C6[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV7S7445C6[];
static  VTT_ENTRY vtt_S7445C6[] = {
  {&(_ZTV7S7445C6[3]),  3,11},
  {&(_ZTV7S7445C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
Class_Descriptor cd_S7445C6 = {  "S7445C6", // class name
  bases_S7445C6, 1,
  &(vtc_S7445C6[0]), // expected_vtbl_contents
  &(vtt_S7445C6[0]), // expected_vtt_contents
  ABISELECT(256,156), // object size
  NSPAIRA(_ZTI7S7445C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7445C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C6),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  S7445C8  : virtual S7445C5 , S7445C2 , S7445C7_nt , S7445C3 {
  virtual  ~S7445C8(); // _ZN7S7445C8D2Ev
  S7445C8(); // tgen
};
//SIG(-1 S7445C8) C1{ VBC2{ VBC3{ m Fp Fs Fi FD[8] Fi} FC4{ VBC3 vd Fi Fp FL:62 Fc:4}[5]} BC4 BC5{ v1 v2 FL} BC3 vd}


 S7445C8 ::~S7445C8(){ note_dtor("S7445C8", this);}
S7445C8 ::S7445C8(){ note_ctor("S7445C8", this);} // tgen

static void Test_S7445C8()
{
  extern Class_Descriptor cd_S7445C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,237)];
    init_test(&cd_S7445C8, buf);
    S7445C8 *dp, &lv = *(dp=new (buf) S7445C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,944), "sizeof(S7445C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C8)");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1280,832), "S7445C8");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1280,832), "S7445C8");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(224,148), "S7445C8");
    check_base_class_offset(lv, (S7445C2*), 0, "S7445C8");
    check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(40,24), "S7445C8");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(64,36), "S7445C8");
    test_class_info(&lv, &cd_S7445C8);
    dp->~S7445C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C8(Test_S7445C8, "S7445C8", ABISELECT(1440,944));

#else // __cplusplus

extern void _ZN7S7445C8C1Ev();
extern void _ZN7S7445C8D2Ev();
Name_Map name_map_S7445C8[] = {
  NSPAIR(_ZN7S7445C8C1Ev),
  NSPAIR(_ZN7S7445C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7445C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1280,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7445C5,    ABISELECT(224,148), //bcp->offset
    10, //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},
  {&cd_S7445C2,    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_S7445C7_nt,    ABISELECT(40,24), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C8[];
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C8[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern VTBL_ENTRY _ZTV7S7445C8[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__7S7445C8[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
static  VTT_ENTRY vtt_S7445C8[] = {
  {&(_ZTV7S7445C8[4]),  4,13},
  {&(_tg__ZTV7S7445C2__7S7445C8[3]),  3,5},
  {&(_ZTV7S7445C8[13]),  13,13},
  {&(_tg__ZTV7S7445C5__7S7445C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
Class_Descriptor cd_S7445C8 = {  "S7445C8", // class name
  bases_S7445C8, 5,
  &(vtc_S7445C8[0]), // expected_vtbl_contents
  &(vtt_S7445C8[0]), // expected_vtt_contents
  ABISELECT(1440,944), // object size
  NSPAIRA(_ZTI7S7445C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C8),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  S7445C4  : S7445C3 , virtual S7445C5 , virtual S7445C6 , S7445C8 {
  int s7445c4f0;
  long s7445c4f1;
  virtual  ~S7445C4(); // _ZN7S7445C4D2Ev
  virtual void  v9(); // _ZN7S7445C42v9Ev
  S7445C4(); // tgen
};
//SIG(-1 S7445C4) C1{ BC2{ m Fp Fs Fi FD[8] Fi} VBC3{ VBC2 FC4{ VBC2 vd Fi Fp FL:62 Fc:4}[5]} VBC5{ VBC6{ v2 v3 FL} v4 v5 FC4 Fp} BC7{ VBC3 BC4 BC6 BC2 vd} vd v1 Fi Fl}


 S7445C4 ::~S7445C4(){ note_dtor("S7445C4", this);}
void  S7445C4 ::v9(){vfunc_called(this, "_ZN7S7445C42v9Ev");}
S7445C4 ::S7445C4(){ note_ctor("S7445C4", this);} // tgen

static void Test_S7445C4()
{
  extern Class_Descriptor cd_S7445C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(118,306)];
    init_test(&cd_S7445C4, buf);
    S7445C4 *dp, &lv = *(dp=new (buf) S7445C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1872,1220), "sizeof(S7445C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C4)");
    /*is_ambiguous_... S7445C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(224,148), "S7445C4");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1456,952), "S7445C4");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1456,952), "S7445C4");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(400,268), "S7445C4");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(400,268), "S7445C4");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1848,1208), "S7445C4");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(1616,1064), "S7445C4");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), 0, "S7445C4");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(40,24), "S7445C4");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(64,36), "S7445C4");
    check_base_class_offset(lv, (S7445C8*), 0, "S7445C4");
    check_field_offset(lv, s7445c4f0, ABISELECT(384,260), "S7445C4.s7445c4f0");
    check_field_offset(lv, s7445c4f1, ABISELECT(392,264), "S7445C4.s7445c4f1");
    test_class_info(&lv, &cd_S7445C4);
    dp->~S7445C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C4(Test_S7445C4, "S7445C4", ABISELECT(1872,1220));

#else // __cplusplus

extern void _ZN7S7445C4C1Ev();
extern void _ZN7S7445C4D2Ev();
Name_Map name_map_S7445C4[] = {
  NSPAIR(_ZN7S7445C4C1Ev),
  NSPAIR(_ZN7S7445C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
static Base_Class bases_S7445C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(1456,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C5,    ABISELECT(400,268), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C7_nt,    ABISELECT(1848,1208), //bcp->offset
    23, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1616,1064), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(40,24), //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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C3,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7445C8,    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 _ZTI7S7445C4[];
extern void _ZN7S7445C4D1Ev();
extern void _ZN7S7445C4D0Ev();
extern void _ZN7S7445C42v9Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY vtc_S7445C4[] = {
  ABISELECT(1848,1208),
  ABISELECT(1616,1064),
  ABISELECT(400,268),
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1616,-1064),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-1848,-1208),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern VTBL_ENTRY _ZTV7S7445C4[];
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C4[] = {
  ABISELECT(400,268),
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__7S7445C4[] = {
  ABISELECT(1456,952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__7S7445C4[] = {
  ABISELECT(1056,684),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C4[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C4[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C4[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTT_ENTRY vtt_S7445C4[] = {
  {&(_ZTV7S7445C4[6]),  6,29},
  {&(_tg__ZTV7S7445C8__7S7445C4[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__7S7445C4[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__7S7445C4[3]),  3,3},
  {&(_ZTV7S7445C4[16]),  16,29},
  {&(_ZTV7S7445C4[21]),  21,29},
  {&(_ZTV7S7445C4[27]),  27,29},
  {&(_tg__ZTV7S7445C5__7S7445C4[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C4[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C4[];
extern  VTBL_ENTRY _ZTV7S7445C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C4[];
Class_Descriptor cd_S7445C4 = {  "S7445C4", // class name
  bases_S7445C4, 9,
  &(vtc_S7445C4[0]), // expected_vtbl_contents
  &(vtt_S7445C4[0]), // expected_vtt_contents
  ABISELECT(1872,1220), // object size
  NSPAIRA(_ZTI7S7445C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C4),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C4),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

union  S7445C11  {
  __tsi64 s7445c11f0;
  void *s7445c11f1;
  void  mf7445c11(); // _ZN8S7445C119mf7445c11Ev
};
//SIG(1 S7445C11) U1{ m FL Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S7445C10  : virtual S7445C7_nt , virtual S7445C6 , virtual S7445C5 , virtual S7445C8 , virtual S7445C2 {
  __tsi64 s7445c10f0;
  long double s7445c10f1;
  ::S7445C11 s7445c10f2[3];
  int s7445c10f3;
  void *s7445c10f4;
  char s7445c10f5;
  int s7445c10f6;
  __tsi64 s7445c10f7;
  virtual  ~S7445C10(); // _ZN8S7445C10D2Ev
  S7445C10(); // tgen
};
//SIG(-1 S7445C10) C1{ VBC2{ v1 v2 FL} VBC3{ VBC2 v3 v4 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC5 FC4[5]} VBC7{ VBC6 BC4 BC2 BC5 vd} VBC4 vd FL FD FU8{ m FL Fp}[3] Fi Fp Fc Fi FL}


 S7445C10 ::~S7445C10(){ note_dtor("S7445C10", this);}
S7445C10 ::S7445C10(){ note_ctor("S7445C10", this);} // tgen

static void Test_S7445C10()
{
  extern Class_Descriptor cd_S7445C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,300)];
    init_test(&cd_S7445C10, buf);
    S7445C10 *dp, &lv = *(dp=new (buf) S7445C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1196), "sizeof(S7445C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C10)");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*), ABISELECT(88,72), "S7445C10");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(88,72), "S7445C10");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(112,84), "S7445C10");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1408,912), "S7445C10");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1408,912), "S7445C10");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1408,912), "S7445C10");
    check_base_class_offset(lv, (S7445C5*), ABISELECT(352,228), "S7445C10");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(352,228), "S7445C10");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(1568,1024), "S7445C10");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(1608,1048), "S7445C10");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(1632,1060), "S7445C10");
    check_base_class_offset(lv, (S7445C8*), ABISELECT(1568,1024), "S7445C10");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), ABISELECT(1792,1172), "S7445C10");
    check_field_offset(lv, s7445c10f0, ABISELECT(8,4), "S7445C10.s7445c10f0");
    check_field_offset(lv, s7445c10f1, ABISELECT(16,12), "S7445C10.s7445c10f1");
    check_field_offset(lv, s7445c10f2, ABISELECT(32,24), "S7445C10.s7445c10f2");
    check_field_offset(lv, s7445c10f3, ABISELECT(56,48), "S7445C10.s7445c10f3");
    check_field_offset(lv, s7445c10f4, ABISELECT(64,52), "S7445C10.s7445c10f4");
    check_field_offset(lv, s7445c10f5, ABISELECT(72,56), "S7445C10.s7445c10f5");
    check_field_offset(lv, s7445c10f6, ABISELECT(76,60), "S7445C10.s7445c10f6");
    check_field_offset(lv, s7445c10f7, ABISELECT(80,64), "S7445C10.s7445c10f7");
    test_class_info(&lv, &cd_S7445C10);
    dp->~S7445C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C10(Test_S7445C10, "S7445C10", ABISELECT(1840,1196));

#else // __cplusplus

extern void _ZN8S7445C10C1Ev();
extern void _ZN8S7445C10D2Ev();
Name_Map name_map_S7445C10[] = {
  NSPAIR(_ZN8S7445C10C1Ev),
  NSPAIR(_ZN8S7445C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
static Base_Class bases_S7445C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(88,72), //bcp->offset
    10, //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_S7445C6,    ABISELECT(112,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1408,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C5,    ABISELECT(352,228), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1568,1024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(1608,1048), //bcp->offset
    35, //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1632,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C8,    ABISELECT(1568,1024), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1792,1172), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7445C10[];
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn1568_N8S7445C10D1Ev,_ZThn1024_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn1568_N8S7445C10D0Ev,_ZThn1024_N8S7445C10D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn1792_N8S7445C10D1Ev,_ZThn1172_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn1792_N8S7445C10D0Ev,_ZThn1172_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7445C10[] = {
  ABISELECT(1792,1172),
  ABISELECT(1568,1024),
  ABISELECT(1408,912),
  ABISELECT(352,228),
  ABISELECT(112,84),
  ABISELECT(88,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
  0,
  0,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  ABISELECT(1056,684),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1568,-1024),
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  ABISELECT(-1568,-1024),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
  ABISELECT(-1608,-1048),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-1792,-1172),
  ABISELECT(-384,-260),
  ABISELECT(-1792,-1172),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7445C10[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__8S7445C10[] = {
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10[] = {
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__8S7445C10[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__8S7445C10[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10[] = {
  ABISELECT(-384,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTT_ENTRY vtt_S7445C10[] = {
  {&(_ZTV8S7445C10[8]),  8,45},
  {&(_ZTV8S7445C10[14]),  14,45},
  {&(_ZTV8S7445C10[21]),  21,45},
  {&(_ZTV8S7445C10[26]),  26,45},
  {&(_ZTV8S7445C10[33]),  33,45},
  {&(_ZTV8S7445C10[37]),  37,45},
  {&(_ZTV8S7445C10[43]),  43,45},
  {&(_tg__ZTV7S7445C6__8S7445C10[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__8S7445C10[4]),  4,6},
  {&(_tg__ZTV7S7445C5__8S7445C10[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__8S7445C10[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__8S7445C10[3]),  3,3},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7445C10D0Ev,_ZThn1172_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7445C10D1Ev,_ZThn1172_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7445C10D0Ev,_ZThn1024_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7445C10D1Ev,_ZThn1024_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C10 = {  "S7445C10", // class name
  bases_S7445C10, 9,
  &(vtc_S7445C10[0]), // expected_vtbl_contents
  &(vtt_S7445C10[0]), // expected_vtt_contents
  ABISELECT(1840,1196), // object size
  NSPAIRA(_ZTI8S7445C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7445C10),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7445C10),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7445C12  : S7445C2 , S7445C3 , S7445C10 {
  ::S7445C5 s7445c12f0;
  void *s7445c12f1;
  long double s7445c12f2;
  __tsi64 s7445c12f3[9];
  void *s7445c12f4[3];
  void *s7445c12f5;
  int s7445c12f6;
  ::S7445C11 s7445c12f7;
  virtual  ~S7445C12(); // _ZN8S7445C12D2Ev
  virtual void  v10(); // _ZN8S7445C123v10Ev
  S7445C12(); // tgen
};
//SIG(-1 S7445C12) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} BC3 BC4{ VBC5{ v2 v3 FL} VBC6{ VBC5 v4 v5 FC2 Fp} VBC7{ VBC3 FC2[5]} VBC8{ VBC7 BC2 BC5 BC3 vd} VBC2 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} vd v1 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9}


 S7445C12 ::~S7445C12(){ note_dtor("S7445C12", this);}
void  S7445C12 ::v10(){vfunc_called(this, "_ZN8S7445C123v10Ev");}
S7445C12 ::S7445C12(){ note_ctor("S7445C12", this);} // tgen

static void Test_S7445C12()
{
  extern Class_Descriptor cd_S7445C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(215,562)];
    init_test(&cd_S7445C12, buf);
    S7445C12 *dp, &lv = *(dp=new (buf) S7445C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3424,2244), "sizeof(S7445C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C12)");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1680,1120), "S7445C12");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1680,1120), "S7445C12");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1680,1120), "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1680,1120), "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), 0, "S7445C12");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7445C12");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(1840,1232), "S7445C12");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1840,1232), "S7445C12");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(1856,1244), "S7445C12");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(2096,1388), "S7445C12");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(2096,1388), "S7445C12");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(3152,2072), "S7445C12");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(3192,2096), "S7445C12");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(3216,2108), "S7445C12");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(3152,2072), "S7445C12");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(3376,2220), "S7445C12");
    check_base_class_offset(lv, (S7445C10*), ABISELECT(208,136), "S7445C12");
    check_field_offset(lv, s7445c12f0, ABISELECT(304,208), "S7445C12.s7445c12f0");
    check_field_offset(lv, s7445c12f1, ABISELECT(1520,1004), "S7445C12.s7445c12f1");
    check_field_offset(lv, s7445c12f2, ABISELECT(1536,1008), "S7445C12.s7445c12f2");
    check_field_offset(lv, s7445c12f3, ABISELECT(1552,1020), "S7445C12.s7445c12f3");
    check_field_offset(lv, s7445c12f4, ABISELECT(1624,1092), "S7445C12.s7445c12f4");
    check_field_offset(lv, s7445c12f5, ABISELECT(1648,1104), "S7445C12.s7445c12f5");
    check_field_offset(lv, s7445c12f6, ABISELECT(1656,1108), "S7445C12.s7445c12f6");
    check_field_offset(lv, s7445c12f7, ABISELECT(1664,1112), "S7445C12.s7445c12f7");
    test_class_info(&lv, &cd_S7445C12);
    dp->~S7445C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C12(Test_S7445C12, "S7445C12", ABISELECT(3424,2244));

#else // __cplusplus

extern void _ZN8S7445C12C1Ev();
extern void _ZN8S7445C12D2Ev();
Name_Map name_map_S7445C12[] = {
  NSPAIR(_ZN8S7445C12C1Ev),
  NSPAIR(_ZN8S7445C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
static Base_Class bases_S7445C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1680,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7445C2,    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_S7445C3,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C7_nt,    ABISELECT(1840,1232), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1856,1244), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C5,    ABISELECT(2096,1388), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(3152,2072), //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
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(3192,2096), //bcp->offset
    46, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(3216,2108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C8,    ABISELECT(3152,2072), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(3376,2220), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(208,136), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7445C12[];
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn3152_N8S7445C12D1Ev,_ZThn2072_N8S7445C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
extern void ABISELECT(_ZThn3152_N8S7445C12D0Ev,_ZThn2072_N8S7445C12D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn3376_N8S7445C12D1Ev,_ZThn2220_N8S7445C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
extern void ABISELECT(_ZThn3376_N8S7445C12D0Ev,_ZThn2220_N8S7445C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7445C12[] = {
  ABISELECT(3376,2220),
  ABISELECT(3152,2072),
  ABISELECT(2096,1388),
  ABISELECT(1856,1244),
  ABISELECT(1840,1232),
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
  0,
  0,
  ABISELECT(-1840,-1232),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1856,-1244),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  ABISELECT(-416,-268),
  ABISELECT(-2096,-1388),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-3152,-2072),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-3152,-2072),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
  ABISELECT(-3192,-2096),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-3376,-2220),
  ABISELECT(-1696,-1100),
  ABISELECT(-3376,-2220),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7445C12[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A__8S7445C12[] = {
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12[] = {
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__8S7445C12[] = {
  0,
  0,
  ABISELECT(-1632,-1096),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__8S7445C12[] = {
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1648,-1108),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__8S7445C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(-1888,-1252),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn2944_N8S7445C10D1Ev,_ZThn1936_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn2944_N8S7445C10D0Ev,_ZThn1936_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__8S7445C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2944,-1936),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-2944,-1936),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__8S7445C12[] = {
  ABISELECT(-2984,-1960),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn3168_N8S7445C10D1Ev,_ZThn2084_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn3168_N8S7445C10D0Ev,_ZThn2084_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__8S7445C12[] = {
  ABISELECT(-3168,-2084),
  ABISELECT(-1696,-1100),
  ABISELECT(-3168,-2084),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__8S7445C12[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12[] = {
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12[] = {
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__A1__8S7445C12[] = {
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__8S7445C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(1056,684),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12[] = {
  ABISELECT(-1696,-1100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTT_ENTRY vtt_S7445C12[] = {
  {&(_ZTV8S7445C12[8]),  8,56},
  {&(_tg__ZTV7S7445C2__A__8S7445C12[3]),  3,5},
  {&(_tg__ZTV8S7445C10__8S7445C12[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__8S7445C12[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__8S7445C12[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__8S7445C12[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__8S7445C12[4]),  4,6},
  {&(_ZTV8S7445C12[19]),  19,56},
  {&(_ZTV8S7445C12[25]),  25,56},
  {&(_ZTV8S7445C12[32]),  32,56},
  {&(_ZTV8S7445C12[37]),  37,56},
  {&(_ZTV8S7445C12[44]),  44,56},
  {&(_ZTV8S7445C12[48]),  48,56},
  {&(_ZTV8S7445C12[54]),  54,56},
  {&(_tg__ZTV7S7445C6__8S7445C12[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C5__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__A1__8S7445C12[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__8S7445C12[3]),  3,3},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7445C10D0Ev,_ZThn2084_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7445C10D1Ev,_ZThn2084_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7445C10D0Ev,_ZThn1936_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7445C10D1Ev,_ZThn1936_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7445C12D0Ev,_ZThn2220_N8S7445C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7445C12D1Ev,_ZThn2220_N8S7445C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7445C12D0Ev,_ZThn2072_N8S7445C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7445C12D1Ev,_ZThn2072_N8S7445C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C12 = {  "S7445C12", // class name
  bases_S7445C12, 12,
  &(vtc_S7445C12[0]), // expected_vtbl_contents
  &(vtt_S7445C12[0]), // expected_vtt_contents
  ABISELECT(3424,2244), // object size
  NSPAIRA(_ZTI8S7445C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7445C12),56, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7445C12),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7445C9  : virtual S7445C6 , virtual S7445C8 , virtual S7445C10 , virtual S7445C12 {
  ::S20291C14_nt s7445c9f0;
  int s7445c9f1;
  int s7445c9f2[8];
  __tsi64 s7445c9f3;
  virtual  ~S7445C9(); // _ZN7S7445C9D2Ev
  virtual void  v11(); // _ZN7S7445C93v11Ev
  S7445C9(); // tgen
};
//SIG(-1 S7445C9) C1{ VBC2{ VBC3{ v2 v3 FL} v4 v5 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC7{ VBC5 FC4[5]} BC4 BC3 BC5 vd} VBC8{ VBC3 VBC2 VBC7 VBC6 VBC4 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC10{ BC4 BC5 BC8 vd v6 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9} vd v1 FC11{} Fi Fi[8] FL}


 S7445C9 ::~S7445C9(){ note_dtor("S7445C9", this);}
void  S7445C9 ::v11(){vfunc_called(this, "_ZN7S7445C93v11Ev");}
S7445C9 ::S7445C9(){ note_ctor("S7445C9", this);} // tgen

static void Test_S7445C9()
{
  extern Class_Descriptor cd_S7445C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(224,593)];
    init_test(&cd_S7445C9, buf);
    S7445C9 *dp, &lv = *(dp=new (buf) S7445C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3568,2368), "sizeof(S7445C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C9)");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(296,196), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(296,196), "S7445C9");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*)(S7445C12*), ABISELECT(296,196), "S7445C9");
    check_base_class_offset(lv, (S7445C6*), ABISELECT(64,52), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(64,52), "S7445C9");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*)(S7445C12*), ABISELECT(64,52), "S7445C9");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(1600,1040), "S7445C9");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(1600,1040), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(1600,1040), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C12*), ABISELECT(1600,1040), "S7445C9");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(544,356), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(544,356), "S7445C9");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*)(S7445C12*), ABISELECT(544,356), "S7445C9");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(320,208), "S7445C9");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(360,232), "S7445C9");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(384,244), "S7445C9");
    check_base_class_offset(lv, (S7445C8*), ABISELECT(320,208), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(320,208), "S7445C9");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*)(S7445C12*), ABISELECT(320,208), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(1848,1224), "S7445C9");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*)(S7445C12*), ABISELECT(1848,1224), "S7445C9");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C10*), ABISELECT(1760,1152), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C12*), ABISELECT(1888,1248), "S7445C9");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C12*), ABISELECT(1936,1272), "S7445C9");
    check_base_class_offset(lv, (S7445C10*)(S7445C12*), ABISELECT(2096,1384), "S7445C9");
    check_base_class_offset(lv, (S7445C12*), ABISELECT(1888,1248), "S7445C9");
    check_field_offset(lv, s7445c9f0, ABISELECT(8,4), "S7445C9.s7445c9f0");
    check_field_offset(lv, s7445c9f1, ABISELECT(12,8), "S7445C9.s7445c9f1");
    check_field_offset(lv, s7445c9f2, ABISELECT(16,12), "S7445C9.s7445c9f2");
    check_field_offset(lv, s7445c9f3, ABISELECT(48,44), "S7445C9.s7445c9f3");
    test_class_info(&lv, &cd_S7445C9);
    dp->~S7445C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C9(Test_S7445C9, "S7445C9", ABISELECT(3568,2368));

#else // __cplusplus

extern void _ZN7S7445C9C1Ev();
extern void _ZN7S7445C9D2Ev();
Name_Map name_map_S7445C9[] = {
  NSPAIR(_ZN7S7445C9C1Ev),
  NSPAIR(_ZN7S7445C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C12;
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
static Base_Class bases_S7445C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C7_nt,    ABISELECT(296,196), //bcp->offset
    20, //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_S7445C6,    ABISELECT(64,52), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1600,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C5,    ABISELECT(544,356), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(320,208), //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(360,232), //bcp->offset
    35, //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(384,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
    7, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(320,208), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1848,1224), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(1760,1152), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(1888,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1936,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C10,    ABISELECT(2096,1384), //bcp->offset
    72, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C12,    ABISELECT(1888,1248), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C9[];
extern void _ZN7S7445C9D1Ev();
extern void _ZN7S7445C9D0Ev();
extern void _ZN7S7445C93v11Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn320_N7S7445C9D1Ev,_ZThn208_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn320_N7S7445C9D0Ev,_ZThn208_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1760_N7S7445C9D1Ev,_ZThn1152_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1760_N7S7445C9D0Ev,_ZThn1152_N7S7445C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1848_N7S7445C9D1Ev,_ZThn1224_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1848_N7S7445C9D0Ev,_ZThn1224_N7S7445C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1888_N7S7445C9D1Ev,_ZThn1248_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1888_N7S7445C9D0Ev,_ZThn1248_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev)();
static  VTBL_ENTRY vtc_S7445C9[] = {
  ABISELECT(1888,1248),
  ABISELECT(1848,1224),
  ABISELECT(1760,1152),
  ABISELECT(1600,1040),
  ABISELECT(544,356),
  ABISELECT(320,208),
  ABISELECT(296,196),
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-320,-208),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  ABISELECT(-1760,-1152),
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  ABISELECT(-1760,-1152),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  ABISELECT(-1848,-1224),
  ABISELECT(-248,-184),
  ABISELECT(-1848,-1224),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev),
  0,
  ABISELECT(-1888,-1248),
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  ABISELECT(-1888,-1248),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-2096,-1384),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7445C9[];
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C9[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C9[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C9[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__7S7445C9[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C9[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C9[] = {
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__7S7445C9[] = {
  0,
  0,
  ABISELECT(1464,956),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1696,1100),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1440,944),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1440,944),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C9[] = {
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__7S7445C9[] = {
  ABISELECT(-88,-72),
  ABISELECT(-248,-184),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__7S7445C9[] = {
  ABISELECT(-248,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C9[] = {
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C28S7445C12__A2__7S7445C9[] = {
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C9[] = {
  0,
  0,
  ABISELECT(1800,1188),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(2032,1332),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1552,1028),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1776,1176),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1776,1176),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(1736,1152),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C9[] = {
  ABISELECT(248,160),
  ABISELECT(-248,-184),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12__7S7445C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C12__7S7445C9[] = {
  0,
  0,
  ABISELECT(1592,1052),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12__7S7445C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1824,1196),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12__7S7445C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1344,892),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1568,1040),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1568,1040),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C9[] = {
  ABISELECT(1528,1016),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12__7S7445C9[] = {
  ABISELECT(40,24),
  ABISELECT(-248,-184),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
static  VTT_ENTRY vtt_S7445C9[] = {
  {&(_ZTV7S7445C9[10]),  10,82},
  {&(_ZTV7S7445C9[18]),  18,82},
  {&(_ZTV7S7445C9[24]),  24,82},
  {&(_ZTV7S7445C9[33]),  33,82},
  {&(_ZTV7S7445C9[42]),  42,82},
  {&(_ZTV7S7445C9[37]),  37,82},
  {&(_ZTV7S7445C9[51]),  51,82},
  {&(_ZTV7S7445C9[57]),  57,82},
  {&(_ZTV7S7445C9[69]),  69,82},
  {&(_ZTV7S7445C9[80]),  80,82},
  {&(_tg__ZTV7S7445C6__7S7445C9[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C8__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__7S7445C9[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C5__7S7445C9[3]),  3,3},
  {&(_tg__ZTV8S7445C10__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C2__A1__7S7445C9[3]),  3,5},
  {&(_tg__ZTV8S7445C12__7S7445C9[8]),  8,11},
  {&(_tg__ZTV7S7445C28S7445C12__A2__7S7445C9[3]),  3,5},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C9[4]),  4,6},
  {&(_tg__ZTV8S7445C10__8S7445C12__7S7445C9[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C12__7S7445C9[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C12__7S7445C9[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C12__7S7445C9[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12__7S7445C9[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C9[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12__7S7445C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C9[];
extern  VTBL_ENTRY _ZTV7S7445C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C9[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7445C9D0Ev,_ZThn1224_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7445C9D1Ev,_ZThn1224_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7445C9D0Ev,_ZThn1248_N7S7445C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7445C9D0Ev,_ZThn1152_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7445C9D1Ev,_ZThn1248_N7S7445C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7445C9D1Ev,_ZThn1152_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7445C9D0Ev,_ZThn208_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7445C9D1Ev,_ZThn208_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C9 = {  "S7445C9", // class name
  bases_S7445C9, 14,
  &(vtc_S7445C9[0]), // expected_vtbl_contents
  &(vtt_S7445C9[0]), // expected_vtt_contents
  ABISELECT(3568,2368), // object size
  NSPAIRA(_ZTI7S7445C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C9),82, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C9),40, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7445C1  : S7445C2 , virtual S7445C4 , virtual S7445C8 , S7445C9 {
  long s7445c1f0;
  long s7445c1f1;
  void *s7445c1f2;
  virtual void  v1(); // _ZN7S7445C12v1Ev
  virtual void  v2(); // _ZN7S7445C12v2Ev
  virtual void  v3(); // _ZN7S7445C12v3Ev
  virtual void  v4(); // _ZN7S7445C12v4Ev
  ~S7445C1(); // tgen
  S7445C1(); // tgen
};
//SIG(1 S7445C1) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} VBC4{ BC3 VBC5{ VBC3 FC2[5]} VBC6{ VBC7{ v5 v6 FL} v7 v8 FC2 Fp} BC8{ VBC5 BC2 BC7 BC3 vd} vd v9 Fi Fl} VBC8 BC9{ VBC6 VBC8 VBC10{ VBC7 VBC6 VBC5 VBC8 VBC2 vd FL FD FU11{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC12{ BC2 BC3 BC10 vd v10 FC5 Fp FD FL[9] Fp[3] Fp Fi FU11} vd v11 FC13{} Fi Fi[8] FL} v1 v2 v3 v4 Fl Fl Fp}


void  S7445C1 ::v1(){vfunc_called(this, "_ZN7S7445C12v1Ev");}
void  S7445C1 ::v2(){vfunc_called(this, "_ZN7S7445C12v2Ev");}
void  S7445C1 ::v3(){vfunc_called(this, "_ZN7S7445C12v3Ev");}
void  S7445C1 ::v4(){vfunc_called(this, "_ZN7S7445C12v4Ev");}
S7445C1 ::~S7445C1(){ note_dtor("S7445C1", this);} // tgen
S7445C1 ::S7445C1(){ note_ctor("S7445C1", this);} // tgen

static void Test_S7445C1()
{
  extern Class_Descriptor cd_S7445C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(253,669)];
    init_test(&cd_S7445C1, buf);
    S7445C1 *dp, &lv = *(dp=new (buf) S7445C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4032,2672), "sizeof(S7445C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7445C1)");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(128,88), "S7445C1");
    check_base_class_offset(lv, (S7445C3*)(S7445C5*), ABISELECT(128,88), "S7445C1");
    check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*)(S7445C4*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C8*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C2*)(S7445C12*), ABISELECT(128,88), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*), 0, "S7445C1");
    /*is_ambiguous_... S7445C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C4*), ABISELECT(512,348), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C4*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C8*)(S7445C4*), ABISELECT(688,468), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C8*), ABISELECT(688,468), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C5*)(S7445C10*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C5*)(S7445C10*)(S7445C12*), ABISELECT(688,468), "S7445C1");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C6*), ABISELECT(1976,1296), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*), ABISELECT(1976,1296), "S7445C1");
    /*is_ambiguous_... S7445C10::S7445C7_nt */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C10*)(S7445C12*), ABISELECT(1976,1296), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C4*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C9*), ABISELECT(1744,1152), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C6*)(S7445C10*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C6*)(S7445C10*)(S7445C12*), ABISELECT(1744,1152), "S7445C1");
    check_base_class_offset(lv, (S7445C2*)(S7445C8*)(S7445C4*), ABISELECT(288,200), "S7445C1");
    check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*)(S7445C4*), ABISELECT(328,224), "S7445C1");
    /*is_ambiguous_... S7445C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*)(S7445C4*), ABISELECT(352,236), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C4*), ABISELECT(288,200), "S7445C1");
    check_base_class_offset(lv, (S7445C4*), ABISELECT(288,200), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C8*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C7_nt*)(S7445C8*), ABISELECT(2040,1332), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C8*), ABISELECT(2064,1344), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C8 */ AMB_check_base_class_offset(lv, (S7445C8*), ABISELECT(2000,1308), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C9*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C8*)(S7445C10*), ABISELECT(2000,1308), "S7445C1");
    check_base_class_offset(lv, (S7445C8*)(S7445C10*)(S7445C12*), ABISELECT(2000,1308), "S7445C1");
    /*is_ambiguous_... S7445C1::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*), ABISELECT(2312,1528), "S7445C1");
    /*is_ambiguous_... S7445C10::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C10*)(S7445C12*), ABISELECT(2312,1528), "S7445C1");
    /*is_ambiguous_... S7445C9::S7445C10 */ AMB_check_base_class_offset(lv, (S7445C10*)(S7445C9*), ABISELECT(2224,1456), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C2 */ AMB_check_base_class_offset(lv, (S7445C2*)(S7445C12*), ABISELECT(2352,1552), "S7445C1");
    /*is_ambiguous_... S7445C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7445C12*), ABISELECT(2400,1576), "S7445C1");
    check_base_class_offset(lv, (S7445C10*)(S7445C12*), ABISELECT(2560,1688), "S7445C1");
    check_base_class_offset(lv, (S7445C12*)(S7445C9*), ABISELECT(2352,1552), "S7445C1");
    check_base_class_offset(lv, (S7445C9*), ABISELECT(40,24), "S7445C1");
    check_field_offset(lv, s7445c1f0, ABISELECT(96,76), "S7445C1.s7445c1f0");
    check_field_offset(lv, s7445c1f1, ABISELECT(104,80), "S7445C1.s7445c1f1");
    check_field_offset(lv, s7445c1f2, ABISELECT(112,84), "S7445C1.s7445c1f2");
    test_class_info(&lv, &cd_S7445C1);
    dp->~S7445C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7445C1(Test_S7445C1, "S7445C1", ABISELECT(4032,2672));

#else // __cplusplus

extern void _ZN7S7445C1C1Ev();
extern void _ZN7S7445C1D1Ev();
Name_Map name_map_S7445C1[] = {
  NSPAIR(_ZN7S7445C1C1Ev),
  NSPAIR(_ZN7S7445C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C5;
extern VTBL_ENTRY _ZTI7S7445C5[];
extern  VTBL_ENTRY _ZTV7S7445C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C5[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C6;
extern VTBL_ENTRY _ZTI7S7445C6[];
extern  VTBL_ENTRY _ZTV7S7445C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C6[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C4;
extern VTBL_ENTRY _ZTI7S7445C4[];
extern  VTBL_ENTRY _ZTV7S7445C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C4[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C7_nt;
extern VTBL_ENTRY _ZTI10S7445C7_nt[];
extern  VTBL_ENTRY _ZTV10S7445C7_nt[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C8;
extern VTBL_ENTRY _ZTI7S7445C8[];
extern  VTBL_ENTRY _ZTV7S7445C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C8[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C2;
extern VTBL_ENTRY _ZTI7S7445C2[];
extern  VTBL_ENTRY _ZTV7S7445C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C10;
extern VTBL_ENTRY _ZTI8S7445C10[];
extern  VTBL_ENTRY _ZTV8S7445C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C10[];
extern Class_Descriptor cd_S7445C12;
extern VTBL_ENTRY _ZTI8S7445C12[];
extern  VTBL_ENTRY _ZTV8S7445C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7445C12[];
extern Class_Descriptor cd_S7445C9;
extern VTBL_ENTRY _ZTI7S7445C9[];
extern  VTBL_ENTRY _ZTV7S7445C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C9[];
static Base_Class bases_S7445C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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, 1},
  {&cd_S7445C2,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(512,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7445C5,    ABISELECT(688,468), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7445C7_nt,    ABISELECT(1976,1296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S7445C6,    ABISELECT(1744,1152), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(288,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(328,224), //bcp->offset
    43, //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
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(352,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C8,    ABISELECT(288,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7445C4,    ABISELECT(288,200), //bcp->offset
    30, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(2000,1308), //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
    14, //immediately_derived
  0, 0},
  {&cd_S7445C7_nt,    ABISELECT(2040,1332), //bcp->offset
    72, //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2064,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C8,    ABISELECT(2000,1308), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C2,    ABISELECT(2312,1528), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7445C10,    ABISELECT(2224,1456), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7445C2,    ABISELECT(2352,1552), //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2400,1576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7445C10,    ABISELECT(2560,1688), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C12,    ABISELECT(2352,1552), //bcp->offset
    93, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7445C9,    ABISELECT(40,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7445C1[];
extern void _ZN7S7445C1D1Ev();
extern void _ZN7S7445C1D0Ev();
extern void _ZN7S7445C12v1Ev();
extern void _ZN7S7445C12v2Ev();
extern void _ZN7S7445C12v3Ev();
extern void _ZN7S7445C12v4Ev();
extern void ABISELECT(_ZThn40_N7S7445C1D1Ev,_ZThn24_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7445C1D0Ev,_ZThn24_N7S7445C1D0Ev)();
extern void _ZN7S7445C93v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7445C1D1Ev,_ZThn200_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7445C1D0Ev,_ZThn200_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN7S7445C42v9Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2000_N7S7445C1D1Ev,_ZThn1308_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2000_N7S7445C1D0Ev,_ZThn1308_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2224_N7S7445C1D1Ev,_ZThn1456_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2224_N7S7445C1D0Ev,_ZThn1456_N7S7445C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C1D1Ev,_ZThn1528_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C1D0Ev,_ZThn1528_N7S7445C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZThn2352_N7S7445C1D1Ev,_ZThn1552_N7S7445C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev)();
extern void ABISELECT(_ZThn2352_N7S7445C1D0Ev,_ZThn1552_N7S7445C1D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7445C1D1Ev,_ZTvn136_n36_N7S7445C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C1D0Ev,_ZTvn136_n36_N7S7445C1D0Ev)();
static  VTBL_ENTRY vtc_S7445C1[] = {
  ABISELECT(2352,1552),
  ABISELECT(2312,1528),
  ABISELECT(2224,1456),
  ABISELECT(2000,1308),
  ABISELECT(1976,1296),
  ABISELECT(1744,1152),
  ABISELECT(688,468),
  ABISELECT(288,200),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN7S7445C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7445C12v4Ev,
  ABISELECT(2312,1528),
  ABISELECT(2272,1504),
  ABISELECT(2184,1432),
  ABISELECT(88,64),
  ABISELECT(648,444),
  ABISELECT(1960,1284),
  ABISELECT(1936,1272),
  ABISELECT(1704,1128),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7445C1D1Ev,_ZThn24_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7445C1D0Ev,_ZThn24_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-288,-200),
  ABISELECT(1688,1096),
  ABISELECT(1456,952),
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
  ABISELECT(-328,-224),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-560,-380),
  ABISELECT(-688,-468),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1744,-1152),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
  0,
  0,
  ABISELECT(-1976,-1296),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2000,-1308),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(-2000,-1308),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev),
  ABISELECT(-2040,-1332),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
  ABISELECT(-2224,-1456),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2224,-1456),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev),
  ABISELECT(-2312,-1528),
  ABISELECT(-2184,-1440),
  ABISELECT(-2312,-1528),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev),
  0,
  ABISELECT(-2352,-1552),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  ABISELECT(-2352,-1552),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2560,-1688),
  (VTBL_ENTRY)&(_ZTI7S7445C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C1D1Ev,_ZTvn136_n36_N7S7445C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C1D0Ev,_ZTvn136_n36_N7S7445C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7445C1[];
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A__7S7445C1[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN7S7445C9D1Ev();
extern void _ZN7S7445C9D0Ev();
extern void _ZN7S7445C93v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C9__7S7445C1[] = {
  ABISELECT(2312,1528),
  ABISELECT(2272,1504),
  ABISELECT(2184,1432),
  ABISELECT(88,64),
  ABISELECT(648,444),
  ABISELECT(1960,1284),
  ABISELECT(1936,1272),
  ABISELECT(1704,1128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C93v11Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C9__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1704,-1128),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C9__7S7445C1[] = {
  0,
  0,
  ABISELECT(-1936,-1272),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn1960_N7S7445C9D1Ev,_ZThn1284_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn1960_N7S7445C9D0Ev,_ZThn1284_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C8__7S7445C9__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1960,-1284),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(-1960,-1284),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C9__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-648,-444),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-2000,-1308),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2184_N7S7445C9D1Ev,_ZThn1432_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2184_N7S7445C9D0Ev,_ZThn1432_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C9__7S7445C1[] = {
  ABISELECT(-2184,-1432),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2184,-1432),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2272_N7S7445C9D1Ev,_ZThn1504_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2272_N7S7445C9D0Ev,_ZThn1504_N7S7445C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-2272,-1504),
  ABISELECT(-2184,-1440),
  ABISELECT(-2272,-1504),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C9D1Ev,_ZThn1528_N7S7445C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7445C9D0Ev,_ZThn1528_N7S7445C9D0Ev)() __attribute__((weak));
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C9__7S7445C1[] = {
  0,
  ABISELECT(-2312,-1528),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  ABISELECT(-2312,-1528),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C9__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2520,-1664),
  (VTBL_ENTRY)&(_ZTI7S7445C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D1Ev,_ZTvn136_n36_N7S7445C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7445C9D0Ev,_ZTvn136_n36_N7S7445C9D0Ev),
};
extern void _ZN7S7445C4D1Ev();
extern void _ZN7S7445C4D0Ev();
extern void _ZN7S7445C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C4__7S7445C1[] = {
  ABISELECT(1688,1096),
  ABISELECT(1456,952),
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7445C42v9Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C87S7445C4__7S7445C1[] = {
  ABISELECT(400,268),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C87S7445C4__A1__7S7445C1[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C87S7445C4__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C4__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(-400,-268),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C4__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1456,-952),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C4__7S7445C1[] = {
  0,
  0,
  ABISELECT(-1688,-1096),
  (VTBL_ENTRY)&(_ZTI7S7445C4[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C1[] = {
  ABISELECT(-560,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C5[0]),
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__7S7445C1[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__7S7445C6__7S7445C1[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7445C6[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C8D1Ev();
extern void _ZN7S7445C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C8__A1__7S7445C1[] = {
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
  (VTBL_ENTRY)&_ZN7S7445C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C8D0Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C27S7445C8__A2__7S7445C1[] = {
  ABISELECT(-1872,-1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__7S7445C8__A1__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1312,840),
  (VTBL_ENTRY)&(_ZTI7S7445C8[0]),
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C10__7S7445C1[] = {
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1368),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C10__7S7445C1[] = {
  0,
  0,
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C10__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(480,304),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C10__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1536,988),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C10__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(224,148),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C1[] = {
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C10__7S7445C1[] = {
  ABISELECT(-88,-72),
  ABISELECT(-2184,-1440),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A3__7S7445C1[] = {
  ABISELECT(-2184,-1440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C12D1Ev();
extern void _ZN8S7445C12D0Ev();
extern void _ZN8S7445C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C12__7S7445C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1464),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN8S7445C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7445C123v10Ev,
};
extern void _ZN7S7445C2D1Ev();
extern void _ZN7S7445C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C28S7445C12__A4__7S7445C1[] = {
  ABISELECT(-2224,-1464),
  0,
  (VTBL_ENTRY)&(_ZTI7S7445C2[0]),
  (VTBL_ENTRY)&_ZN7S7445C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7445C2D0Ev,
};
extern void _ZN8S7445C10D1Ev();
extern void _ZN8S7445C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN8S7445C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7445C10D0Ev,
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C1[] = {
  0,
  0,
  ABISELECT(584,392),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1872,1220),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(560,380),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(560,380),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D1Ev,_ZTv0_n20_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C10D0Ev,_ZTv0_n20_N8S7445C10D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(520,356),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C1[] = {
  ABISELECT(248,160),
  ABISELECT(-2184,-1440),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7445C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7445C10__8S7445C12__7S7445C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1600),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D1Ev,_ZThn136_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7445C12D0Ev,_ZThn136_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt__8S7445C12__7S7445C1[] = {
  0,
  0,
  ABISELECT(376,256),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void _ZN7S7445C62v7Ev();
extern void _ZN7S7445C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7445C6__8S7445C12__7S7445C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(608,400),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN7S7445C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7445C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7445C5__8S7445C12__7S7445C1[] = {
  ABISELECT(-560,-380),
  ABISELECT(1664,1084),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C8__8S7445C12__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(352,244),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1220),
  ABISELECT(352,244),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D1Ev,_ZTv0_n20_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7445C12D0Ev,_ZTv0_n20_N8S7445C12D0Ev),
};
extern void _ZN10S7445C7_nt2v5Ev();
extern void _ZN10S7445C7_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C1[] = {
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7445C7_nt2v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7445C2__A2__8S7445C12__7S7445C1[] = {
  ABISELECT(40,24),
  ABISELECT(-2184,-1440),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7445C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D1Ev,_ZTv0_n16_N8S7445C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7445C12D0Ev,_ZTv0_n16_N8S7445C12D0Ev),
};
static  VTT_ENTRY vtt_S7445C1[] = {
  {&(_ZTV7S7445C1[11]),  11,116},
  {&(_tg__ZTV7S7445C2__A__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C9__7S7445C1[10]),  10,13},
  {&(_tg__ZTV7S7445C6__7S7445C9__7S7445C1[5]),  5,7},
  {&(_tg__ZTV10S7445C7_nt__7S7445C9__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C8__7S7445C9__7S7445C1[7]),  7,9},
  {&(_tg__ZTV7S7445C5__7S7445C9__7S7445C1[3]),  3,3},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__7S7445C9__7S7445C1[2]),  2,4},
  {&(_tg__ZTV8S7445C10__7S7445C9__7S7445C1[9]),  9,11},
  {&(_tg__ZTV7S7445C2__A1__7S7445C9__7S7445C1[4]),  4,6},
  {&(_tg__ZTV8S7445C12__7S7445C9__7S7445C1[10]),  10,13},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C9__7S7445C1[8]),  8,10},
  {&(_ZTV7S7445C1[40]),  40,116},
  {&(_ZTV7S7445C1[50]),  50,116},
  {&(_ZTV7S7445C1[55]),  55,116},
  {&(_ZTV7S7445C1[61]),  61,116},
  {&(_ZTV7S7445C1[45]),  45,116},
  {&(_ZTV7S7445C1[70]),  70,116},
  {&(_ZTV7S7445C1[74]),  74,116},
  {&(_ZTV7S7445C1[27]),  27,116},
  {&(_ZTV7S7445C1[85]),  85,116},
  {&(_ZTV7S7445C1[91]),  91,116},
  {&(_ZTV7S7445C1[103]),  103,116},
  {&(_ZTV7S7445C1[114]),  114,116},
  {&(_tg__ZTV7S7445C4__7S7445C1[6]),  6,9},
  {&(_tg__ZTV7S7445C87S7445C4__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C87S7445C4__A1__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C87S7445C4__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C5__7S7445C4__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C4__7S7445C1[5]),  5,7},
  {&(_tg__ZTV10S7445C7_nt__7S7445C4__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C5__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C6__7S7445C1[3]),  3,5},
  {&(_tg__ZTV10S7445C7_nt__7S7445C6__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C8__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C27S7445C8__A2__7S7445C1[3]),  3,5},
  {&(_tg__ZTV7S7445C5__7S7445C8__A1__7S7445C1[3]),  3,3},
  {&(_tg__ZTV8S7445C10__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C10__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C10__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C10__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C10__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C10__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C10__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C2__A3__7S7445C1[3]),  3,5},
  {&(_tg__ZTV8S7445C12__7S7445C1[8]),  8,11},
  {&(_tg__ZTV7S7445C28S7445C12__A4__7S7445C1[3]),  3,5},
  {&(_tg__ZTV8S7445C108S7445C12__A1__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C108S7445C12__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C108S7445C12__A1__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C108S7445C12__A1__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C108S7445C12__A1__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C108S7445C12__A1__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A1__8S7445C108S7445C12__A1__7S7445C1[4]),  4,6},
  {&(_tg__ZTV8S7445C10__8S7445C12__7S7445C1[8]),  8,10},
  {&(_tg__ZTV10S7445C7_nt__8S7445C12__7S7445C1[4]),  4,6},
  {&(_tg__ZTV7S7445C6__8S7445C12__7S7445C1[5]),  5,7},
  {&(_tg__ZTV7S7445C5__8S7445C12__7S7445C1[3]),  3,3},
  {&(_tg__ZTV7S7445C8__8S7445C12__7S7445C1[7]),  7,9},
  {&(_tg__ZTV10S7445C7_nt7S7445C8__A1__8S7445C12__7S7445C1[2]),  2,4},
  {&(_tg__ZTV7S7445C2__A2__8S7445C12__7S7445C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7445C1[];
extern  VTBL_ENTRY _ZTV7S7445C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7445C1[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D0Ev,_ZTv0_n16_N8S7445C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D0Ev,_ZThn72_N8S7445C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7445C10D1Ev,_ZTv0_n16_N8S7445C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7445C10D1Ev,_ZThn72_N8S7445C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D0Ev,_ZTv0_n16_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7445C9D0Ev,_ZThn1504_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C9D1Ev,_ZTv0_n16_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7445C9D1Ev,_ZThn1504_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D0Ev,_ZTv0_n36_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C9D0Ev,_ZThn1528_N7S7445C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7445C9D0Ev,_ZThn1432_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C9D1Ev,_ZTv0_n36_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C9D1Ev,_ZThn1528_N7S7445C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7445C9D1Ev,_ZThn1432_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D0Ev,_ZTv0_n20_N7S7445C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7445C9D0Ev,_ZThn1284_N7S7445C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C9D1Ev,_ZTv0_n20_N7S7445C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7445C9D1Ev,_ZThn1284_N7S7445C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C1D0Ev,_ZTv0_n16_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C1D0Ev,_ZThn1528_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7445C1D1Ev,_ZTv0_n16_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7445C1D1Ev,_ZThn1528_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C1D0Ev,_ZTv0_n36_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7445C1D0Ev,_ZThn1552_N7S7445C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7445C1D0Ev,_ZThn1456_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7445C1D1Ev,_ZTv0_n36_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7445C1D1Ev,_ZThn1552_N7S7445C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7445C1D1Ev,_ZThn1456_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C1D0Ev,_ZTv0_n20_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7445C1D0Ev,_ZThn1308_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7445C1D1Ev,_ZTv0_n20_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7445C1D1Ev,_ZThn1308_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7445C1D0Ev,_ZTv0_n28_N7S7445C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7445C1D0Ev,_ZThn200_N7S7445C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7445C1D1Ev,_ZTv0_n28_N7S7445C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7445C1D1Ev,_ZThn200_N7S7445C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7445C1 = {  "S7445C1", // class name
  bases_S7445C1, 22,
  &(vtc_S7445C1[0]), // expected_vtbl_contents
  &(vtt_S7445C1[0]), // expected_vtt_contents
  ABISELECT(4032,2672), // object size
  NSPAIRA(_ZTI7S7445C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7445C1),116, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7445C1),61, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7446C2  : virtual S7445C3 {
  int s7446c2f0;
  void *s7446c2f1;
  __tsi64 s7446c2f2:62;
  char s7446c2f3:4;
  virtual  ~S7446C2(); // _ZN7S7446C2D2Ev
  S7446C2(); // tgen
};
//SIG(-1 S7446C2) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4}


 S7446C2 ::~S7446C2(){ note_dtor("S7446C2", this);}
S7446C2 ::S7446C2(){ note_ctor("S7446C2", this);} // tgen

static void Test_S7446C2()
{
  extern Class_Descriptor cd_S7446C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,35)];
    init_test(&cd_S7446C2, buf);
    S7446C2 *dp, &lv = *(dp=new (buf) S7446C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S7446C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C2)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7446C2");
    check_field_offset(lv, s7446c2f0, ABISELECT(8,4), "S7446C2.s7446c2f0");
    check_field_offset(lv, s7446c2f1, ABISELECT(16,8), "S7446C2.s7446c2f1");
    set_bf_and_test(lv, s7446c2f2, ABISELECT(24,12), 0, 62, 1, "S7446C2");
    set_bf_and_test(lv, s7446c2f2, ABISELECT(24,12), 0, 62, hide_sll(1LL<<61), "S7446C2");
    set_bf_and_test(lv, s7446c2f3, ABISELECT(32,20), 0, 4, 1, "S7446C2");
    set_bf_and_test(lv, s7446c2f3, ABISELECT(32,20), 0, 4, hide_sll(1LL<<3), "S7446C2");
    test_class_info(&lv, &cd_S7446C2);
    dp->~S7446C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C2(Test_S7446C2, "S7446C2", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S7446C2C1Ev();
extern void _ZN7S7446C2D2Ev();
Name_Map name_map_S7446C2[] = {
  NSPAIR(_ZN7S7446C2C1Ev),
  NSPAIR(_ZN7S7446C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C2[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY vtc_S7446C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7446C2[];
static  VTT_ENTRY vtt_S7446C2[] = {
  {&(_ZTV7S7446C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
Class_Descriptor cd_S7446C2 = {  "S7446C2", // class name
  bases_S7446C2, 1,
  &(vtc_S7446C2[0]), // expected_vtbl_contents
  &(vtt_S7446C2[0]), // expected_vtt_contents
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S7446C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C2),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  S7446C5  : virtual S7445C3 {
  ::S7446C2 s7446c5f0[5];
  ~S7446C5(); // tgen
  S7446C5(); // tgen
};
//SIG(-1 S7446C5) C1{ VBC2{ m Fp Fs Fi FD[8] Fi} FC3{ VBC2 vd Fi Fp FL:62 Fc:4}[5]}


S7446C5 ::~S7446C5(){ note_dtor("S7446C5", this);} // tgen
S7446C5 ::S7446C5(){ note_ctor("S7446C5", this);} // tgen

static void Test_S7446C5()
{
  extern Class_Descriptor cd_S7446C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(77,200)];
    init_test(&cd_S7446C5, buf);
    S7446C5 *dp, &lv = *(dp=new (buf) S7446C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,796), "sizeof(S7446C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C5)");
    check_base_class_offset(lv, (S7445C3*), ABISELECT(1056,684), "S7446C5");
    check_field_offset(lv, s7446c5f0, ABISELECT(16,4), "S7446C5.s7446c5f0");
    test_class_info(&lv, &cd_S7446C5);
    dp->~S7446C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C5(Test_S7446C5, "S7446C5", ABISELECT(1216,796));

#else // __cplusplus

extern void _ZN7S7446C5C1Ev();
extern void _ZN7S7446C5D1Ev();
Name_Map name_map_S7446C5[] = {
  NSPAIR(_ZN7S7446C5C1Ev),
  NSPAIR(_ZN7S7446C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1056,684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7446C5[];
static  VTBL_ENTRY vtc_S7446C5[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern VTBL_ENTRY _ZTV7S7446C5[];
static  VTT_ENTRY vtt_S7446C5[] = {
  {&(_ZTV7S7446C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
Class_Descriptor cd_S7446C5 = {  "S7446C5", // class name
  bases_S7446C5, 1,
  &(vtc_S7446C5[0]), // expected_vtbl_contents
  &(vtt_S7446C5[0]), // expected_vtt_contents
  ABISELECT(1216,796), // object size
  NSPAIRA(_ZTI7S7446C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C5),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7446C7  {
  __tsi64 s7446c7f0;
  virtual void  v5(); // _ZN7S7446C72v5Ev
  virtual void  v6(); // _ZN7S7446C72v6Ev
  ~S7446C7(); // tgen
  S7446C7(); // tgen
};
//SIG(-1 S7446C7) C1{ v1 v2 FL}


void  S7446C7 ::v5(){vfunc_called(this, "_ZN7S7446C72v5Ev");}
void  S7446C7 ::v6(){vfunc_called(this, "_ZN7S7446C72v6Ev");}
S7446C7 ::~S7446C7(){ note_dtor("S7446C7", this);} // tgen
S7446C7 ::S7446C7(){ note_ctor("S7446C7", this);} // tgen

static void Test_S7446C7()
{
  extern Class_Descriptor cd_S7446C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7446C7, buf);
    S7446C7 *dp, &lv = *(dp=new (buf) S7446C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7446C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7446C7)");
    check_field_offset(lv, s7446c7f0, ABISELECT(8,4), "S7446C7.s7446c7f0");
    test_class_info(&lv, &cd_S7446C7);
    dp->~S7446C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C7(Test_S7446C7, "S7446C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7446C7C1Ev();
extern void _ZN7S7446C7D1Ev();
Name_Map name_map_S7446C7[] = {
  NSPAIR(_ZN7S7446C7C1Ev),
  NSPAIR(_ZN7S7446C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7446C7[];
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C7[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
Class_Descriptor cd_S7446C7 = {  "S7446C7", // class name
  0,0,//no base classes
  &(vtc_S7446C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7446C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7446C7),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  S7446C6  : virtual S7446C7 {
  ::S7446C2 s7446c6f0;
  void *s7446c6f1;
  virtual void  v7(); // _ZN7S7446C62v7Ev
  virtual void  v8(); // _ZN7S7446C62v8Ev
  ~S7446C6(); // tgen
  S7446C6(); // tgen
};
//SIG(-1 S7446C6) C1{ VBC2{ v3 v4 FL} v1 v2 FC3{ VBC4{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp}


void  S7446C6 ::v7(){vfunc_called(this, "_ZN7S7446C62v7Ev");}
void  S7446C6 ::v8(){vfunc_called(this, "_ZN7S7446C62v8Ev");}
S7446C6 ::~S7446C6(){ note_dtor("S7446C6", this);} // tgen
S7446C6 ::S7446C6(){ note_ctor("S7446C6", this);} // tgen

static void Test_S7446C6()
{
  extern Class_Descriptor cd_S7446C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,40)];
    init_test(&cd_S7446C6, buf);
    S7446C6 *dp, &lv = *(dp=new (buf) S7446C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,156), "sizeof(S7446C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C6)");
    check_base_class_offset(lv, (S7446C7*), ABISELECT(232,144), "S7446C6");
    check_field_offset(lv, s7446c6f0, ABISELECT(16,4), "S7446C6.s7446c6f0");
    check_field_offset(lv, s7446c6f1, ABISELECT(224,140), "S7446C6.s7446c6f1");
    test_class_info(&lv, &cd_S7446C6);
    dp->~S7446C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C6(Test_S7446C6, "S7446C6", ABISELECT(256,156));

#else // __cplusplus

extern void _ZN7S7446C6C1Ev();
extern void _ZN7S7446C6D1Ev();
Name_Map name_map_S7446C6[] = {
  NSPAIR(_ZN7S7446C6C1Ev),
  NSPAIR(_ZN7S7446C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
static Base_Class bases_S7446C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(232,144), //bcp->offset
    5, //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 _ZTI7S7446C6[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C6[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTV7S7446C6[];
static  VTT_ENTRY vtt_S7446C6[] = {
  {&(_ZTV7S7446C6[3]),  3,11},
  {&(_ZTV7S7446C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
Class_Descriptor cd_S7446C6 = {  "S7446C6", // class name
  bases_S7446C6, 1,
  &(vtc_S7446C6[0]), // expected_vtbl_contents
  &(vtt_S7446C6[0]), // expected_vtt_contents
  ABISELECT(256,156), // object size
  NSPAIRA(_ZTI7S7446C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7446C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C6),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  S7446C8  : virtual S7446C5 , S7446C2 , S7446C7 , S7445C3 {
  virtual  ~S7446C8(); // _ZN7S7446C8D2Ev
  S7446C8(); // tgen
};
//SIG(-1 S7446C8) C1{ VBC2{ VBC3{ m Fp Fs Fi FD[8] Fi} FC4{ VBC3 vd Fi Fp FL:62 Fc:4}[5]} BC4 BC5{ v1 v2 FL} BC3 vd}


 S7446C8 ::~S7446C8(){ note_dtor("S7446C8", this);}
S7446C8 ::S7446C8(){ note_ctor("S7446C8", this);} // tgen

static void Test_S7446C8()
{
  extern Class_Descriptor cd_S7446C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(91,237)];
    init_test(&cd_S7446C8, buf);
    S7446C8 *dp, &lv = *(dp=new (buf) S7446C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1440,944), "sizeof(S7446C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C8)");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1280,832), "S7446C8");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1280,832), "S7446C8");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(224,148), "S7446C8");
    check_base_class_offset(lv, (S7446C2*), 0, "S7446C8");
    check_base_class_offset(lv, (S7446C7*), ABISELECT(40,24), "S7446C8");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(64,36), "S7446C8");
    test_class_info(&lv, &cd_S7446C8);
    dp->~S7446C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C8(Test_S7446C8, "S7446C8", ABISELECT(1440,944));

#else // __cplusplus

extern void _ZN7S7446C8C1Ev();
extern void _ZN7S7446C8D2Ev();
Name_Map name_map_S7446C8[] = {
  NSPAIR(_ZN7S7446C8C1Ev),
  NSPAIR(_ZN7S7446C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
static Base_Class bases_S7446C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1280,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7446C5,    ABISELECT(224,148), //bcp->offset
    10, //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},
  {&cd_S7446C2,    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_S7446C7,    ABISELECT(40,24), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C8[];
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C8[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern VTBL_ENTRY _ZTV7S7446C8[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__7S7446C8[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
static  VTT_ENTRY vtt_S7446C8[] = {
  {&(_ZTV7S7446C8[4]),  4,13},
  {&(_tg__ZTV7S7446C2__7S7446C8[3]),  3,5},
  {&(_ZTV7S7446C8[13]),  13,13},
  {&(_tg__ZTV7S7446C5__7S7446C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
Class_Descriptor cd_S7446C8 = {  "S7446C8", // class name
  bases_S7446C8, 5,
  &(vtc_S7446C8[0]), // expected_vtbl_contents
  &(vtt_S7446C8[0]), // expected_vtt_contents
  ABISELECT(1440,944), // object size
  NSPAIRA(_ZTI7S7446C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C8),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  S7446C4  : S7445C3 , virtual S7446C5 , virtual S7446C6 , S7446C8 {
  int s7446c4f0;
  __tsi64 s7446c4f1;
  virtual  ~S7446C4(); // _ZN7S7446C4D2Ev
  virtual void  v9(); // _ZN7S7446C42v9Ev
  S7446C4(); // tgen
};
//SIG(-1 S7446C4) C1{ BC2{ m Fp Fs Fi FD[8] Fi} VBC3{ VBC2 FC4{ VBC2 vd Fi Fp FL:62 Fc:4}[5]} VBC5{ VBC6{ v2 v3 FL} v4 v5 FC4 Fp} BC7{ VBC3 BC4 BC6 BC2 vd} vd v1 Fi FL}


 S7446C4 ::~S7446C4(){ note_dtor("S7446C4", this);}
void  S7446C4 ::v9(){vfunc_called(this, "_ZN7S7446C42v9Ev");}
S7446C4 ::S7446C4(){ note_ctor("S7446C4", this);} // tgen

static void Test_S7446C4()
{
  extern Class_Descriptor cd_S7446C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(118,307)];
    init_test(&cd_S7446C4, buf);
    S7446C4 *dp, &lv = *(dp=new (buf) S7446C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1872,1224), "sizeof(S7446C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C4)");
    /*is_ambiguous_... S7446C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(224,148), "S7446C4");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1456,956), "S7446C4");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1456,956), "S7446C4");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(400,272), "S7446C4");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(400,272), "S7446C4");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1848,1212), "S7446C4");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(1616,1068), "S7446C4");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), 0, "S7446C4");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(40,24), "S7446C4");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(64,36), "S7446C4");
    check_base_class_offset(lv, (S7446C8*), 0, "S7446C4");
    check_field_offset(lv, s7446c4f0, ABISELECT(384,260), "S7446C4.s7446c4f0");
    check_field_offset(lv, s7446c4f1, ABISELECT(392,264), "S7446C4.s7446c4f1");
    test_class_info(&lv, &cd_S7446C4);
    dp->~S7446C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C4(Test_S7446C4, "S7446C4", ABISELECT(1872,1224));

#else // __cplusplus

extern void _ZN7S7446C4C1Ev();
extern void _ZN7S7446C4D2Ev();
Name_Map name_map_S7446C4[] = {
  NSPAIR(_ZN7S7446C4C1Ev),
  NSPAIR(_ZN7S7446C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
static Base_Class bases_S7446C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(1456,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C5,    ABISELECT(400,272), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C7,    ABISELECT(1848,1212), //bcp->offset
    23, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1616,1068), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(40,24), //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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7445C3,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7446C8,    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 _ZTI7S7446C4[];
extern void _ZN7S7446C4D1Ev();
extern void _ZN7S7446C4D0Ev();
extern void _ZN7S7446C42v9Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY vtc_S7446C4[] = {
  ABISELECT(1848,1212),
  ABISELECT(1616,1068),
  ABISELECT(400,272),
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1616,-1068),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-1848,-1212),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern VTBL_ENTRY _ZTV7S7446C4[];
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C4[] = {
  ABISELECT(400,272),
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__7S7446C4[] = {
  ABISELECT(1456,956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__7S7446C4[] = {
  ABISELECT(1056,684),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C4[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C4[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C4[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTT_ENTRY vtt_S7446C4[] = {
  {&(_ZTV7S7446C4[6]),  6,29},
  {&(_tg__ZTV7S7446C8__7S7446C4[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__7S7446C4[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__7S7446C4[3]),  3,3},
  {&(_ZTV7S7446C4[16]),  16,29},
  {&(_ZTV7S7446C4[21]),  21,29},
  {&(_ZTV7S7446C4[27]),  27,29},
  {&(_tg__ZTV7S7446C5__7S7446C4[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C4[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C4[];
extern  VTBL_ENTRY _ZTV7S7446C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C4[];
Class_Descriptor cd_S7446C4 = {  "S7446C4", // class name
  bases_S7446C4, 9,
  &(vtc_S7446C4[0]), // expected_vtbl_contents
  &(vtt_S7446C4[0]), // expected_vtt_contents
  ABISELECT(1872,1224), // object size
  NSPAIRA(_ZTI7S7446C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C4),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C4),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  S7446C10  : virtual S7446C7 , virtual S7446C6 , virtual S7446C5 , virtual S7446C8 , virtual S7446C2 {
  __tsi64 s7446c10f0;
  long double s7446c10f1;
  ::S7445C11 s7446c10f2[3];
  int s7446c10f3;
  void *s7446c10f4;
  char s7446c10f5;
  int s7446c10f6;
  __tsi64 s7446c10f7;
  virtual  ~S7446C10(); // _ZN8S7446C10D2Ev
  S7446C10(); // tgen
};
//SIG(-1 S7446C10) C1{ VBC2{ v1 v2 FL} VBC3{ VBC2 v3 v4 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC5 FC4[5]} VBC7{ VBC6 BC4 BC2 BC5 vd} VBC4 vd FL FD FU8{ m FL Fp}[3] Fi Fp Fc Fi FL}


 S7446C10 ::~S7446C10(){ note_dtor("S7446C10", this);}
S7446C10 ::S7446C10(){ note_ctor("S7446C10", this);} // tgen

static void Test_S7446C10()
{
  extern Class_Descriptor cd_S7446C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,300)];
    init_test(&cd_S7446C10, buf);
    S7446C10 *dp, &lv = *(dp=new (buf) S7446C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1196), "sizeof(S7446C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C10)");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*), ABISELECT(88,72), "S7446C10");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(88,72), "S7446C10");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(112,84), "S7446C10");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1408,912), "S7446C10");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1408,912), "S7446C10");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1408,912), "S7446C10");
    check_base_class_offset(lv, (S7446C5*), ABISELECT(352,228), "S7446C10");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(352,228), "S7446C10");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(1568,1024), "S7446C10");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(1608,1048), "S7446C10");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(1632,1060), "S7446C10");
    check_base_class_offset(lv, (S7446C8*), ABISELECT(1568,1024), "S7446C10");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), ABISELECT(1792,1172), "S7446C10");
    check_field_offset(lv, s7446c10f0, ABISELECT(8,4), "S7446C10.s7446c10f0");
    check_field_offset(lv, s7446c10f1, ABISELECT(16,12), "S7446C10.s7446c10f1");
    check_field_offset(lv, s7446c10f2, ABISELECT(32,24), "S7446C10.s7446c10f2");
    check_field_offset(lv, s7446c10f3, ABISELECT(56,48), "S7446C10.s7446c10f3");
    check_field_offset(lv, s7446c10f4, ABISELECT(64,52), "S7446C10.s7446c10f4");
    check_field_offset(lv, s7446c10f5, ABISELECT(72,56), "S7446C10.s7446c10f5");
    check_field_offset(lv, s7446c10f6, ABISELECT(76,60), "S7446C10.s7446c10f6");
    check_field_offset(lv, s7446c10f7, ABISELECT(80,64), "S7446C10.s7446c10f7");
    test_class_info(&lv, &cd_S7446C10);
    dp->~S7446C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C10(Test_S7446C10, "S7446C10", ABISELECT(1840,1196));

#else // __cplusplus

extern void _ZN8S7446C10C1Ev();
extern void _ZN8S7446C10D2Ev();
Name_Map name_map_S7446C10[] = {
  NSPAIR(_ZN8S7446C10C1Ev),
  NSPAIR(_ZN8S7446C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
static Base_Class bases_S7446C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(88,72), //bcp->offset
    10, //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_S7446C6,    ABISELECT(112,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1408,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C5,    ABISELECT(352,228), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1568,1024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(1608,1048), //bcp->offset
    35, //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1632,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C8,    ABISELECT(1568,1024), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1792,1172), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7446C10[];
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn1568_N8S7446C10D1Ev,_ZThn1024_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn1568_N8S7446C10D0Ev,_ZThn1024_N8S7446C10D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn1792_N8S7446C10D1Ev,_ZThn1172_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn1792_N8S7446C10D0Ev,_ZThn1172_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7446C10[] = {
  ABISELECT(1792,1172),
  ABISELECT(1568,1024),
  ABISELECT(1408,912),
  ABISELECT(352,228),
  ABISELECT(112,84),
  ABISELECT(88,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
  0,
  0,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  ABISELECT(1056,684),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1568,-1024),
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  ABISELECT(-1568,-1024),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
  ABISELECT(-1608,-1048),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-1792,-1172),
  ABISELECT(-384,-260),
  ABISELECT(-1792,-1172),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7446C10[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__8S7446C10[] = {
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10[] = {
  ABISELECT(-1216,-796),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__8S7446C10[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__8S7446C10[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10[] = {
  ABISELECT(-384,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTT_ENTRY vtt_S7446C10[] = {
  {&(_ZTV8S7446C10[8]),  8,45},
  {&(_ZTV8S7446C10[14]),  14,45},
  {&(_ZTV8S7446C10[21]),  21,45},
  {&(_ZTV8S7446C10[26]),  26,45},
  {&(_ZTV8S7446C10[33]),  33,45},
  {&(_ZTV8S7446C10[37]),  37,45},
  {&(_ZTV8S7446C10[43]),  43,45},
  {&(_tg__ZTV7S7446C6__8S7446C10[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__8S7446C10[4]),  4,6},
  {&(_tg__ZTV7S7446C5__8S7446C10[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__8S7446C10[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__8S7446C10[3]),  3,3},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7446C10D0Ev,_ZThn1172_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S7446C10D1Ev,_ZThn1172_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7446C10D0Ev,_ZThn1024_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S7446C10D1Ev,_ZThn1024_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C10 = {  "S7446C10", // class name
  bases_S7446C10, 9,
  &(vtc_S7446C10[0]), // expected_vtbl_contents
  &(vtt_S7446C10[0]), // expected_vtt_contents
  ABISELECT(1840,1196), // object size
  NSPAIRA(_ZTI8S7446C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7446C10),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7446C10),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7446C12  : S7446C2 , S7445C3 , S7446C10 {
  ::S7446C5 s7446c12f0;
  void *s7446c12f1;
  long double s7446c12f2;
  __tsi64 s7446c12f3[9];
  void *s7446c12f4[3];
  void *s7446c12f5;
  int s7446c12f6;
  ::S7445C11 s7446c12f7;
  virtual  ~S7446C12(); // _ZN8S7446C12D2Ev
  virtual void  v10(); // _ZN8S7446C123v10Ev
  S7446C12(); // tgen
};
//SIG(-1 S7446C12) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} BC3 BC4{ VBC5{ v2 v3 FL} VBC6{ VBC5 v4 v5 FC2 Fp} VBC7{ VBC3 FC2[5]} VBC8{ VBC7 BC2 BC5 BC3 vd} VBC2 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} vd v1 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9}


 S7446C12 ::~S7446C12(){ note_dtor("S7446C12", this);}
void  S7446C12 ::v10(){vfunc_called(this, "_ZN8S7446C123v10Ev");}
S7446C12 ::S7446C12(){ note_ctor("S7446C12", this);} // tgen

static void Test_S7446C12()
{
  extern Class_Descriptor cd_S7446C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(215,562)];
    init_test(&cd_S7446C12, buf);
    S7446C12 *dp, &lv = *(dp=new (buf) S7446C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3424,2244), "sizeof(S7446C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C12)");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1680,1120), "S7446C12");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1680,1120), "S7446C12");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1680,1120), "S7446C12");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1680,1120), "S7446C12");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), 0, "S7446C12");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*), ABISELECT(48,24), "S7446C12");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(1840,1232), "S7446C12");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1840,1232), "S7446C12");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(1856,1244), "S7446C12");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(2096,1388), "S7446C12");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(2096,1388), "S7446C12");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(3152,2072), "S7446C12");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(3192,2096), "S7446C12");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(3216,2108), "S7446C12");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(3152,2072), "S7446C12");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(3376,2220), "S7446C12");
    check_base_class_offset(lv, (S7446C10*), ABISELECT(208,136), "S7446C12");
    check_field_offset(lv, s7446c12f0, ABISELECT(304,208), "S7446C12.s7446c12f0");
    check_field_offset(lv, s7446c12f1, ABISELECT(1520,1004), "S7446C12.s7446c12f1");
    check_field_offset(lv, s7446c12f2, ABISELECT(1536,1008), "S7446C12.s7446c12f2");
    check_field_offset(lv, s7446c12f3, ABISELECT(1552,1020), "S7446C12.s7446c12f3");
    check_field_offset(lv, s7446c12f4, ABISELECT(1624,1092), "S7446C12.s7446c12f4");
    check_field_offset(lv, s7446c12f5, ABISELECT(1648,1104), "S7446C12.s7446c12f5");
    check_field_offset(lv, s7446c12f6, ABISELECT(1656,1108), "S7446C12.s7446c12f6");
    check_field_offset(lv, s7446c12f7, ABISELECT(1664,1112), "S7446C12.s7446c12f7");
    test_class_info(&lv, &cd_S7446C12);
    dp->~S7446C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C12(Test_S7446C12, "S7446C12", ABISELECT(3424,2244));

#else // __cplusplus

extern void _ZN8S7446C12C1Ev();
extern void _ZN8S7446C12D2Ev();
Name_Map name_map_S7446C12[] = {
  NSPAIR(_ZN8S7446C12C1Ev),
  NSPAIR(_ZN8S7446C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
static Base_Class bases_S7446C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    ABISELECT(1680,1120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7446C2,    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_S7445C3,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S7446C7,    ABISELECT(1840,1232), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1856,1244), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C5,    ABISELECT(2096,1388), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(3152,2072), //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
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(3192,2096), //bcp->offset
    46, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(3216,2108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C8,    ABISELECT(3152,2072), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(3376,2220), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(208,136), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7446C12[];
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn3152_N8S7446C12D1Ev,_ZThn2072_N8S7446C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
extern void ABISELECT(_ZThn3152_N8S7446C12D0Ev,_ZThn2072_N8S7446C12D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn3376_N8S7446C12D1Ev,_ZThn2220_N8S7446C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
extern void ABISELECT(_ZThn3376_N8S7446C12D0Ev,_ZThn2220_N8S7446C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7446C12[] = {
  ABISELECT(3376,2220),
  ABISELECT(3152,2072),
  ABISELECT(2096,1388),
  ABISELECT(1856,1244),
  ABISELECT(1840,1232),
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
  0,
  0,
  ABISELECT(-1840,-1232),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1856,-1244),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  ABISELECT(-416,-268),
  ABISELECT(-2096,-1388),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-3152,-2072),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-3152,-2072),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
  ABISELECT(-3192,-2096),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-3376,-2220),
  ABISELECT(-1696,-1100),
  ABISELECT(-3376,-2220),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7446C12[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A__8S7446C12[] = {
  ABISELECT(1680,1120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12[] = {
  ABISELECT(3168,2084),
  ABISELECT(2944,1936),
  ABISELECT(1472,984),
  ABISELECT(1888,1252),
  ABISELECT(1648,1108),
  ABISELECT(1632,1096),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__8S7446C12[] = {
  0,
  0,
  ABISELECT(-1632,-1096),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__8S7446C12[] = {
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-1648,-1108),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__8S7446C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(-1888,-1252),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn2944_N8S7446C10D1Ev,_ZThn1936_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn2944_N8S7446C10D0Ev,_ZThn1936_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__8S7446C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2944,-1936),
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  ABISELECT(-2944,-1936),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__8S7446C12[] = {
  ABISELECT(-2984,-1960),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn3168_N8S7446C10D1Ev,_ZThn2084_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn3168_N8S7446C10D0Ev,_ZThn2084_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__8S7446C12[] = {
  ABISELECT(-3168,-2084),
  ABISELECT(-1696,-1100),
  ABISELECT(-3168,-2084),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__8S7446C12[] = {
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12[] = {
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12[] = {
  ABISELECT(-1056,-684),
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__A1__8S7446C12[] = {
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__8S7446C12[] = {
  ABISELECT(-416,-268),
  ABISELECT(1056,684),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12[] = {
  ABISELECT(-1696,-1100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTT_ENTRY vtt_S7446C12[] = {
  {&(_ZTV8S7446C12[8]),  8,56},
  {&(_tg__ZTV7S7446C2__A__8S7446C12[3]),  3,5},
  {&(_tg__ZTV8S7446C10__8S7446C12[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__8S7446C12[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__8S7446C12[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__8S7446C12[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__8S7446C12[4]),  4,6},
  {&(_ZTV8S7446C12[19]),  19,56},
  {&(_ZTV8S7446C12[25]),  25,56},
  {&(_ZTV8S7446C12[32]),  32,56},
  {&(_ZTV8S7446C12[37]),  37,56},
  {&(_ZTV8S7446C12[44]),  44,56},
  {&(_ZTV8S7446C12[48]),  48,56},
  {&(_ZTV8S7446C12[54]),  54,56},
  {&(_tg__ZTV7S7446C6__8S7446C12[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C5__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__A1__8S7446C12[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__8S7446C12[3]),  3,3},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7446C10D0Ev,_ZThn2084_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3168_N8S7446C10D1Ev,_ZThn2084_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7446C10D0Ev,_ZThn1936_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S7446C10D1Ev,_ZThn1936_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7446C12D0Ev,_ZThn2220_N8S7446C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3376_N8S7446C12D1Ev,_ZThn2220_N8S7446C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7446C12D0Ev,_ZThn2072_N8S7446C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N8S7446C12D1Ev,_ZThn2072_N8S7446C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C12 = {  "S7446C12", // class name
  bases_S7446C12, 12,
  &(vtc_S7446C12[0]), // expected_vtbl_contents
  &(vtt_S7446C12[0]), // expected_vtt_contents
  ABISELECT(3424,2244), // object size
  NSPAIRA(_ZTI8S7446C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7446C12),56, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7446C12),23, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7446C9  : virtual S7446C6 , virtual S7446C8 , virtual S7446C10 , virtual S7446C12 {
  ::S20291C14_nt s7446c9f0;
  int s7446c9f1;
  int s7446c9f2[8];
  __tsi64 s7446c9f3;
  virtual  ~S7446C9(); // _ZN7S7446C9D2Ev
  virtual void  v11(); // _ZN7S7446C93v11Ev
  S7446C9(); // tgen
};
//SIG(-1 S7446C9) C1{ VBC2{ VBC3{ v2 v3 FL} v4 v5 FC4{ VBC5{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} Fp} VBC6{ VBC7{ VBC5 FC4[5]} BC4 BC3 BC5 vd} VBC8{ VBC3 VBC2 VBC7 VBC6 VBC4 vd FL FD FU9{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC10{ BC4 BC5 BC8 vd v6 FC7 Fp FD FL[9] Fp[3] Fp Fi FU9} vd v1 FC11{} Fi Fi[8] FL}


 S7446C9 ::~S7446C9(){ note_dtor("S7446C9", this);}
void  S7446C9 ::v11(){vfunc_called(this, "_ZN7S7446C93v11Ev");}
S7446C9 ::S7446C9(){ note_ctor("S7446C9", this);} // tgen

static void Test_S7446C9()
{
  extern Class_Descriptor cd_S7446C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(224,593)];
    init_test(&cd_S7446C9, buf);
    S7446C9 *dp, &lv = *(dp=new (buf) S7446C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3568,2368), "sizeof(S7446C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C9)");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(296,196), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(296,196), "S7446C9");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*)(S7446C12*), ABISELECT(296,196), "S7446C9");
    check_base_class_offset(lv, (S7446C6*), ABISELECT(64,52), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(64,52), "S7446C9");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*)(S7446C12*), ABISELECT(64,52), "S7446C9");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(1600,1040), "S7446C9");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(1600,1040), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(1600,1040), "S7446C9");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C12*), ABISELECT(1600,1040), "S7446C9");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(544,356), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(544,356), "S7446C9");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*)(S7446C12*), ABISELECT(544,356), "S7446C9");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(320,208), "S7446C9");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(360,232), "S7446C9");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(384,244), "S7446C9");
    check_base_class_offset(lv, (S7446C8*), ABISELECT(320,208), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(320,208), "S7446C9");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*)(S7446C12*), ABISELECT(320,208), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(1848,1224), "S7446C9");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*)(S7446C12*), ABISELECT(1848,1224), "S7446C9");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C10*), ABISELECT(1760,1152), "S7446C9");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C12*), ABISELECT(1888,1248), "S7446C9");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C12*), ABISELECT(1936,1272), "S7446C9");
    check_base_class_offset(lv, (S7446C10*)(S7446C12*), ABISELECT(2096,1384), "S7446C9");
    check_base_class_offset(lv, (S7446C12*), ABISELECT(1888,1248), "S7446C9");
    check_field_offset(lv, s7446c9f0, ABISELECT(8,4), "S7446C9.s7446c9f0");
    check_field_offset(lv, s7446c9f1, ABISELECT(12,8), "S7446C9.s7446c9f1");
    check_field_offset(lv, s7446c9f2, ABISELECT(16,12), "S7446C9.s7446c9f2");
    check_field_offset(lv, s7446c9f3, ABISELECT(48,44), "S7446C9.s7446c9f3");
    test_class_info(&lv, &cd_S7446C9);
    dp->~S7446C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C9(Test_S7446C9, "S7446C9", ABISELECT(3568,2368));

#else // __cplusplus

extern void _ZN7S7446C9C1Ev();
extern void _ZN7S7446C9D2Ev();
Name_Map name_map_S7446C9[] = {
  NSPAIR(_ZN7S7446C9C1Ev),
  NSPAIR(_ZN7S7446C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C12;
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
static Base_Class bases_S7446C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7446C7,    ABISELECT(296,196), //bcp->offset
    20, //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_S7446C6,    ABISELECT(64,52), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7445C3,    ABISELECT(1600,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C5,    ABISELECT(544,356), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(320,208), //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(360,232), //bcp->offset
    35, //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(384,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
    7, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(320,208), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1848,1224), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(1760,1152), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(1888,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(1936,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C10,    ABISELECT(2096,1384), //bcp->offset
    72, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7446C12,    ABISELECT(1888,1248), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C9[];
extern void _ZN7S7446C9D1Ev();
extern void _ZN7S7446C9D0Ev();
extern void _ZN7S7446C93v11Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn320_N7S7446C9D1Ev,_ZThn208_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn320_N7S7446C9D0Ev,_ZThn208_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1760_N7S7446C9D1Ev,_ZThn1152_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1760_N7S7446C9D0Ev,_ZThn1152_N7S7446C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1848_N7S7446C9D1Ev,_ZThn1224_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1848_N7S7446C9D0Ev,_ZThn1224_N7S7446C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1888_N7S7446C9D1Ev,_ZThn1248_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1888_N7S7446C9D0Ev,_ZThn1248_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev)();
static  VTBL_ENTRY vtc_S7446C9[] = {
  ABISELECT(1888,1248),
  ABISELECT(1848,1224),
  ABISELECT(1760,1152),
  ABISELECT(1600,1040),
  ABISELECT(544,356),
  ABISELECT(320,208),
  ABISELECT(296,196),
  ABISELECT(64,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-320,-208),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(1056,684),
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  ABISELECT(-1760,-1152),
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  ABISELECT(-1760,-1152),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  ABISELECT(-1848,-1224),
  ABISELECT(-248,-184),
  ABISELECT(-1848,-1224),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev),
  0,
  ABISELECT(-1888,-1248),
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  ABISELECT(-1888,-1248),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-2096,-1384),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7446C9[];
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C9[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C9[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C9[] = {
  ABISELECT(224,148),
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__7S7446C9[] = {
  ABISELECT(1280,832),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C9[] = {
  ABISELECT(1056,684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C9[] = {
  ABISELECT(88,72),
  ABISELECT(-1440,-944),
  ABISELECT(-160,-112),
  ABISELECT(-1216,-796),
  ABISELECT(-1696,-1100),
  ABISELECT(-1464,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__7S7446C9[] = {
  0,
  0,
  ABISELECT(1464,956),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1696,1100),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1216,796),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1440,944),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1440,944),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C9[] = {
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__7S7446C9[] = {
  ABISELECT(-88,-72),
  ABISELECT(-248,-184),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__7S7446C9[] = {
  ABISELECT(-248,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C9[] = {
  ABISELECT(-40,-24),
  ABISELECT(-1568,-1040),
  ABISELECT(-1344,-892),
  ABISELECT(-1824,-1196),
  ABISELECT(-1592,-1052),
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C28S7446C12__A2__7S7446C9[] = {
  ABISELECT(-288,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C9[] = {
  0,
  0,
  ABISELECT(1800,1188),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(2032,1332),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1552,1028),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1776,1176),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1776,1176),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(1736,1152),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C9[] = {
  ABISELECT(248,160),
  ABISELECT(-248,-184),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12__7S7446C9[] = {
  ABISELECT(-248,-160),
  ABISELECT(-1776,-1176),
  ABISELECT(-496,-344),
  ABISELECT(-1552,-1028),
  ABISELECT(-2032,-1332),
  ABISELECT(-1800,-1188),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C12__7S7446C9[] = {
  0,
  0,
  ABISELECT(1592,1052),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12__7S7446C9[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(1824,1196),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12__7S7446C9[] = {
  ABISELECT(1056,684),
  ABISELECT(1344,892),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(1568,1040),
  ABISELECT(224,148),
  ABISELECT(1280,832),
  ABISELECT(1568,1040),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C9[] = {
  ABISELECT(1528,1016),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12__7S7446C9[] = {
  ABISELECT(40,24),
  ABISELECT(-248,-184),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
static  VTT_ENTRY vtt_S7446C9[] = {
  {&(_ZTV7S7446C9[10]),  10,82},
  {&(_ZTV7S7446C9[18]),  18,82},
  {&(_ZTV7S7446C9[24]),  24,82},
  {&(_ZTV7S7446C9[33]),  33,82},
  {&(_ZTV7S7446C9[42]),  42,82},
  {&(_ZTV7S7446C9[37]),  37,82},
  {&(_ZTV7S7446C9[51]),  51,82},
  {&(_ZTV7S7446C9[57]),  57,82},
  {&(_ZTV7S7446C9[69]),  69,82},
  {&(_ZTV7S7446C9[80]),  80,82},
  {&(_tg__ZTV7S7446C6__7S7446C9[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C8__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__7S7446C9[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C5__7S7446C9[3]),  3,3},
  {&(_tg__ZTV8S7446C10__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C2__A1__7S7446C9[3]),  3,5},
  {&(_tg__ZTV8S7446C12__7S7446C9[8]),  8,11},
  {&(_tg__ZTV7S7446C28S7446C12__A2__7S7446C9[3]),  3,5},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C9[4]),  4,6},
  {&(_tg__ZTV8S7446C10__8S7446C12__7S7446C9[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C12__7S7446C9[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C12__7S7446C9[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C12__7S7446C9[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12__7S7446C9[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C9[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12__7S7446C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C9[];
extern  VTBL_ENTRY _ZTV7S7446C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C9[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7446C9D0Ev,_ZThn1224_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1848_N7S7446C9D1Ev,_ZThn1224_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7446C9D0Ev,_ZThn1248_N7S7446C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7446C9D0Ev,_ZThn1152_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1888_N7S7446C9D1Ev,_ZThn1248_N7S7446C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1760_N7S7446C9D1Ev,_ZThn1152_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7446C9D0Ev,_ZThn208_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7446C9D1Ev,_ZThn208_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C9 = {  "S7446C9", // class name
  bases_S7446C9, 14,
  &(vtc_S7446C9[0]), // expected_vtbl_contents
  &(vtt_S7446C9[0]), // expected_vtt_contents
  ABISELECT(3568,2368), // object size
  NSPAIRA(_ZTI7S7446C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C9),82, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C9),40, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7446C1  : S7446C2 , virtual S7446C4 , virtual S7446C8 , S7446C9 {
  __tsi64 s7446c1f0;
  __tsi64 s7446c1f1;
  void *s7446c1f2;
  virtual void  v1(); // _ZN7S7446C12v1Ev
  virtual void  v2(); // _ZN7S7446C12v2Ev
  virtual void  v3(); // _ZN7S7446C12v3Ev
  virtual void  v4(); // _ZN7S7446C12v4Ev
  ~S7446C1(); // tgen
  S7446C1(); // tgen
};
//SIG(1 S7446C1) C1{ BC2{ VBC3{ m Fp Fs Fi FD[8] Fi} vd Fi Fp FL:62 Fc:4} VBC4{ BC3 VBC5{ VBC3 FC2[5]} VBC6{ VBC7{ v5 v6 FL} v7 v8 FC2 Fp} BC8{ VBC5 BC2 BC7 BC3 vd} vd v9 Fi FL} VBC8 BC9{ VBC6 VBC8 VBC10{ VBC7 VBC6 VBC5 VBC8 VBC2 vd FL FD FU11{ m FL Fp}[3] Fi Fp Fc Fi FL} VBC12{ BC2 BC3 BC10 vd v10 FC5 Fp FD FL[9] Fp[3] Fp Fi FU11} vd v11 FC13{} Fi Fi[8] FL} v1 v2 v3 v4 FL FL Fp}


void  S7446C1 ::v1(){vfunc_called(this, "_ZN7S7446C12v1Ev");}
void  S7446C1 ::v2(){vfunc_called(this, "_ZN7S7446C12v2Ev");}
void  S7446C1 ::v3(){vfunc_called(this, "_ZN7S7446C12v3Ev");}
void  S7446C1 ::v4(){vfunc_called(this, "_ZN7S7446C12v4Ev");}
S7446C1 ::~S7446C1(){ note_dtor("S7446C1", this);} // tgen
S7446C1 ::S7446C1(){ note_ctor("S7446C1", this);} // tgen

static void Test_S7446C1()
{
  extern Class_Descriptor cd_S7446C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(253,672)];
    init_test(&cd_S7446C1, buf);
    S7446C1 *dp, &lv = *(dp=new (buf) S7446C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4032,2684), "sizeof(S7446C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7446C1)");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(128,96), "S7446C1");
    check_base_class_offset(lv, (S7445C3*)(S7446C5*), ABISELECT(128,96), "S7446C1");
    check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*)(S7446C4*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C8*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C2*)(S7446C12*), ABISELECT(128,96), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*), 0, "S7446C1");
    /*is_ambiguous_... S7446C4::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C4*), ABISELECT(512,356), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C4*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C8*)(S7446C4*), ABISELECT(688,480), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C8*), ABISELECT(688,480), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C5*)(S7446C10*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C5*)(S7446C10*)(S7446C12*), ABISELECT(688,480), "S7446C1");
    check_base_class_offset(lv, (S7446C7*)(S7446C6*), ABISELECT(1976,1308), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*), ABISELECT(1976,1308), "S7446C1");
    /*is_ambiguous_... S7446C10::S7446C7 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C10*)(S7446C12*), ABISELECT(1976,1308), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C4*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C9*), ABISELECT(1744,1164), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C6*)(S7446C10*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C6*)(S7446C10*)(S7446C12*), ABISELECT(1744,1164), "S7446C1");
    check_base_class_offset(lv, (S7446C2*)(S7446C8*)(S7446C4*), ABISELECT(288,208), "S7446C1");
    check_base_class_offset(lv, (S7446C7*)(S7446C8*)(S7446C4*), ABISELECT(328,232), "S7446C1");
    /*is_ambiguous_... S7446C8::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*)(S7446C4*), ABISELECT(352,244), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C4*), ABISELECT(288,208), "S7446C1");
    check_base_class_offset(lv, (S7446C4*), ABISELECT(288,208), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C8*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C7*)(S7446C8*), ABISELECT(2040,1344), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C8*), ABISELECT(2064,1356), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C8 */ AMB_check_base_class_offset(lv, (S7446C8*), ABISELECT(2000,1320), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C9*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C8*)(S7446C10*), ABISELECT(2000,1320), "S7446C1");
    check_base_class_offset(lv, (S7446C8*)(S7446C10*)(S7446C12*), ABISELECT(2000,1320), "S7446C1");
    /*is_ambiguous_... S7446C1::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*), ABISELECT(2312,1540), "S7446C1");
    /*is_ambiguous_... S7446C10::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C10*)(S7446C12*), ABISELECT(2312,1540), "S7446C1");
    /*is_ambiguous_... S7446C9::S7446C10 */ AMB_check_base_class_offset(lv, (S7446C10*)(S7446C9*), ABISELECT(2224,1468), "S7446C1");
    /*is_ambiguous_... S7446C12::S7446C2 */ AMB_check_base_class_offset(lv, (S7446C2*)(S7446C12*), ABISELECT(2352,1564), "S7446C1");
    /*is_ambiguous_... S7446C12::S7445C3 */ AMB_check_base_class_offset(lv, (S7445C3*)(S7446C12*), ABISELECT(2400,1588), "S7446C1");
    check_base_class_offset(lv, (S7446C10*)(S7446C12*), ABISELECT(2560,1700), "S7446C1");
    check_base_class_offset(lv, (S7446C12*)(S7446C9*), ABISELECT(2352,1564), "S7446C1");
    check_base_class_offset(lv, (S7446C9*), ABISELECT(40,24), "S7446C1");
    check_field_offset(lv, s7446c1f0, ABISELECT(96,76), "S7446C1.s7446c1f0");
    check_field_offset(lv, s7446c1f1, ABISELECT(104,84), "S7446C1.s7446c1f1");
    check_field_offset(lv, s7446c1f2, ABISELECT(112,92), "S7446C1.s7446c1f2");
    test_class_info(&lv, &cd_S7446C1);
    dp->~S7446C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7446C1(Test_S7446C1, "S7446C1", ABISELECT(4032,2684));

#else // __cplusplus

extern void _ZN7S7446C1C1Ev();
extern void _ZN7S7446C1D1Ev();
Name_Map name_map_S7446C1[] = {
  NSPAIR(_ZN7S7446C1C1Ev),
  NSPAIR(_ZN7S7446C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C5;
extern VTBL_ENTRY _ZTI7S7446C5[];
extern  VTBL_ENTRY _ZTV7S7446C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C5[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7446C6;
extern VTBL_ENTRY _ZTI7S7446C6[];
extern  VTBL_ENTRY _ZTV7S7446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C6[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C4;
extern VTBL_ENTRY _ZTI7S7446C4[];
extern  VTBL_ENTRY _ZTV7S7446C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C4[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C7;
extern VTBL_ENTRY _ZTI7S7446C7[];
extern  VTBL_ENTRY _ZTV7S7446C7[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C8;
extern VTBL_ENTRY _ZTI7S7446C8[];
extern  VTBL_ENTRY _ZTV7S7446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C8[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C2;
extern VTBL_ENTRY _ZTI7S7446C2[];
extern  VTBL_ENTRY _ZTV7S7446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C2[];
extern Class_Descriptor cd_S7445C3;
extern VTBL_ENTRY _ZTI7S7445C3[];
extern Class_Descriptor cd_S7446C10;
extern VTBL_ENTRY _ZTI8S7446C10[];
extern  VTBL_ENTRY _ZTV8S7446C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C10[];
extern Class_Descriptor cd_S7446C12;
extern VTBL_ENTRY _ZTI8S7446C12[];
extern  VTBL_ENTRY _ZTV8S7446C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7446C12[];
extern Class_Descriptor cd_S7446C9;
extern VTBL_ENTRY _ZTI7S7446C9[];
extern  VTBL_ENTRY _ZTV7S7446C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C9[];
static Base_Class bases_S7446C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7445C3,    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
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7446C2,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7445C3,    ABISELECT(512,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C5,    ABISELECT(688,480), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7446C7,    ABISELECT(1976,1308), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S7446C6,    ABISELECT(1744,1164), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(288,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(328,232), //bcp->offset
    43, //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
    9, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(352,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7446C8,    ABISELECT(288,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7446C4,    ABISELECT(288,208), //bcp->offset
    30, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(2000,1320), //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
    14, //immediately_derived
  0, 0},
  {&cd_S7446C7,    ABISELECT(2040,1344), //bcp->offset
    72, //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2064,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C8,    ABISELECT(2000,1320), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7446C2,    ABISELECT(2312,1540), //bcp->offset
    87, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7446C10,    ABISELECT(2224,1468), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7446C2,    ABISELECT(2352,1564), //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7445C3,    ABISELECT(2400,1588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7446C10,    ABISELECT(2560,1700), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7446C12,    ABISELECT(2352,1564), //bcp->offset
    93, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7446C9,    ABISELECT(40,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7446C1[];
extern void _ZN7S7446C1D1Ev();
extern void _ZN7S7446C1D0Ev();
extern void _ZN7S7446C12v1Ev();
extern void _ZN7S7446C12v2Ev();
extern void _ZN7S7446C12v3Ev();
extern void _ZN7S7446C12v4Ev();
extern void ABISELECT(_ZThn40_N7S7446C1D1Ev,_ZThn24_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7446C1D0Ev,_ZThn24_N7S7446C1D0Ev)();
extern void _ZN7S7446C93v11Ev();
extern void ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7446C1D1Ev,_ZThn208_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7446C1D0Ev,_ZThn208_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN7S7446C42v9Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2000_N7S7446C1D1Ev,_ZThn1320_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2000_N7S7446C1D0Ev,_ZThn1320_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
extern void ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2224_N7S7446C1D1Ev,_ZThn1468_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2224_N7S7446C1D0Ev,_ZThn1468_N7S7446C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C1D1Ev,_ZThn1540_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C1D0Ev,_ZThn1540_N7S7446C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZThn2352_N7S7446C1D1Ev,_ZThn1564_N7S7446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev)();
extern void ABISELECT(_ZThn2352_N7S7446C1D0Ev,_ZThn1564_N7S7446C1D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
extern void ABISELECT(_ZTvn208_n72_N7S7446C1D1Ev,_ZTvn136_n36_N7S7446C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C1D0Ev,_ZTvn136_n36_N7S7446C1D0Ev)();
static  VTBL_ENTRY vtc_S7446C1[] = {
  ABISELECT(2352,1564),
  ABISELECT(2312,1540),
  ABISELECT(2224,1468),
  ABISELECT(2000,1320),
  ABISELECT(1976,1308),
  ABISELECT(1744,1164),
  ABISELECT(688,480),
  ABISELECT(288,208),
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7446C12v4Ev,
  ABISELECT(2312,1540),
  ABISELECT(2272,1516),
  ABISELECT(2184,1444),
  ABISELECT(88,72),
  ABISELECT(648,456),
  ABISELECT(1960,1296),
  ABISELECT(1936,1284),
  ABISELECT(1704,1140),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7446C1D1Ev,_ZThn24_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7446C1D0Ev,_ZThn24_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-288,-208),
  ABISELECT(1688,1100),
  ABISELECT(1456,956),
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  ABISELECT(-288,-208),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
  ABISELECT(-328,-232),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-560,-384),
  ABISELECT(-688,-480),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1744,-1164),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
  0,
  0,
  ABISELECT(-1976,-1308),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-2000,-1320),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(-2000,-1320),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev),
  ABISELECT(-2040,-1344),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
  ABISELECT(-2224,-1468),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2224,-1468),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev),
  ABISELECT(-2312,-1540),
  ABISELECT(-2184,-1444),
  ABISELECT(-2312,-1540),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev),
  0,
  ABISELECT(-2352,-1564),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  ABISELECT(-2352,-1564),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2560,-1700),
  (VTBL_ENTRY)&(_ZTI7S7446C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C1D1Ev,_ZTvn136_n36_N7S7446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C1D0Ev,_ZTvn136_n36_N7S7446C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7446C1[];
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A__7S7446C1[] = {
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN7S7446C9D1Ev();
extern void _ZN7S7446C9D0Ev();
extern void _ZN7S7446C93v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C9__7S7446C1[] = {
  ABISELECT(2312,1540),
  ABISELECT(2272,1516),
  ABISELECT(2184,1444),
  ABISELECT(88,72),
  ABISELECT(648,456),
  ABISELECT(1960,1296),
  ABISELECT(1936,1284),
  ABISELECT(1704,1140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C93v11Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C9__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1704,-1140),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C9__7S7446C1[] = {
  0,
  0,
  ABISELECT(-1936,-1284),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn1960_N7S7446C9D1Ev,_ZThn1296_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn1960_N7S7446C9D0Ev,_ZThn1296_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C8__7S7446C9__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(-1960,-1296),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(-1960,-1296),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C9__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-648,-456),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-2000,-1320),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2184_N7S7446C9D1Ev,_ZThn1444_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2184_N7S7446C9D0Ev,_ZThn1444_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C9__7S7446C1[] = {
  ABISELECT(-2184,-1444),
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  ABISELECT(-2184,-1444),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2272_N7S7446C9D1Ev,_ZThn1516_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2272_N7S7446C9D0Ev,_ZThn1516_N7S7446C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-2272,-1516),
  ABISELECT(-2184,-1444),
  ABISELECT(-2272,-1516),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C9D1Ev,_ZThn1540_N7S7446C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev)();
extern void ABISELECT(_ZThn2312_N7S7446C9D0Ev,_ZThn1540_N7S7446C9D0Ev)() __attribute__((weak));
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C9__7S7446C1[] = {
  0,
  ABISELECT(-2312,-1540),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  ABISELECT(-2312,-1540),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev),
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C9__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-2520,-1676),
  (VTBL_ENTRY)&(_ZTI7S7446C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D1Ev,_ZTvn136_n36_N7S7446C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N7S7446C9D0Ev,_ZTvn136_n36_N7S7446C9D0Ev),
};
extern void _ZN7S7446C4D1Ev();
extern void _ZN7S7446C4D0Ev();
extern void _ZN7S7446C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C4__7S7446C1[] = {
  ABISELECT(1688,1100),
  ABISELECT(1456,956),
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7446C42v9Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C87S7446C4__7S7446C1[] = {
  ABISELECT(400,272),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C87S7446C4__A1__7S7446C1[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C87S7446C4__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C4__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(-400,-272),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C4__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(-1456,-956),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C4__7S7446C1[] = {
  0,
  0,
  ABISELECT(-1688,-1100),
  (VTBL_ENTRY)&(_ZTI7S7446C4[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C1[] = {
  ABISELECT(-560,-384),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C5[0]),
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__7S7446C1[] = {
  ABISELECT(232,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__7S7446C6__7S7446C1[] = {
  0,
  0,
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S7446C6[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C8D1Ev();
extern void _ZN7S7446C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C8__A1__7S7446C1[] = {
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
  (VTBL_ENTRY)&_ZN7S7446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C8D0Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C27S7446C8__A2__7S7446C1[] = {
  ABISELECT(-1872,-1224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__7S7446C8__A1__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1312,840),
  (VTBL_ENTRY)&(_ZTI7S7446C8[0]),
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C10__7S7446C1[] = {
  ABISELECT(88,72),
  ABISELECT(-224,-148),
  ABISELECT(-2096,-1372),
  ABISELECT(-1536,-988),
  ABISELECT(-480,-304),
  ABISELECT(-248,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C10__7S7446C1[] = {
  0,
  0,
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C10__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(480,304),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C10__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1536,988),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C10__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(224,148),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C1[] = {
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C10__7S7446C1[] = {
  ABISELECT(-88,-72),
  ABISELECT(-2184,-1444),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A3__7S7446C1[] = {
  ABISELECT(-2184,-1444),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C12D1Ev();
extern void _ZN8S7446C12D0Ev();
extern void _ZN8S7446C123v10Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C12__7S7446C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  ABISELECT(-1664,-1084),
  ABISELECT(-608,-400),
  ABISELECT(-376,-256),
  ABISELECT(-2224,-1468),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN8S7446C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7446C123v10Ev,
};
extern void _ZN7S7446C2D1Ev();
extern void _ZN7S7446C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C28S7446C12__A4__7S7446C1[] = {
  ABISELECT(-2224,-1468),
  0,
  (VTBL_ENTRY)&(_ZTI7S7446C2[0]),
  (VTBL_ENTRY)&_ZN7S7446C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7446C2D0Ev,
};
extern void _ZN8S7446C10D1Ev();
extern void _ZN8S7446C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN8S7446C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7446C10D0Ev,
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C1[] = {
  0,
  0,
  ABISELECT(584,392),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(816,536),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1872,1220),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(560,380),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(560,380),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D1Ev,_ZTv0_n20_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C10D0Ev,_ZTv0_n20_N8S7446C10D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(520,356),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C1[] = {
  ABISELECT(248,160),
  ABISELECT(-2184,-1444),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI8S7446C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev),
};
extern void ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7446C10__8S7446C12__7S7446C1[] = {
  ABISELECT(-248,-160),
  ABISELECT(-560,-380),
  ABISELECT(-2432,-1604),
  ABISELECT(-1872,-1220),
  ABISELECT(-816,-536),
  ABISELECT(-584,-392),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D1Ev,_ZThn136_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S7446C12D0Ev,_ZThn136_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C7__8S7446C12__7S7446C1[] = {
  0,
  0,
  ABISELECT(376,256),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void _ZN7S7446C62v7Ev();
extern void _ZN7S7446C62v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C6__8S7446C12__7S7446C1[] = {
  0,
  0,
  ABISELECT(232,144),
  ABISELECT(608,400),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7446C62v8Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7446C5__8S7446C12__7S7446C1[] = {
  ABISELECT(-560,-384),
  ABISELECT(1664,1084),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C8__8S7446C12__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(352,244),
  ABISELECT(-1312,-840),
  ABISELECT(-1872,-1224),
  ABISELECT(352,244),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D1Ev,_ZTv0_n20_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7446C12D0Ev,_ZTv0_n20_N8S7446C12D0Ev),
};
extern void _ZN7S7446C72v5Ev();
extern void _ZN7S7446C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C1[] = {
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&_ZN7S7446C72v5Ev,
  (VTBL_ENTRY)&_ZN7S7446C72v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7446C2__A2__8S7446C12__7S7446C1[] = {
  ABISELECT(40,24),
  ABISELECT(-2184,-1444),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7446C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D1Ev,_ZTv0_n16_N8S7446C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7446C12D0Ev,_ZTv0_n16_N8S7446C12D0Ev),
};
static  VTT_ENTRY vtt_S7446C1[] = {
  {&(_ZTV7S7446C1[11]),  11,116},
  {&(_tg__ZTV7S7446C2__A__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C9__7S7446C1[10]),  10,13},
  {&(_tg__ZTV7S7446C6__7S7446C9__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C7__7S7446C9__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C8__7S7446C9__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C5__7S7446C9__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C77S7446C8__A1__7S7446C9__7S7446C1[2]),  2,4},
  {&(_tg__ZTV8S7446C10__7S7446C9__7S7446C1[9]),  9,11},
  {&(_tg__ZTV7S7446C2__A1__7S7446C9__7S7446C1[4]),  4,6},
  {&(_tg__ZTV8S7446C12__7S7446C9__7S7446C1[10]),  10,13},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C9__7S7446C1[8]),  8,10},
  {&(_ZTV7S7446C1[40]),  40,116},
  {&(_ZTV7S7446C1[50]),  50,116},
  {&(_ZTV7S7446C1[55]),  55,116},
  {&(_ZTV7S7446C1[61]),  61,116},
  {&(_ZTV7S7446C1[45]),  45,116},
  {&(_ZTV7S7446C1[70]),  70,116},
  {&(_ZTV7S7446C1[74]),  74,116},
  {&(_ZTV7S7446C1[27]),  27,116},
  {&(_ZTV7S7446C1[85]),  85,116},
  {&(_ZTV7S7446C1[91]),  91,116},
  {&(_ZTV7S7446C1[103]),  103,116},
  {&(_ZTV7S7446C1[114]),  114,116},
  {&(_tg__ZTV7S7446C4__7S7446C1[6]),  6,9},
  {&(_tg__ZTV7S7446C87S7446C4__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C87S7446C4__A1__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C87S7446C4__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C5__7S7446C4__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C4__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C7__7S7446C4__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C5__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C6__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C7__7S7446C6__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C8__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C27S7446C8__A2__7S7446C1[3]),  3,5},
  {&(_tg__ZTV7S7446C5__7S7446C8__A1__7S7446C1[3]),  3,3},
  {&(_tg__ZTV8S7446C10__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C10__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C10__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C10__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C10__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C10__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C10__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C2__A3__7S7446C1[3]),  3,5},
  {&(_tg__ZTV8S7446C12__7S7446C1[8]),  8,11},
  {&(_tg__ZTV7S7446C28S7446C12__A4__7S7446C1[3]),  3,5},
  {&(_tg__ZTV8S7446C108S7446C12__A1__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C108S7446C12__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C108S7446C12__A1__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C108S7446C12__A1__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C108S7446C12__A1__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C108S7446C12__A1__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A1__8S7446C108S7446C12__A1__7S7446C1[4]),  4,6},
  {&(_tg__ZTV8S7446C10__8S7446C12__7S7446C1[8]),  8,10},
  {&(_tg__ZTV7S7446C7__8S7446C12__7S7446C1[4]),  4,6},
  {&(_tg__ZTV7S7446C6__8S7446C12__7S7446C1[5]),  5,7},
  {&(_tg__ZTV7S7446C5__8S7446C12__7S7446C1[3]),  3,3},
  {&(_tg__ZTV7S7446C8__8S7446C12__7S7446C1[7]),  7,9},
  {&(_tg__ZTV7S7446C77S7446C8__A1__8S7446C12__7S7446C1[2]),  2,4},
  {&(_tg__ZTV7S7446C2__A2__8S7446C12__7S7446C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7446C1[];
extern  VTBL_ENTRY _ZTV7S7446C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7446C1[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D0Ev,_ZTv0_n16_N8S7446C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D0Ev,_ZThn72_N8S7446C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7446C10D1Ev,_ZTv0_n16_N8S7446C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7446C10D1Ev,_ZThn72_N8S7446C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D0Ev,_ZTv0_n16_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7446C9D0Ev,_ZThn1516_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C9D1Ev,_ZTv0_n16_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N7S7446C9D1Ev,_ZThn1516_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D0Ev,_ZTv0_n36_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C9D0Ev,_ZThn1540_N7S7446C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7446C9D0Ev,_ZThn1444_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C9D1Ev,_ZTv0_n36_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C9D1Ev,_ZThn1540_N7S7446C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2184_N7S7446C9D1Ev,_ZThn1444_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D0Ev,_ZTv0_n20_N7S7446C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7446C9D0Ev,_ZThn1296_N7S7446C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C9D1Ev,_ZTv0_n20_N7S7446C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S7446C9D1Ev,_ZThn1296_N7S7446C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C1D0Ev,_ZTv0_n16_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C1D0Ev,_ZThn1540_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7446C1D1Ev,_ZTv0_n16_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2312_N7S7446C1D1Ev,_ZThn1540_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C1D0Ev,_ZTv0_n36_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7446C1D0Ev,_ZThn1564_N7S7446C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7446C1D0Ev,_ZThn1468_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7446C1D1Ev,_ZTv0_n36_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2352_N7S7446C1D1Ev,_ZThn1564_N7S7446C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N7S7446C1D1Ev,_ZThn1468_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C1D0Ev,_ZTv0_n20_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7446C1D0Ev,_ZThn1320_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7446C1D1Ev,_ZTv0_n20_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2000_N7S7446C1D1Ev,_ZThn1320_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7446C1D0Ev,_ZTv0_n28_N7S7446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7446C1D0Ev,_ZThn208_N7S7446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7446C1D1Ev,_ZTv0_n28_N7S7446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7446C1D1Ev,_ZThn208_N7S7446C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7446C1 = {  "S7446C1", // class name
  bases_S7446C1, 22,
  &(vtc_S7446C1[0]), // expected_vtbl_contents
  &(vtt_S7446C1[0]), // expected_vtt_contents
  ABISELECT(4032,2684), // object size
  NSPAIRA(_ZTI7S7446C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7446C1),116, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7446C1),61, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S793C4  : S1868C4_nt {
  void *s793c4f0[2];
  virtual  ~S793C4(); // _ZN6S793C4D1Ev
  virtual void  v4(); // _ZN6S793C42v4Ev
  virtual void  v5(); // _ZN6S793C42v5Ev
  virtual void  v6(); // _ZN6S793C42v6Ev
  virtual void  v7(); // _ZN6S793C42v7Ev
  virtual void  v8(); // _ZN6S793C42v8Ev
  virtual void  v9(); // _ZN6S793C42v9Ev
  virtual void  v10(); // _ZN6S793C43v10Ev
  S793C4(); // tgen
};
//SIG(-1 S793C4) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S793C4 ::~S793C4(){ note_dtor("S793C4", this);}
void  S793C4 ::v4(){vfunc_called(this, "_ZN6S793C42v4Ev");}
void  S793C4 ::v5(){vfunc_called(this, "_ZN6S793C42v5Ev");}
void  S793C4 ::v6(){vfunc_called(this, "_ZN6S793C42v6Ev");}
void  S793C4 ::v7(){vfunc_called(this, "_ZN6S793C42v7Ev");}
void  S793C4 ::v8(){vfunc_called(this, "_ZN6S793C42v8Ev");}
void  S793C4 ::v9(){vfunc_called(this, "_ZN6S793C42v9Ev");}
void  S793C4 ::v10(){vfunc_called(this, "_ZN6S793C43v10Ev");}
S793C4 ::S793C4(){ note_ctor("S793C4", this);} // tgen

static void Test_S793C4()
{
  extern Class_Descriptor cd_S793C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S793C4, buf);
    S793C4 *dp, &lv = *(dp=new (buf) S793C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S793C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C4)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S793C4");
    check_field_offset(lv, s793c4f0, ABISELECT(8,4), "S793C4.s793c4f0");
    test_class_info(&lv, &cd_S793C4);
    dp->~S793C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C4(Test_S793C4, "S793C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S793C4C1Ev();
extern void _ZN6S793C4D1Ev();
Name_Map name_map_S793C4[] = {
  NSPAIR(_ZN6S793C4C1Ev),
  NSPAIR(_ZN6S793C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S793C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI6S793C4[];
extern void _ZN6S793C4D1Ev();
extern void _ZN6S793C4D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
static  VTBL_ENTRY vtc_S793C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C4[0]),
  (VTBL_ENTRY)&_ZN6S793C4D1Ev,
  (VTBL_ENTRY)&_ZN6S793C4D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
};
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
Class_Descriptor cd_S793C4 = {  "S793C4", // class name
  bases_S793C4, 1,
  &(vtc_S793C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S793C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C4),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  S793C6  {
  virtual  ~S793C6(); // _ZN6S793C6D1Ev
  virtual void  v11(); // _ZN6S793C63v11Ev
  virtual void  v12(); // _ZN6S793C63v12Ev
  virtual void  v13(); // _ZN6S793C63v13Ev
  virtual void  v14(); // _ZN6S793C63v14Ev
  virtual void  v15(); // _ZN6S793C63v15Ev
  virtual void  v16(); // _ZN6S793C63v16Ev
  virtual void  v17(); // _ZN6S793C63v17Ev
  virtual void  v18(); // _ZN6S793C63v18Ev
  virtual void  v19(); // _ZN6S793C63v19Ev
  virtual void  v20(); // _ZN6S793C63v20Ev
  virtual void  v21(); // _ZN6S793C63v21Ev
  virtual void  v22(); // _ZN6S793C63v22Ev
  S793C6(); // tgen
};
//SIG(-1 S793C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S793C6 ::~S793C6(){ note_dtor("S793C6", this);}
void  S793C6 ::v11(){vfunc_called(this, "_ZN6S793C63v11Ev");}
void  S793C6 ::v12(){vfunc_called(this, "_ZN6S793C63v12Ev");}
void  S793C6 ::v13(){vfunc_called(this, "_ZN6S793C63v13Ev");}
void  S793C6 ::v14(){vfunc_called(this, "_ZN6S793C63v14Ev");}
void  S793C6 ::v15(){vfunc_called(this, "_ZN6S793C63v15Ev");}
void  S793C6 ::v16(){vfunc_called(this, "_ZN6S793C63v16Ev");}
void  S793C6 ::v17(){vfunc_called(this, "_ZN6S793C63v17Ev");}
void  S793C6 ::v18(){vfunc_called(this, "_ZN6S793C63v18Ev");}
void  S793C6 ::v19(){vfunc_called(this, "_ZN6S793C63v19Ev");}
void  S793C6 ::v20(){vfunc_called(this, "_ZN6S793C63v20Ev");}
void  S793C6 ::v21(){vfunc_called(this, "_ZN6S793C63v21Ev");}
void  S793C6 ::v22(){vfunc_called(this, "_ZN6S793C63v22Ev");}
S793C6 ::S793C6(){ note_ctor("S793C6", this);} // tgen

static void Test_S793C6()
{
  extern Class_Descriptor cd_S793C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S793C6, buf);
    S793C6 *dp, &lv = *(dp=new (buf) S793C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S793C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C6)");
    test_class_info(&lv, &cd_S793C6);
    dp->~S793C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C6(Test_S793C6, "S793C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S793C6C1Ev();
extern void _ZN6S793C6D1Ev();
Name_Map name_map_S793C6[] = {
  NSPAIR(_ZN6S793C6C1Ev),
  NSPAIR(_ZN6S793C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S793C6[];
extern void _ZN6S793C6D1Ev();
extern void _ZN6S793C6D0Ev();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
static  VTBL_ENTRY vtc_S793C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C6[0]),
  (VTBL_ENTRY)&_ZN6S793C6D1Ev,
  (VTBL_ENTRY)&_ZN6S793C6D0Ev,
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
};
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
Class_Descriptor cd_S793C6 = {  "S793C6", // class name
  0,0,//no base classes
  &(vtc_S793C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S793C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S793C6),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S793C7_nt  {
  virtual  ~S793C7_nt(); // _ZN9S793C7_ntD1Ev
  virtual void  v23(); // _ZN9S793C7_nt3v23Ev
  virtual void  v24(); // _ZN9S793C7_nt3v24Ev
  S793C7_nt(); // tgen
};
//SIG(-1 S793C7_nt) C1{ vd v1 v2}


 S793C7_nt ::~S793C7_nt(){ note_dtor("S793C7_nt", this);}
void  S793C7_nt ::v23(){vfunc_called(this, "_ZN9S793C7_nt3v23Ev");}
void  S793C7_nt ::v24(){vfunc_called(this, "_ZN9S793C7_nt3v24Ev");}
S793C7_nt ::S793C7_nt(){ note_ctor("S793C7_nt", this);} // tgen

//skip512 S793C7_nt

#else // __cplusplus

extern void _ZN9S793C7_ntC1Ev();
extern void _ZN9S793C7_ntD1Ev();
Name_Map name_map_S793C7_nt[] = {
  NSPAIR(_ZN9S793C7_ntC1Ev),
  NSPAIR(_ZN9S793C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern void _ZN9S793C7_ntD1Ev();
extern void _ZN9S793C7_ntD0Ev();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S793C7_nt[0]),
  (VTBL_ENTRY)&_ZN9S793C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S793C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI9S793C7_nt[];
VTBL_ENTRY *P__ZTI9S793C7_nt = _ZTI9S793C7_nt; 
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
Class_Descriptor cd_S793C7_nt = {  "S793C7_nt", // class name
  0,0,//no base classes
  &(vtc_S793C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S793C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S793C7_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  S793C9_nt  {
  __tsi64 s793c9f0[2];
  void  mf793c9(); // _ZN9S793C9_nt7mf793c9Ev
};
//SIG(-1 S793C9_nt) C1{ m FL[2]}


void  S793C9_nt ::mf793c9(){}

//skip512 S793C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S793C8_nt  {
  ::S793C9_nt s793c8f0;
  void  mf793c8(); // _ZN9S793C8_nt7mf793c8Ev
};
//SIG(-1 S793C8_nt) C1{ m FC2{ m FL[2]}}


void  S793C8_nt ::mf793c8(){}

//skip512 S793C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S793C3  : S793C4 , S793C6 , S793C7_nt {
  void *s793c3f0;
  ::S793C8_nt s793c3f1;
  void *s793c3f2;
  ::S1868C17 s793c3f3;
  int s793c3f4[2];
  virtual  ~S793C3(); // _ZN6S793C3D1Ev
  virtual void  v25(); // _ZN6S793C33v25Ev
  virtual void  v26(); // _ZN6S793C33v26Ev
  virtual void  v27(); // _ZN6S793C33v27Ev
  virtual void  v28(); // _ZN6S793C33v28Ev
  virtual void  v29(); // _ZN6S793C33v29Ev
  virtual void  v30(); // _ZN6S793C33v30Ev
  virtual void  v31(); // _ZN6S793C33v31Ev
  virtual void  v32(); // _ZN6S793C33v32Ev
  virtual void  v33(); // _ZN6S793C33v33Ev
  virtual void  v34(); // _ZN6S793C33v34Ev
  virtual void  v35(); // _ZN6S793C33v35Ev
  virtual void  v36(); // _ZN6S793C33v36Ev
  virtual void  v37(); // _ZN6S793C33v37Ev
  virtual void  v38(); // _ZN6S793C33v38Ev
  virtual void  v39(); // _ZN6S793C33v39Ev
  virtual void  v40(); // _ZN6S793C33v40Ev
  virtual void  v41(); // _ZN6S793C33v41Ev
  virtual void  v42(); // _ZN6S793C33v42Ev
  virtual void  v43(); // _ZN6S793C33v43Ev
  virtual void  v44(); // _ZN6S793C33v44Ev
  virtual void  v45(); // _ZN6S793C33v45Ev
  virtual void  v46(); // _ZN6S793C33v46Ev
  virtual void  v47(); // _ZN6S793C33v47Ev
  virtual void  v48(); // _ZN6S793C33v48Ev
  S793C3(); // tgen
};
//SIG(-1 S793C3) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S793C3 ::~S793C3(){ note_dtor("S793C3", this);}
void  S793C3 ::v25(){vfunc_called(this, "_ZN6S793C33v25Ev");}
void  S793C3 ::v26(){vfunc_called(this, "_ZN6S793C33v26Ev");}
void  S793C3 ::v27(){vfunc_called(this, "_ZN6S793C33v27Ev");}
void  S793C3 ::v28(){vfunc_called(this, "_ZN6S793C33v28Ev");}
void  S793C3 ::v29(){vfunc_called(this, "_ZN6S793C33v29Ev");}
void  S793C3 ::v30(){vfunc_called(this, "_ZN6S793C33v30Ev");}
void  S793C3 ::v31(){vfunc_called(this, "_ZN6S793C33v31Ev");}
void  S793C3 ::v32(){vfunc_called(this, "_ZN6S793C33v32Ev");}
void  S793C3 ::v33(){vfunc_called(this, "_ZN6S793C33v33Ev");}
void  S793C3 ::v34(){vfunc_called(this, "_ZN6S793C33v34Ev");}
void  S793C3 ::v35(){vfunc_called(this, "_ZN6S793C33v35Ev");}
void  S793C3 ::v36(){vfunc_called(this, "_ZN6S793C33v36Ev");}
void  S793C3 ::v37(){vfunc_called(this, "_ZN6S793C33v37Ev");}
void  S793C3 ::v38(){vfunc_called(this, "_ZN6S793C33v38Ev");}
void  S793C3 ::v39(){vfunc_called(this, "_ZN6S793C33v39Ev");}
void  S793C3 ::v40(){vfunc_called(this, "_ZN6S793C33v40Ev");}
void  S793C3 ::v41(){vfunc_called(this, "_ZN6S793C33v41Ev");}
void  S793C3 ::v42(){vfunc_called(this, "_ZN6S793C33v42Ev");}
void  S793C3 ::v43(){vfunc_called(this, "_ZN6S793C33v43Ev");}
void  S793C3 ::v44(){vfunc_called(this, "_ZN6S793C33v44Ev");}
void  S793C3 ::v45(){vfunc_called(this, "_ZN6S793C33v45Ev");}
void  S793C3 ::v46(){vfunc_called(this, "_ZN6S793C33v46Ev");}
void  S793C3 ::v47(){vfunc_called(this, "_ZN6S793C33v47Ev");}
void  S793C3 ::v48(){vfunc_called(this, "_ZN6S793C33v48Ev");}
S793C3 ::S793C3(){ note_ctor("S793C3", this);} // tgen

static void Test_S793C3()
{
  extern Class_Descriptor cd_S793C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S793C3, buf);
    S793C3 *dp, &lv = *(dp=new (buf) S793C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S793C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C3)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*), 0, "S793C3");
    check_base_class_offset(lv, (S793C4*), 0, "S793C3");
    check_base_class_offset(lv, (S793C6*), ABISELECT(24,12), "S793C3");
    check_base_class_offset(lv, (S793C7_nt*), ABISELECT(32,16), "S793C3");
    check_field_offset(lv, s793c3f0, ABISELECT(40,20), "S793C3.s793c3f0");
    check_field_offset(lv, s793c3f1, ABISELECT(48,24), "S793C3.s793c3f1");
    check_field_offset(lv, s793c3f2, ABISELECT(64,40), "S793C3.s793c3f2");
    check_field_offset(lv, s793c3f3, ABISELECT(72,44), "S793C3.s793c3f3");
    check_field_offset(lv, s793c3f4, ABISELECT(80,48), "S793C3.s793c3f4");
    test_class_info(&lv, &cd_S793C3);
    dp->~S793C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C3(Test_S793C3, "S793C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN6S793C3C1Ev();
extern void _ZN6S793C3D1Ev();
Name_Map name_map_S793C3[] = {
  NSPAIR(_ZN6S793C3C1Ev),
  NSPAIR(_ZN6S793C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
static Base_Class bases_S793C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S793C6,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_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_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_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 _ZTI6S793C3[];
extern void _ZN6S793C3D1Ev();
extern void _ZN6S793C3D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void ABISELECT(_ZThn24_N6S793C3D1Ev,_ZThn12_N6S793C3D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C3D0Ev,_ZThn12_N6S793C3D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C3D1Ev,_ZThn16_N6S793C3D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C3D0Ev,_ZThn16_N6S793C3D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&_ZN6S793C3D1Ev,
  (VTBL_ENTRY)&_ZN6S793C3D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C3D1Ev,_ZThn12_N6S793C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C3D0Ev,_ZThn12_N6S793C3D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C3D1Ev,_ZThn16_N6S793C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C3D0Ev,_ZThn16_N6S793C3D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
Class_Descriptor cd_S793C3 = {  "S793C3", // class name
  bases_S793C3, 4,
  &(vtc_S793C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI6S793C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S793C3),57, //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  S793C11  {
  char s793c11f0;
  ::S793C8_nt s793c11f1;
  int s793c11f2;
  void  mf793c11(); // _ZN7S793C118mf793c11Ev
};
//SIG(-1 S793C11) C1{ m Fc FC2{ m FC3{ m FL[2]}} Fi}


void  S793C11 ::mf793c11(){}

static void Test_S793C11()
{
  {
    init_simple_test("S793C11");
    S793C11 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S793C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C11)");
    check_field_offset(lv, s793c11f0, 0, "S793C11.s793c11f0");
    check_field_offset(lv, s793c11f1, ABISELECT(8,4), "S793C11.s793c11f1");
    check_field_offset(lv, s793c11f2, ABISELECT(24,20), "S793C11.s793c11f2");
  }
}
static Arrange_To_Call_Me vS793C11(Test_S793C11, "S793C11", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S793C2  : S793C3 {
  ::S793C11 s793c2f0;
  virtual void  v49(); // _ZN6S793C23v49Ev
  virtual void  v50(); // _ZN6S793C23v50Ev
  virtual void  v51(); // _ZN6S793C23v51Ev
  virtual void  v52(); // _ZN6S793C23v52Ev
  virtual void  v53(); // _ZN6S793C23v53Ev
  ~S793C2(); // tgen
  S793C2(); // tgen
};
//SIG(-1 S793C2) C1{ BC2{ BC3{ BC4{ vd m} vd v6 v7 v8 v9 v10 v11 v12 Fp[2]} BC5{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} BC6{ vd v25 v26} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 FC10{ m Fc FC7 Fi}}


void  S793C2 ::v49(){vfunc_called(this, "_ZN6S793C23v49Ev");}
void  S793C2 ::v50(){vfunc_called(this, "_ZN6S793C23v50Ev");}
void  S793C2 ::v51(){vfunc_called(this, "_ZN6S793C23v51Ev");}
void  S793C2 ::v52(){vfunc_called(this, "_ZN6S793C23v52Ev");}
void  S793C2 ::v53(){vfunc_called(this, "_ZN6S793C23v53Ev");}
S793C2 ::~S793C2(){ note_dtor("S793C2", this);} // tgen
S793C2 ::S793C2(){ note_ctor("S793C2", this);} // tgen

static void Test_S793C2()
{
  extern Class_Descriptor cd_S793C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S793C2, buf);
    S793C2 *dp, &lv = *(dp=new (buf) S793C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S793C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*)(S793C3*), 0, "S793C2");
    check_base_class_offset(lv, (S793C4*)(S793C3*), 0, "S793C2");
    check_base_class_offset(lv, (S793C6*)(S793C3*), ABISELECT(24,12), "S793C2");
    check_base_class_offset(lv, (S793C7_nt*)(S793C3*), ABISELECT(32,16), "S793C2");
    check_base_class_offset(lv, (S793C3*), 0, "S793C2");
    check_field_offset(lv, s793c2f0, ABISELECT(88,56), "S793C2.s793c2f0");
    test_class_info(&lv, &cd_S793C2);
    dp->~S793C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C2(Test_S793C2, "S793C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S793C2C1Ev();
extern void _ZN6S793C2D1Ev();
Name_Map name_map_S793C2[] = {
  NSPAIR(_ZN6S793C2C1Ev),
  NSPAIR(_ZN6S793C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
extern Class_Descriptor cd_S793C3;
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
static Base_Class bases_S793C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S793C6,    ABISELECT(24,12), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    56, //bcp->virtual_function_table_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_S793C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S793C2[];
extern void _ZN6S793C2D1Ev();
extern void _ZN6S793C2D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void _ZN6S793C23v49Ev();
extern void _ZN6S793C23v50Ev();
extern void _ZN6S793C23v51Ev();
extern void _ZN6S793C23v52Ev();
extern void _ZN6S793C23v53Ev();
extern void ABISELECT(_ZThn24_N6S793C2D1Ev,_ZThn12_N6S793C2D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C2D0Ev,_ZThn12_N6S793C2D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C2D1Ev,_ZThn16_N6S793C2D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C2D0Ev,_ZThn16_N6S793C2D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&_ZN6S793C2D1Ev,
  (VTBL_ENTRY)&_ZN6S793C2D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  (VTBL_ENTRY)&_ZN6S793C23v49Ev,
  (VTBL_ENTRY)&_ZN6S793C23v50Ev,
  (VTBL_ENTRY)&_ZN6S793C23v51Ev,
  (VTBL_ENTRY)&_ZN6S793C23v52Ev,
  (VTBL_ENTRY)&_ZN6S793C23v53Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C2D1Ev,_ZThn12_N6S793C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C2D0Ev,_ZThn12_N6S793C2D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C2D1Ev,_ZThn16_N6S793C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C2D0Ev,_ZThn16_N6S793C2D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C2[];
extern  VTBL_ENTRY _ZTV6S793C2[];
Class_Descriptor cd_S793C2 = {  "S793C2", // class name
  bases_S793C2, 5,
  &(vtc_S793C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S793C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C2),62, //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  S793C1  : S793C2 {
  ::S18423C15_nt s793c1f0;
  virtual void  v1(); // _ZN6S793C12v1Ev
  virtual void  v2(); // _ZN6S793C12v2Ev
  virtual void  v3(); // _ZN6S793C12v3Ev
  ~S793C1(); // tgen
  S793C1(); // tgen
};
//SIG(1 S793C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd v4 v5 v6 v7 v8 v9 v10 Fp[2]} BC6{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22} BC7{ vd v23 v24} vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 Fp FC8{ m FC9{ m FL[2]}} Fp FC10{ m Fp} Fi[2]} v49 v50 v51 v52 v53 FC11{ m Fc FC8 Fi}} v1 v2 v3 FC12{ m Fp Fi FC13{ m}}}


void  S793C1 ::v1(){vfunc_called(this, "_ZN6S793C12v1Ev");}
void  S793C1 ::v2(){vfunc_called(this, "_ZN6S793C12v2Ev");}
void  S793C1 ::v3(){vfunc_called(this, "_ZN6S793C12v3Ev");}
S793C1 ::~S793C1(){ note_dtor("S793C1", this);} // tgen
S793C1 ::S793C1(){ note_ctor("S793C1", this);} // tgen

static void Test_S793C1()
{
  extern Class_Descriptor cd_S793C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S793C1, buf);
    S793C1 *dp, &lv = *(dp=new (buf) S793C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S793C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S793C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S793C4*)(S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C4*)(S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C6*)(S793C3*)(S793C2*), ABISELECT(24,12), "S793C1");
    check_base_class_offset(lv, (S793C7_nt*)(S793C3*)(S793C2*), ABISELECT(32,16), "S793C1");
    check_base_class_offset(lv, (S793C3*)(S793C2*), 0, "S793C1");
    check_base_class_offset(lv, (S793C2*), 0, "S793C1");
    check_field_offset(lv, s793c1f0, ABISELECT(120,80), "S793C1.s793c1f0");
    test_class_info(&lv, &cd_S793C1);
    dp->~S793C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS793C1(Test_S793C1, "S793C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN6S793C1C1Ev();
extern void _ZN6S793C1D1Ev();
Name_Map name_map_S793C1[] = {
  NSPAIR(_ZN6S793C1C1Ev),
  NSPAIR(_ZN6S793C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S793C4;
extern VTBL_ENTRY _ZTI6S793C4[];
extern  VTBL_ENTRY _ZTV6S793C4[];
extern Class_Descriptor cd_S793C6;
extern VTBL_ENTRY _ZTI6S793C6[];
extern  VTBL_ENTRY _ZTV6S793C6[];
extern Class_Descriptor cd_S793C7_nt;
extern VTBL_ENTRY _ZTI9S793C7_nt[];
extern  VTBL_ENTRY _ZTV9S793C7_nt[];
extern Class_Descriptor cd_S793C3;
extern VTBL_ENTRY _ZTI6S793C3[];
extern  VTBL_ENTRY _ZTV6S793C3[];
extern Class_Descriptor cd_S793C2;
extern VTBL_ENTRY _ZTI6S793C2[];
extern  VTBL_ENTRY _ZTV6S793C2[];
static Base_Class bases_S793C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S793C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S793C6,    ABISELECT(24,12), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S793C7_nt,    ABISELECT(32,16), //bcp->offset
    59, //bcp->virtual_function_table_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_S793C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S793C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S793C1[];
extern void _ZN6S793C1D1Ev();
extern void _ZN6S793C1D0Ev();
extern void _ZN6S793C42v4Ev();
extern void _ZN6S793C42v5Ev();
extern void _ZN6S793C42v6Ev();
extern void _ZN6S793C42v7Ev();
extern void _ZN6S793C42v8Ev();
extern void _ZN6S793C42v9Ev();
extern void _ZN6S793C43v10Ev();
extern void _ZN6S793C33v25Ev();
extern void _ZN6S793C33v26Ev();
extern void _ZN6S793C33v27Ev();
extern void _ZN6S793C33v28Ev();
extern void _ZN6S793C33v29Ev();
extern void _ZN6S793C33v30Ev();
extern void _ZN6S793C33v31Ev();
extern void _ZN6S793C33v32Ev();
extern void _ZN6S793C33v33Ev();
extern void _ZN6S793C33v34Ev();
extern void _ZN6S793C33v35Ev();
extern void _ZN6S793C33v36Ev();
extern void _ZN6S793C33v37Ev();
extern void _ZN6S793C33v38Ev();
extern void _ZN6S793C33v39Ev();
extern void _ZN6S793C33v40Ev();
extern void _ZN6S793C33v41Ev();
extern void _ZN6S793C33v42Ev();
extern void _ZN6S793C33v43Ev();
extern void _ZN6S793C33v44Ev();
extern void _ZN6S793C33v45Ev();
extern void _ZN6S793C33v46Ev();
extern void _ZN6S793C33v47Ev();
extern void _ZN6S793C33v48Ev();
extern void _ZN6S793C23v49Ev();
extern void _ZN6S793C23v50Ev();
extern void _ZN6S793C23v51Ev();
extern void _ZN6S793C23v52Ev();
extern void _ZN6S793C23v53Ev();
extern void _ZN6S793C12v1Ev();
extern void _ZN6S793C12v2Ev();
extern void _ZN6S793C12v3Ev();
extern void ABISELECT(_ZThn24_N6S793C1D1Ev,_ZThn12_N6S793C1D1Ev)();
extern void ABISELECT(_ZThn24_N6S793C1D0Ev,_ZThn12_N6S793C1D0Ev)();
extern void _ZN6S793C63v11Ev();
extern void _ZN6S793C63v12Ev();
extern void _ZN6S793C63v13Ev();
extern void _ZN6S793C63v14Ev();
extern void _ZN6S793C63v15Ev();
extern void _ZN6S793C63v16Ev();
extern void _ZN6S793C63v17Ev();
extern void _ZN6S793C63v18Ev();
extern void _ZN6S793C63v19Ev();
extern void _ZN6S793C63v20Ev();
extern void _ZN6S793C63v21Ev();
extern void _ZN6S793C63v22Ev();
extern void ABISELECT(_ZThn32_N6S793C1D1Ev,_ZThn16_N6S793C1D1Ev)();
extern void ABISELECT(_ZThn32_N6S793C1D0Ev,_ZThn16_N6S793C1D0Ev)();
extern void _ZN9S793C7_nt3v23Ev();
extern void _ZN9S793C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S793C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&_ZN6S793C1D1Ev,
  (VTBL_ENTRY)&_ZN6S793C1D0Ev,
  (VTBL_ENTRY)&_ZN6S793C42v4Ev,
  (VTBL_ENTRY)&_ZN6S793C42v5Ev,
  (VTBL_ENTRY)&_ZN6S793C42v6Ev,
  (VTBL_ENTRY)&_ZN6S793C42v7Ev,
  (VTBL_ENTRY)&_ZN6S793C42v8Ev,
  (VTBL_ENTRY)&_ZN6S793C42v9Ev,
  (VTBL_ENTRY)&_ZN6S793C43v10Ev,
  (VTBL_ENTRY)&_ZN6S793C33v25Ev,
  (VTBL_ENTRY)&_ZN6S793C33v26Ev,
  (VTBL_ENTRY)&_ZN6S793C33v27Ev,
  (VTBL_ENTRY)&_ZN6S793C33v28Ev,
  (VTBL_ENTRY)&_ZN6S793C33v29Ev,
  (VTBL_ENTRY)&_ZN6S793C33v30Ev,
  (VTBL_ENTRY)&_ZN6S793C33v31Ev,
  (VTBL_ENTRY)&_ZN6S793C33v32Ev,
  (VTBL_ENTRY)&_ZN6S793C33v33Ev,
  (VTBL_ENTRY)&_ZN6S793C33v34Ev,
  (VTBL_ENTRY)&_ZN6S793C33v35Ev,
  (VTBL_ENTRY)&_ZN6S793C33v36Ev,
  (VTBL_ENTRY)&_ZN6S793C33v37Ev,
  (VTBL_ENTRY)&_ZN6S793C33v38Ev,
  (VTBL_ENTRY)&_ZN6S793C33v39Ev,
  (VTBL_ENTRY)&_ZN6S793C33v40Ev,
  (VTBL_ENTRY)&_ZN6S793C33v41Ev,
  (VTBL_ENTRY)&_ZN6S793C33v42Ev,
  (VTBL_ENTRY)&_ZN6S793C33v43Ev,
  (VTBL_ENTRY)&_ZN6S793C33v44Ev,
  (VTBL_ENTRY)&_ZN6S793C33v45Ev,
  (VTBL_ENTRY)&_ZN6S793C33v46Ev,
  (VTBL_ENTRY)&_ZN6S793C33v47Ev,
  (VTBL_ENTRY)&_ZN6S793C33v48Ev,
  (VTBL_ENTRY)&_ZN6S793C23v49Ev,
  (VTBL_ENTRY)&_ZN6S793C23v50Ev,
  (VTBL_ENTRY)&_ZN6S793C23v51Ev,
  (VTBL_ENTRY)&_ZN6S793C23v52Ev,
  (VTBL_ENTRY)&_ZN6S793C23v53Ev,
  (VTBL_ENTRY)&_ZN6S793C12v1Ev,
  (VTBL_ENTRY)&_ZN6S793C12v2Ev,
  (VTBL_ENTRY)&_ZN6S793C12v3Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C1D1Ev,_ZThn12_N6S793C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S793C1D0Ev,_ZThn12_N6S793C1D0Ev),
  (VTBL_ENTRY)&_ZN6S793C63v11Ev,
  (VTBL_ENTRY)&_ZN6S793C63v12Ev,
  (VTBL_ENTRY)&_ZN6S793C63v13Ev,
  (VTBL_ENTRY)&_ZN6S793C63v14Ev,
  (VTBL_ENTRY)&_ZN6S793C63v15Ev,
  (VTBL_ENTRY)&_ZN6S793C63v16Ev,
  (VTBL_ENTRY)&_ZN6S793C63v17Ev,
  (VTBL_ENTRY)&_ZN6S793C63v18Ev,
  (VTBL_ENTRY)&_ZN6S793C63v19Ev,
  (VTBL_ENTRY)&_ZN6S793C63v20Ev,
  (VTBL_ENTRY)&_ZN6S793C63v21Ev,
  (VTBL_ENTRY)&_ZN6S793C63v22Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S793C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C1D1Ev,_ZThn16_N6S793C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S793C1D0Ev,_ZThn16_N6S793C1D0Ev),
  (VTBL_ENTRY)&_ZN9S793C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S793C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI6S793C1[];
extern  VTBL_ENTRY _ZTV6S793C1[];
Class_Descriptor cd_S793C1 = {  "S793C1", // class name
  bases_S793C1, 6,
  &(vtc_S793C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI6S793C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S793C1),65, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C5  : virtual S7856C12 , S7856C15 , virtual S7856C24 {
  ~S19207C5(); // tgen
  S19207C5(); // tgen
};
//SIG(-1 S19207C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19207C5 ::~S19207C5(){ note_dtor("S19207C5", this);} // tgen
S19207C5 ::S19207C5(){ note_ctor("S19207C5", this);} // tgen

static void Test_S19207C5()
{
  extern Class_Descriptor cd_S19207C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19207C5, buf);
    S19207C5 *dp, &lv = *(dp=new (buf) S19207C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19207C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C5)");
    check_base_class_offset(lv, (S7856C12*), 0, "S19207C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S19207C5");
    check_base_class_offset(lv, (S7856C24*), 0, "S19207C5");
    test_class_info(&lv, &cd_S19207C5);
    dp->~S19207C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C5(Test_S19207C5, "S19207C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19207C5C1Ev();
extern void _ZN8S19207C5D1Ev();
Name_Map name_map_S19207C5[] = {
  NSPAIR(_ZN8S19207C5C1Ev),
  NSPAIR(_ZN8S19207C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19207C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19207C5[];
static  VTBL_ENTRY vtc_S19207C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern VTBL_ENTRY _ZTV8S19207C5[];
static  VTT_ENTRY vtt_S19207C5[] = {
  {&(_ZTV8S19207C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
Class_Descriptor cd_S19207C5 = {  "S19207C5", // class name
  bases_S19207C5, 3,
  &(vtc_S19207C5[0]), // expected_vtbl_contents
  &(vtt_S19207C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19207C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C5),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  S19207C2  : S7856C24 , S7856C15 , S19207C5 {
  int s19207c2f0;
  ~S19207C2(); // tgen
  S19207C2(); // tgen
};
//SIG(-1 S19207C2) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S19207C2 ::~S19207C2(){ note_dtor("S19207C2", this);} // tgen
S19207C2 ::S19207C2(){ note_ctor("S19207C2", this);} // tgen

static void Test_S19207C2()
{
  extern Class_Descriptor cd_S19207C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19207C2, buf);
    S19207C2 *dp, &lv = *(dp=new (buf) S19207C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19207C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C2)");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C2");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C2");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C2");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C2");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C2");
    check_base_class_offset(lv, (S19207C5*), 0, "S19207C2");
    check_field_offset(lv, s19207c2f0, ABISELECT(8,4), "S19207C2.s19207c2f0");
    test_class_info(&lv, &cd_S19207C2);
    dp->~S19207C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C2(Test_S19207C2, "S19207C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19207C2C1Ev();
extern void _ZN8S19207C2D1Ev();
Name_Map name_map_S19207C2[] = {
  NSPAIR(_ZN8S19207C2C1Ev),
  NSPAIR(_ZN8S19207C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
static Base_Class bases_S19207C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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, 1},
  {&cd_S19207C5,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C2[];
static  VTBL_ENTRY vtc_S19207C2[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
extern VTBL_ENTRY _ZTV8S19207C2[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C2[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C2[] = {
  {&(_ZTV8S19207C2[4]),  4,4},
  {&(_tg__ZTV8S19207C5__8S19207C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
Class_Descriptor cd_S19207C2 = {  "S19207C2", // class name
  bases_S19207C2, 6,
  &(vtc_S19207C2[0]), // expected_vtbl_contents
  &(vtt_S19207C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19207C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C2),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  S19207C10  : virtual S7856C15 {
  ~S19207C10(); // tgen
  S19207C10(); // tgen
};
//SIG(-1 S19207C10) C1{ VBC2{ m}}


S19207C10 ::~S19207C10(){ note_dtor("S19207C10", this);} // tgen
S19207C10 ::S19207C10(){ note_ctor("S19207C10", this);} // tgen

static void Test_S19207C10()
{
  extern Class_Descriptor cd_S19207C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19207C10, buf);
    S19207C10 *dp, &lv = *(dp=new (buf) S19207C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19207C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C10)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19207C10");
    test_class_info(&lv, &cd_S19207C10);
    dp->~S19207C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C10(Test_S19207C10, "S19207C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19207C10C1Ev();
extern void _ZN9S19207C10D1Ev();
Name_Map name_map_S19207C10[] = {
  NSPAIR(_ZN9S19207C10C1Ev),
  NSPAIR(_ZN9S19207C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S19207C10[];
static  VTBL_ENTRY vtc_S19207C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern VTBL_ENTRY _ZTV9S19207C10[];
static  VTT_ENTRY vtt_S19207C10[] = {
  {&(_ZTV9S19207C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
Class_Descriptor cd_S19207C10 = {  "S19207C10", // class name
  bases_S19207C10, 1,
  &(vtc_S19207C10[0]), // expected_vtbl_contents
  &(vtt_S19207C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19207C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19207C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C10),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  S19207C12  : S7856C12 , virtual S19207C5 , virtual S7856C15 {
  ~S19207C12(); // tgen
  S19207C12(); // tgen
};
//SIG(-1 S19207C12) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19207C12 ::~S19207C12(){ note_dtor("S19207C12", this);} // tgen
S19207C12 ::S19207C12(){ note_ctor("S19207C12", this);} // tgen

static void Test_S19207C12()
{
  extern Class_Descriptor cd_S19207C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19207C12, buf);
    S19207C12 *dp, &lv = *(dp=new (buf) S19207C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19207C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C12)");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C12");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(8,4), "S19207C12");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C12");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C12");
    check_base_class_offset(lv, (S19207C5*), 0, "S19207C12");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C12");
    test_class_info(&lv, &cd_S19207C12);
    dp->~S19207C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C12(Test_S19207C12, "S19207C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19207C12C1Ev();
extern void _ZN9S19207C12D1Ev();
Name_Map name_map_S19207C12[] = {
  NSPAIR(_ZN9S19207C12C1Ev),
  NSPAIR(_ZN9S19207C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    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},
  {&cd_S7856C15,    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 _ZTI9S19207C12[];
static  VTBL_ENTRY vtc_S19207C12[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern VTBL_ENTRY _ZTV9S19207C12[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C12[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C12[] = {
  {&(_ZTV9S19207C12[6]),  6,6},
  {&(_ZTV9S19207C12[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
Class_Descriptor cd_S19207C12 = {  "S19207C12", // class name
  bases_S19207C12, 6,
  &(vtc_S19207C12[0]), // expected_vtbl_contents
  &(vtt_S19207C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19207C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19207C12),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C12),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  S19207C13  : S7856C15 , virtual S7856C12 , virtual S7856C24 , S19207C5 , virtual S19207C12 {
  virtual  ~S19207C13(); // _ZN9S19207C13D2Ev
  S19207C13(); // tgen
};
//SIG(-1 S19207C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19207C13 ::~S19207C13(){ note_dtor("S19207C13", this);}
S19207C13 ::S19207C13(){ note_ctor("S19207C13", this);} // tgen

static void Test_S19207C13()
{
  extern Class_Descriptor cd_S19207C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19207C13, buf);
    S19207C13 *dp, &lv = *(dp=new (buf) S19207C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19207C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C13)");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19207C13");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C13");
    check_base_class_offset(lv, (S7856C24*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), 0, "S19207C13");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C13");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C13");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(16,8), "S19207C13");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(24,12), "S19207C13");
    check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C13");
    test_class_info(&lv, &cd_S19207C13);
    dp->~S19207C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C13(Test_S19207C13, "S19207C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19207C13C1Ev();
extern void _ZN9S19207C13D2Ev();
Name_Map name_map_S19207C13[] = {
  NSPAIR(_ZN9S19207C13C1Ev),
  NSPAIR(_ZN9S19207C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
static Base_Class bases_S19207C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    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_S7856C12,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C13[];
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY vtc_S19207C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern VTBL_ENTRY _ZTV9S19207C13[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__9S19207C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C13[] = {
  {&(_ZTV9S19207C13[7]),  7,15},
  {&(_tg__ZTV8S19207C5__A__9S19207C13[4]),  4,4},
  {&(_ZTV9S19207C13[15]),  15,15},
  {&(_ZTV9S19207C13[15]),  15,15},
  {&(_tg__ZTV9S19207C12__9S19207C13[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__9S19207C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
Class_Descriptor cd_S19207C13 = {  "S19207C13", // class name
  bases_S19207C13, 10,
  &(vtc_S19207C13[0]), // expected_vtbl_contents
  &(vtt_S19207C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19207C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C13),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  S19207C11  : virtual S7856C12 , virtual S7856C15 , virtual S19207C12 , S7856C24 , S19207C13 {
  virtual  ~S19207C11(); // _ZN9S19207C11D2Ev
  S19207C11(); // tgen
};
//SIG(-1 S19207C11) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19207C11 ::~S19207C11(){ note_dtor("S19207C11", this);}
S19207C11 ::S19207C11(){ note_ctor("S19207C11", this);} // tgen

static void Test_S19207C11()
{
  extern Class_Descriptor cd_S19207C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19207C11, buf);
    S19207C11 *dp, &lv = *(dp=new (buf) S19207C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19207C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C11)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19207C11");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(9,5), "S19207C11");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(24,12), "S19207C11");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(24,12), "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C11");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(16,8), "S19207C11");
    check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C11");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(16,8), "S19207C11");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(8,4), "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), 0, "S19207C11");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), 0, "S19207C11");
    check_base_class_offset(lv, (S19207C13*), 0, "S19207C11");
    test_class_info(&lv, &cd_S19207C11);
    dp->~S19207C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C11(Test_S19207C11, "S19207C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19207C11C1Ev();
extern void _ZN9S19207C11D2Ev();
Name_Map name_map_S19207C11[] = {
  NSPAIR(_ZN9S19207C11C1Ev),
  NSPAIR(_ZN9S19207C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
static Base_Class bases_S19207C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C11[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY vtc_S19207C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern VTBL_ENTRY _ZTV9S19207C11[];
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A1__9S19207C11[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__9S19207C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C11[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C11[] = {
  {&(_ZTV9S19207C11[7]),  7,15},
  {&(_tg__ZTV9S19207C13__9S19207C11[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A1__9S19207C11[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C11[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C11[6]),  6,6},
  {&(_ZTV9S19207C11[15]),  15,15},
  {&(_ZTV9S19207C11[15]),  15,15},
  {&(_tg__ZTV9S19207C12__9S19207C11[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
Class_Descriptor cd_S19207C11 = {  "S19207C11", // class name
  bases_S19207C11, 12,
  &(vtc_S19207C11[0]), // expected_vtbl_contents
  &(vtt_S19207C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19207C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C11),10, //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  S19207C9  : virtual S19207C5 , virtual S19207C10 , virtual S19207C2 , S7856C24 , virtual S19207C11 {
  int s19207c9f0;
  virtual  ~S19207C9(); // _ZN8S19207C9D2Ev
  S19207C9(); // tgen
};
//SIG(-1 S19207C9) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S19207C9 ::~S19207C9(){ note_dtor("S19207C9", this);}
S19207C9 ::S19207C9(){ note_ctor("S19207C9", this);} // tgen

static void Test_S19207C9()
{
  extern Class_Descriptor cd_S19207C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C9, buf);
    S19207C9 *dp, &lv = *(dp=new (buf) S19207C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C9)");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C9");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C9");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C9");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C9");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), 0, "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), 0, "S19207C9");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), 0, "S19207C9");
    check_base_class_offset(lv, (S19207C10*), 0, "S19207C9");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C9");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C9");
    check_base_class_offset(lv, (S19207C2*), ABISELECT(16,12), "S19207C9");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19207C9");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C9");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C9");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C9");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(32,20), "S19207C9");
    check_field_offset(lv, s19207c9f0, ABISELECT(8,4), "S19207C9.s19207c9f0");
    test_class_info(&lv, &cd_S19207C9);
    dp->~S19207C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C9(Test_S19207C9, "S19207C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C9C1Ev();
extern void _ZN8S19207C9D2Ev();
Name_Map name_map_S19207C9[] = {
  NSPAIR(_ZN8S19207C9C1Ev),
  NSPAIR(_ZN8S19207C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
static Base_Class bases_S19207C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C24,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C9[];
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C9[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern VTBL_ENTRY _ZTV8S19207C9[];
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C9[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C9[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C9[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C9[] = {
  {&(_ZTV8S19207C9[10]),  10,32},
  {&(_ZTV8S19207C9[32]),  32,32},
  {&(_ZTV8S19207C9[10]),  10,32},
  {&(_ZTV8S19207C9[16]),  16,32},
  {&(_ZTV8S19207C9[24]),  24,32},
  {&(_ZTV8S19207C9[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C9[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C9[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C9[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C9[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C9[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C9 = {  "S19207C9", // class name
  bases_S19207C9, 20,
  &(vtc_S19207C9[0]), // expected_vtbl_contents
  &(vtt_S19207C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19207C9),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C9),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C8  : S19207C9 , S7856C15 {
  ~S19207C8(); // tgen
  S19207C8(); // tgen
};
//SIG(-1 S19207C8) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


S19207C8 ::~S19207C8(){ note_dtor("S19207C8", this);} // tgen
S19207C8 ::S19207C8(){ note_ctor("S19207C8", this);} // tgen

static void Test_S19207C8()
{
  extern Class_Descriptor cd_S19207C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C8, buf);
    S19207C8 *dp, &lv = *(dp=new (buf) S19207C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C8)");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C8");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C8");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C8");
    /*is_ambiguous_... S19207C8::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(12,8), "S19207C8");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(12,8), "S19207C8");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C8");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C8");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(16,12), "S19207C8");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C8");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C8");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(32,20), "S19207C8");
    check_base_class_offset(lv, (S19207C9*), 0, "S19207C8");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19207C8");
    test_class_info(&lv, &cd_S19207C8);
    dp->~S19207C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C8(Test_S19207C8, "S19207C8", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C8C1Ev();
extern void _ZN8S19207C8D1Ev();
Name_Map name_map_S19207C8[] = {
  NSPAIR(_ZN8S19207C8C1Ev),
  NSPAIR(_ZN8S19207C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19207C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C24,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //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
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //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
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //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
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //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
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //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
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19207C8[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern VTBL_ENTRY _ZTV8S19207C8[];
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__8S19207C8[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__8S19207C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C8[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C8[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C8[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C8[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C8[] = {
  {&(_ZTV8S19207C8[10]),  10,32},
  {&(_tg__ZTV8S19207C9__8S19207C8[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__8S19207C8[6]),  6,6},
  {&(_tg__ZTV8S19207C9__8S19207C8[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__8S19207C8[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__8S19207C8[6]),  6,6},
  {&(_ZTV8S19207C8[32]),  32,32},
  {&(_ZTV8S19207C8[10]),  10,32},
  {&(_ZTV8S19207C8[16]),  16,32},
  {&(_ZTV8S19207C8[24]),  24,32},
  {&(_ZTV8S19207C8[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C8[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C8[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C8[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C8[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C8 = {  "S19207C8", // class name
  bases_S19207C8, 22,
  &(vtc_S19207C8[0]), // expected_vtbl_contents
  &(vtt_S19207C8[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19207C8),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C8),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C7  : virtual S7856C15 , S19207C8 {
  ~S19207C7(); // tgen
  S19207C7(); // tgen
};
//SIG(-1 S19207C7) C1{ VBC2{ m} BC3{ BC4{ VBC5{ VBC6{ m} BC2 VBC7{ m}} VBC8{ VBC2} VBC9{ BC7 BC2 BC5 Fi} BC7 VBC10{ VBC6 VBC2 VBC11{ BC6 VBC5 VBC2} BC7 BC12{ BC2 VBC6 VBC7 BC5 VBC11 vd} vd} vd Fi} BC2}}


S19207C7 ::~S19207C7(){ note_dtor("S19207C7", this);} // tgen
S19207C7 ::S19207C7(){ note_ctor("S19207C7", this);} // tgen

static void Test_S19207C7()
{
  extern Class_Descriptor cd_S19207C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19207C7, buf);
    S19207C7 *dp, &lv = *(dp=new (buf) S19207C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19207C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C7)");
    /*is_ambiguous_... S19207C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C7");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C7");
    /*is_ambiguous_... S19207C7::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(12,8), "S19207C7");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(12,8), "S19207C7");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(24,16), "S19207C7");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(16,12), "S19207C7");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*), ABISELECT(16,12), "S19207C7");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C7");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C7");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(40,24), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*), ABISELECT(32,20), "S19207C7");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*), 0, "S19207C7");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*), 0, "S19207C7");
    check_base_class_offset(lv, (S19207C8*), 0, "S19207C7");
    test_class_info(&lv, &cd_S19207C7);
    dp->~S19207C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C7(Test_S19207C7, "S19207C7", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19207C7C1Ev();
extern void _ZN8S19207C7D1Ev();
Name_Map name_map_S19207C7[] = {
  NSPAIR(_ZN8S19207C7C1Ev),
  NSPAIR(_ZN8S19207C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
static Base_Class bases_S19207C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C24,    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
    4, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C8,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C7[];
extern void _ZN8S19207C7D1Ev();
extern void _ZN8S19207C7D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C7D1Ev,_ZThn20_N8S19207C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C7D0Ev,_ZThn20_N8S19207C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&_ZN8S19207C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C7D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
extern VTBL_ENTRY _ZTV8S19207C7[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C8__8S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C8__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C8__8S19207C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8__8S19207C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__8S19207C7[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C7[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__8S19207C7[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C7[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C7[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTT_ENTRY vtt_S19207C7[] = {
  {&(_ZTV8S19207C7[10]),  10,32},
  {&(_tg__ZTV8S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C8__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C8__8S19207C7[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8__8S19207C7[6]),  6,6},
  {&(_tg__ZTV8S19207C8__8S19207C7[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C8__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8__8S19207C7[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C8__8S19207C7[6]),  6,6},
  {&(_ZTV8S19207C7[32]),  32,32},
  {&(_ZTV8S19207C7[10]),  10,32},
  {&(_ZTV8S19207C7[16]),  16,32},
  {&(_ZTV8S19207C7[24]),  24,32},
  {&(_ZTV8S19207C7[32]),  32,32},
  {&(_tg__ZTV8S19207C5__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C7[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C7[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C7[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C7[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C7[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19207C7[];
extern  VTBL_ENTRY _ZTV8S19207C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C7[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D0Ev,_ZThn20_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C8D1Ev,_ZThn20_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D0Ev,_ZThn20_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C9D1Ev,_ZThn20_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C7D0Ev,_ZThn20_N8S19207C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19207C7D1Ev,_ZThn20_N8S19207C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C7 = {  "S19207C7", // class name
  bases_S19207C7, 23,
  &(vtc_S19207C7[0]), // expected_vtbl_contents
  &(vtt_S19207C7[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19207C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19207C7),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C7),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C17  : virtual S19207C11 , virtual S19207C2 , virtual S19207C13 {
  int s19207c17f0[2];
  virtual  ~S19207C17(); // _ZN9S19207C17D2Ev
  S19207C17(); // tgen
};
//SIG(-1 S19207C17) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S19207C17 ::~S19207C17(){ note_dtor("S19207C17", this);}
S19207C17 ::S19207C17(){ note_ctor("S19207C17", this);} // tgen

static void Test_S19207C17()
{
  extern Class_Descriptor cd_S19207C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19207C17, buf);
    S19207C17 *dp, &lv = *(dp=new (buf) S19207C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19207C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C17)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(25,17), "S19207C17");
    /*is_ambiguous_... S19207C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C17");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C5*)(S19207C12*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), 0, "S19207C17");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), 0, "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), 0, "S19207C17");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(24,16), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(16,12), "S19207C17");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(16,12), "S19207C17");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C17");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C17");
    check_base_class_offset(lv, (S19207C2*), ABISELECT(32,20), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(56,32), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(48,28), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(48,28), "S19207C17");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*), ABISELECT(48,28), "S19207C17");
    check_field_offset(lv, s19207c17f0, ABISELECT(8,4), "S19207C17.s19207c17f0");
    test_class_info(&lv, &cd_S19207C17);
    dp->~S19207C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C17(Test_S19207C17, "S19207C17", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19207C17C1Ev();
extern void _ZN9S19207C17D2Ev();
Name_Map name_map_S19207C17[] = {
  NSPAIR(_ZN9S19207C17C1Ev),
  NSPAIR(_ZN9S19207C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
static Base_Class bases_S19207C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C17[];
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C17[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C17[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C17[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTT_ENTRY vtt_S19207C17[] = {
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[20]),  20,36},
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[10]),  10,36},
  {&(_ZTV9S19207C17[26]),  26,36},
  {&(_ZTV9S19207C17[34]),  34,36},
  {&(_tg__ZTV9S19207C11__9S19207C17[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C17[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C17[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C17[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C17[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C17 = {  "S19207C17", // class name
  bases_S19207C17, 22,
  &(vtc_S19207C17[0]), // expected_vtbl_contents
  &(vtt_S19207C17[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19207C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19207C17),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C17),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C19  : virtual S19207C13 , S19207C2 , S19207C12 , S7856C24 {
  virtual  ~S19207C19(); // _ZN9S19207C19D2Ev
  S19207C19(); // tgen
};
//SIG(-1 S19207C19) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S19207C19 ::~S19207C19(){ note_dtor("S19207C19", this);}
S19207C19 ::S19207C19(){ note_ctor("S19207C19", this);} // tgen

static void Test_S19207C19()
{
  extern Class_Descriptor cd_S19207C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19207C19, buf);
    S19207C19 *dp, &lv = *(dp=new (buf) S19207C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19207C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C19)");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(32,16), "S19207C19");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C19");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(33,17), "S19207C19");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(33,17), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(40,20), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(48,24), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(48,24), "S19207C19");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(40,20), "S19207C19");
    check_base_class_offset(lv, (S19207C13*), ABISELECT(24,12), "S19207C19");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), 0, "S19207C19");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(8,4), "S19207C19");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*), 0, "S19207C19");
    check_base_class_offset(lv, (S19207C2*), 0, "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(16,8), "S19207C19");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*), ABISELECT(16,8), "S19207C19");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(24,12), "S19207C19");
    test_class_info(&lv, &cd_S19207C19);
    dp->~S19207C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C19(Test_S19207C19, "S19207C19", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19207C19C1Ev();
extern void _ZN9S19207C19D2Ev();
Name_Map name_map_S19207C19[] = {
  NSPAIR(_ZN9S19207C19C1Ev),
  NSPAIR(_ZN9S19207C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19207C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19207C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19207C2,    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},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C19[];
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C19D1Ev,_ZThn12_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C19D0Ev,_ZThn12_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C19[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern VTBL_ENTRY _ZTV9S19207C19[];
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C19[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C19[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C19[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C12__A__9S19207C19[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C19[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__9S19207C19[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__9S19207C19[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C19[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__9S19207C19[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTT_ENTRY vtt_S19207C19[] = {
  {&(_ZTV9S19207C19[8]),  8,32},
  {&(_tg__ZTV8S19207C2__9S19207C19[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C19[4]),  4,4},
  {&(_tg__ZTV9S19207C12__A__9S19207C19[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C12__A__9S19207C19[4]),  4,4},
  {&(_ZTV9S19207C19[24]),  24,32},
  {&(_ZTV9S19207C19[32]),  32,32},
  {&(_ZTV9S19207C19[32]),  32,32},
  {&(_ZTV9S19207C19[16]),  16,32},
  {&(_tg__ZTV9S19207C13__9S19207C19[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__9S19207C19[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__9S19207C19[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C19D0Ev,_ZThn12_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C19D1Ev,_ZThn12_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C19 = {  "S19207C19", // class name
  bases_S19207C19, 19,
  &(vtc_S19207C19[0]), // expected_vtbl_contents
  &(vtt_S19207C19[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19207C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C19),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C19),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C16  : virtual S19207C17 , virtual S7856C9_nt , virtual S19207C9 , S19207C19 {
  virtual  ~S19207C16(); // _ZN9S19207C16D2Ev
  S19207C16(); // tgen
};
//SIG(-1 S19207C16) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S19207C16 ::~S19207C16(){ note_dtor("S19207C16", this);}
S19207C16 ::S19207C16(){ note_ctor("S19207C16", this);} // tgen

static void Test_S19207C16()
{
  extern Class_Descriptor cd_S19207C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19207C16, buf);
    S19207C16 *dp, &lv = *(dp=new (buf) S19207C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19207C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C16)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C16");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C16");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(57,33), "S19207C16");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*), ABISELECT(57,33), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(32,16), "S19207C16");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(48,28), "S19207C16");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(48,28), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(72,40), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(64,36), "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(64,36), "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(64,36), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(88,48), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(80,44), "S19207C16");
    /*is_ambiguous_... S19207C16::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(80,44), "S19207C16");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(80,44), "S19207C16");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*), ABISELECT(80,44), "S19207C16");
    check_base_class_offset(lv, (S19207C17*), ABISELECT(32,16), "S19207C16");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(96,52), "S19207C16");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(96,52), "S19207C16");
    check_base_class_offset(lv, (S19207C9*), ABISELECT(96,52), "S19207C16");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*), ABISELECT(8,4), "S19207C16");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*), 0, "S19207C16");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*), 0, "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*), ABISELECT(16,8), "S19207C16");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*), ABISELECT(16,8), "S19207C16");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*), ABISELECT(24,12), "S19207C16");
    check_base_class_offset(lv, (S19207C19*), 0, "S19207C16");
    test_class_info(&lv, &cd_S19207C16);
    dp->~S19207C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C16(Test_S19207C16, "S19207C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19207C16C1Ev();
extern void _ZN9S19207C16D2Ev();
Name_Map name_map_S19207C16[] = {
  NSPAIR(_ZN9S19207C16C1Ev),
  NSPAIR(_ZN9S19207C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
static Base_Class bases_S19207C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19207C10,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19207C2,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19207C19,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C16[];
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19207C16D1Ev,_ZThn52_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19207C16D0Ev,_ZThn52_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C16[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C16[];
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C19__9S19207C16[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C19__A1__9S19207C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C19__A4__9S19207C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C19__A1__9S19207C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C19D1Ev,_ZThn44_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C19D0Ev,_ZThn44_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C19__9S19207C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C19__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C19__9S19207C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C16[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C16[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C16[] = {
  {&(_ZTV9S19207C16[14]),  14,72},
  {&(_tg__ZTV9S19207C19__9S19207C16[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C19__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C19__A4__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C19__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C19__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C19__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C19__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C19__9S19207C16[6]),  6,6},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[43]),  43,72},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[33]),  33,72},
  {&(_ZTV9S19207C16[49]),  49,72},
  {&(_ZTV9S19207C16[57]),  57,72},
  {&(_ZTV9S19207C16[70]),  70,72},
  {&(_ZTV9S19207C16[70]),  70,72},
  {&(_ZTV9S19207C16[22]),  22,72},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C17__9S19207C16[10]),  10,12},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C11__9S19207C16[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C16[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C16[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C16[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C16[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C16[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C16[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C16[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C16[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D0Ev,_ZThn28_N9S19207C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C17D1Ev,_ZThn28_N9S19207C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C19D0Ev,_ZThn44_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C19D1Ev,_ZThn44_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19207C16D0Ev,_ZThn52_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19207C16D1Ev,_ZThn52_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C16 = {  "S19207C16", // class name
  bases_S19207C16, 36,
  &(vtc_S19207C16[0]), // expected_vtbl_contents
  &(vtt_S19207C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19207C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C16),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C16),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C15  : virtual S19207C11 , virtual S19207C16 {
  virtual  ~S19207C15(); // _ZN9S19207C15D2Ev
  S19207C15(); // tgen
};
//SIG(-1 S19207C15) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S19207C15 ::~S19207C15(){ note_dtor("S19207C15", this);}
S19207C15 ::S19207C15(){ note_ctor("S19207C15", this);} // tgen

static void Test_S19207C15()
{
  extern Class_Descriptor cd_S19207C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19207C15, buf);
    S19207C15 *dp, &lv = *(dp=new (buf) S19207C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19207C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C15)");
    /*is_ambiguous_... S19207C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), ABISELECT(17,9), "S19207C15");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(17,9), "S19207C15");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(17,9), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), 0, "S19207C15");
    check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), 0, "S19207C15");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), 0, "S19207C15");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), 0, "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C12*)(S19207C11*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), 0, "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), 0, "S19207C15");
    /*is_ambiguous_... S19207C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(16,8), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C13::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(8,4), "S19207C15");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(8,4), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(80,44), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(72,40), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(72,40), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(72,40), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(96,52), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(88,48), "S19207C15");
    /*is_ambiguous_... S19207C15::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(88,48), "S19207C15");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(88,48), "S19207C15");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C15");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(56,28), "S19207C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C15");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(104,56), "S19207C15");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(104,56), "S19207C15");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(104,56), "S19207C15");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(32,16), "S19207C15");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(40,20), "S19207C15");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(40,20), "S19207C15");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(48,24), "S19207C15");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(24,12), "S19207C15");
    check_base_class_offset(lv, (S19207C16*), ABISELECT(24,12), "S19207C15");
    test_class_info(&lv, &cd_S19207C15);
    dp->~S19207C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C15(Test_S19207C15, "S19207C15", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19207C15C1Ev();
extern void _ZN9S19207C15D2Ev();
Name_Map name_map_S19207C15[] = {
  NSPAIR(_ZN9S19207C15C1Ev),
  NSPAIR(_ZN9S19207C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
static Base_Class bases_S19207C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C15[];
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C15D1Ev,_ZThn56_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C15D0Ev,_ZThn56_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C15[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C15[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C15[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A4__9S19207C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C15[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C19D1Ev,_ZThn36_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C19D0Ev,_ZThn36_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C15[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C17D1Ev,_ZThn20_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C17D0Ev,_ZThn20_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A3__9S19207C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C15[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C15[] = {
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[25]),  25,90},
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[15]),  15,90},
  {&(_ZTV9S19207C15[42]),  42,90},
  {&(_ZTV9S19207C15[61]),  61,90},
  {&(_ZTV9S19207C15[67]),  67,90},
  {&(_ZTV9S19207C15[75]),  75,90},
  {&(_ZTV9S19207C15[88]),  88,90},
  {&(_ZTV9S19207C15[88]),  88,90},
  {&(_ZTV9S19207C15[50]),  50,90},
  {&(_tg__ZTV9S19207C11__9S19207C15[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C15[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C16__9S19207C15[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A4__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C15[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C15[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C15[8]),  8,10},
  {&(_tg__ZTV8S19207C2__9S19207C15[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A3__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C15[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C15[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C15[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C15[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C15[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C15[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C17D0Ev,_ZThn20_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C17D1Ev,_ZThn20_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D0Ev,_ZThn44_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C16D1Ev,_ZThn44_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C19D0Ev,_ZThn36_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C19D1Ev,_ZThn36_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C15D0Ev,_ZThn56_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C15D1Ev,_ZThn56_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C15 = {  "S19207C15", // class name
  bases_S19207C15, 37,
  &(vtc_S19207C15[0]), // expected_vtbl_contents
  &(vtt_S19207C15[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19207C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19207C15),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C15),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C21  : S7856C15 , S19207C10 {
  virtual  ~S19207C21(); // _ZN9S19207C21D2Ev
  S19207C21(); // tgen
};
//SIG(-1 S19207C21) C1{ BC2{ m} BC3{ VBC2} vd}


 S19207C21 ::~S19207C21(){ note_dtor("S19207C21", this);}
S19207C21 ::S19207C21(){ note_ctor("S19207C21", this);} // tgen

static void Test_S19207C21()
{
  extern Class_Descriptor cd_S19207C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19207C21, buf);
    S19207C21 *dp, &lv = *(dp=new (buf) S19207C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19207C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C21)");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19207C21");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(8,4), "S19207C21");
    check_base_class_offset(lv, (S19207C10*), 0, "S19207C21");
    test_class_info(&lv, &cd_S19207C21);
    dp->~S19207C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C21(Test_S19207C21, "S19207C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19207C21C1Ev();
extern void _ZN9S19207C21D2Ev();
Name_Map name_map_S19207C21[] = {
  NSPAIR(_ZN9S19207C21C1Ev),
  NSPAIR(_ZN9S19207C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
static Base_Class bases_S19207C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C21[];
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY vtc_S19207C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
extern VTBL_ENTRY _ZTV9S19207C21[];
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C21[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C21[] = {
  {&(_ZTV9S19207C21[3]),  3,5},
  {&(_tg__ZTV9S19207C10__9S19207C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
Class_Descriptor cd_S19207C21 = {  "S19207C21", // class name
  bases_S19207C21, 3,
  &(vtc_S19207C21[0]), // expected_vtbl_contents
  &(vtt_S19207C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19207C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19207C21),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C21),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  S19207C20  : S19207C11 , virtual S19207C2 , virtual S19207C15 , S19207C21 , S77C13_nt {
  int s19207c20f0;
  ~S19207C20(); // tgen
  S19207C20(); // tgen
};
//SIG(-1 S19207C20) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S19207C20 ::~S19207C20(){ note_dtor("S19207C20", this);} // tgen
S19207C20 ::S19207C20(){ note_ctor("S19207C20", this);} // tgen

static void Test_S19207C20()
{
  extern Class_Descriptor cd_S19207C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19207C20, buf);
    S19207C20 *dp, &lv = *(dp=new (buf) S19207C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19207C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C20)");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C20");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C20");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(28,16), "S19207C20");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(8,4), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*), 0, "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*), ABISELECT(32,20), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,20), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,20), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(64,36), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(56,32), "S19207C20");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(56,32), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(128,72), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C20");
    /*is_ambiguous_... S19207C20::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C20");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(120,68), "S19207C20");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(120,68), "S19207C20");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(104,56), "S19207C20");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C20");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(136,76), "S19207C20");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(136,76), "S19207C20");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(136,76), "S19207C20");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(80,44), "S19207C20");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C20");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C20");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(96,52), "S19207C20");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(72,40), "S19207C20");
    check_base_class_offset(lv, (S19207C15*), ABISELECT(48,28), "S19207C20");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S19207C21*), ABISELECT(16,8), "S19207C20");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19207C20");
    check_field_offset(lv, s19207c20f0, ABISELECT(24,12), "S19207C20.s19207c20f0");
    test_class_info(&lv, &cd_S19207C20);
    dp->~S19207C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C20(Test_S19207C20, "S19207C20", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN9S19207C20C1Ev();
extern void _ZN9S19207C20D1Ev();
Name_Map name_map_S19207C20[] = {
  NSPAIR(_ZN9S19207C20C1Ev),
  NSPAIR(_ZN9S19207C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19207C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19207C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19207C13,    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
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19207C11,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S19207C10,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S19207C20[];
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C20D1Ev,_ZThn28_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C20D0Ev,_ZThn28_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C20D1Ev,_ZThn32_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C20D0Ev,_ZThn32_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C20D1Ev,_ZThn40_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C20D0Ev,_ZThn40_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C20D1Ev,_ZThn56_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C20D0Ev,_ZThn56_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C20D1Ev,_ZThn68_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C20D0Ev,_ZThn68_N9S19207C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C20D1Ev,_ZThn76_N9S19207C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C20D0Ev,_ZThn76_N9S19207C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19207C20[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C20[];
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A__9S19207C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C20[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C21__A1__9S19207C20[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A2__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__9S19207C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__9S19207C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__9S19207C20[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__9S19207C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__9S19207C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A3__9S19207C20[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C20[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C20[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C20[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C20[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C20[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C20[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C20[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__9S19207C20[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__9S19207C20[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__9S19207C20[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__9S19207C20[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTT_ENTRY vtt_S19207C20[] = {
  {&(_ZTV9S19207C20[16]),  16,114},
  {&(_tg__ZTV9S19207C11__A__9S19207C20[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C21__A1__9S19207C20[3]),  3,3},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[27]),  27,114},
  {&(_ZTV9S19207C20[43]),  43,114},
  {&(_ZTV9S19207C20[53]),  53,114},
  {&(_ZTV9S19207C20[70]),  70,114},
  {&(_ZTV9S19207C20[89]),  89,114},
  {&(_ZTV9S19207C20[99]),  99,114},
  {&(_ZTV9S19207C20[112]),  112,114},
  {&(_ZTV9S19207C20[112]),  112,114},
  {&(_ZTV9S19207C20[78]),  78,114},
  {&(_ZTV9S19207C20[21]),  21,114},
  {&(_tg__ZTV9S19207C12__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C2__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A2__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__9S19207C20[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__A1__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A3__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C16__9S19207C20[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C20[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C20[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C20[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A2__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C20[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C20[6]),  6,6},
  {&(_tg__ZTV8S19207C9__9S19207C20[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C9__9S19207C20[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__9S19207C20[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__9S19207C20[6]),  6,6},
  {&(_tg__ZTV9S19207C10__9S19207C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D0Ev,_ZThn48_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn28_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C15D1Ev,_ZThn48_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn28_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D0Ev,_ZThn12_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19207C15D1Ev,_ZThn12_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C20D0Ev,_ZThn76_N9S19207C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C20D0Ev,_ZThn56_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C20D1Ev,_ZThn76_N9S19207C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C20D1Ev,_ZThn56_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C20D0Ev,_ZThn40_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C20D1Ev,_ZThn40_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C20D0Ev,_ZThn68_N9S19207C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C20D0Ev,_ZThn32_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C20D1Ev,_ZThn68_N9S19207C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C20D1Ev,_ZThn32_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C20D0Ev,_ZThn28_N9S19207C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C20D1Ev,_ZThn28_N9S19207C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C20 = {  "S19207C20", // class name
  bases_S19207C20, 48,
  &(vtc_S19207C20[0]), // expected_vtbl_contents
  &(vtt_S19207C20[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI9S19207C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19207C20),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C20),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C14  : S19207C8 , S19207C5 , virtual S19207C15 , virtual S19207C20 {
  int s19207c14f0;
  ~S19207C14(); // tgen
  S19207C14(); // tgen
};
//SIG(-1 S19207C14) C1{ BC2{ BC3{ VBC4{ VBC5{ m} BC6{ m} VBC7{ m}} VBC8{ VBC6} VBC9{ BC7 BC6 BC4 Fi} BC7 VBC10{ VBC5 VBC6 VBC11{ BC5 VBC4 VBC6} BC7 BC12{ BC6 VBC5 VBC7 BC4 VBC11 vd} vd} vd Fi} BC6} BC4 VBC13{ VBC10 VBC14{ VBC15{ VBC10 VBC9 VBC12 vd Fi[2]} VBC16{ m} VBC3 BC17{ VBC12 BC9 BC11 BC7 vd} vd} vd} VBC18{ BC10 VBC9 VBC13 BC19{ BC6 BC8 vd} BC20{ m} Fi} Fi}


S19207C14 ::~S19207C14(){ note_dtor("S19207C14", this);} // tgen
S19207C14 ::S19207C14(){ note_ctor("S19207C14", this);} // tgen

static void Test_S19207C14()
{
  extern Class_Descriptor cd_S19207C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,26)];
    init_test(&cd_S19207C14, buf);
    S19207C14 *dp, &lv = *(dp=new (buf) S19207C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,100), "sizeof(S19207C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C14)");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C14");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(28,16), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(28,16), "S19207C14");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C10*)(S19207C9*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,24), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,20), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*), ABISELECT(32,20), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C20*), ABISELECT(32,20), "S19207C14");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(56,32), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(48,28), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(48,28), "S19207C14");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*), 0, "S19207C14");
    check_base_class_offset(lv, (S19207C8*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(16,8), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*), ABISELECT(16,8), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(128,72), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(120,68), "S19207C14");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(120,68), "S19207C14");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(120,68), "S19207C14");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(104,56), "S19207C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C14");
    /*is_ambiguous_... S19207C14::S19207C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(136,76), "S19207C14");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(136,76), "S19207C14");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(80,44), "S19207C14");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C14");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(88,48), "S19207C14");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(96,52), "S19207C14");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(72,40), "S19207C14");
    check_base_class_offset(lv, (S19207C15*), ABISELECT(64,36), "S19207C14");
    check_base_class_offset(lv, (S19207C15*)(S19207C20*), ABISELECT(64,36), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(160,88), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S19207C21*)(S19207C20*), ABISELECT(168,92), "S19207C14");
    check_base_class_offset(lv, (S77C13_nt*)(S19207C20*), ABISELECT(152,84), "S19207C14");
    check_base_class_offset(lv, (S19207C20*), ABISELECT(152,84), "S19207C14");
    check_field_offset(lv, s19207c14f0, ABISELECT(24,12), "S19207C14.s19207c14f0");
    test_class_info(&lv, &cd_S19207C14);
    dp->~S19207C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C14(Test_S19207C14, "S19207C14", ABISELECT(184,100));

#else // __cplusplus

extern void _ZN9S19207C14C1Ev();
extern void _ZN9S19207C14D1Ev();
Name_Map name_map_S19207C14[] = {
  NSPAIR(_ZN9S19207C14C1Ev),
  NSPAIR(_ZN9S19207C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19207C20;
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
static Base_Class bases_S19207C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19207C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19207C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S19207C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    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
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C8,    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
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    24, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(64,36), //bcp->offset
    37, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    52, //immediately_derived
  0, 0},
  {&cd_S19207C10,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(168,92), //bcp->offset
    133, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19207C20,    ABISELECT(152,84), //bcp->offset
    114, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19207C14[];
extern void _ZN9S19207C14D1Ev();
extern void _ZN9S19207C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C14D1Ev,_ZThn28_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C14D0Ev,_ZThn28_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn36_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn36_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19207C14D1Ev,_ZThn56_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19207C14D0Ev,_ZThn56_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn76_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn76_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn84_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn84_N9S19207C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev)();
static  VTBL_ENTRY vtc_S19207C14[] = {
  ABISELECT(152,84),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&_ZN9S19207C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C14D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  ABISELECT(-16,-8),
  ABISELECT(-152,-84),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-120,-64),
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev),
  ABISELECT(-140,-76),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19207C14[];
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C8__9S19207C14[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(64,36),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C8__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C9D1Ev,_ZThn28_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C9D0Ev,_ZThn28_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C8__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C8__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C8__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C8D1Ev,_ZThn28_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C8D0Ev,_ZThn28_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C8__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C14[] = {
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C14[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__A1__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__9S19207C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__9S19207C14[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__9S19207C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__9S19207C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__9S19207C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__9S19207C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__9S19207C14[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__9S19207C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__9S19207C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C14[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__9S19207C14[] = {
  ABISELECT(56,28),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__9S19207C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__9S19207C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__A1__9S19207C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__A1__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__A1__9S19207C14[] = {
  ABISELECT(88,48),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C20__9S19207C14[] = {
  ABISELECT(-152,-84),
  ABISELECT(-16,-8),
  ABISELECT(-152,-84),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-120,-64),
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C119S19207C20__A1__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C119S19207C20__A2__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__9S19207C14[] = {
  ABISELECT(-124,-68),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__9S19207C14[] = {
  ABISELECT(-140,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C219S19207C20__A1__9S19207C14[] = {
  ABISELECT(-140,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20__9S19207C14[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(72,40),
  ABISELECT(-64,-36),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20__9S19207C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20__9S19207C14[] = {
  ABISELECT(104,56),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20__9S19207C14[] = {
  ABISELECT(80,44),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20__9S19207C14[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20__9S19207C14[] = {
  ABISELECT(32,16),
  ABISELECT(-92,-52),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20__9S19207C14[] = {
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-136,-76),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-108,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20__9S19207C14[] = {
  ABISELECT(28,16),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__9S19207C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20__9S19207C14[] = {
  ABISELECT(-140,-76),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
};
static  VTT_ENTRY vtt_S19207C14[] = {
  {&(_ZTV9S19207C14[17]),  17,138},
  {&(_tg__ZTV8S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C8__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C8__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C8__9S19207C14[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C8__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C8__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C8__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A__9S19207C14[4]),  4,4},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[17]),  17,138},
  {&(_ZTV9S19207C14[27]),  27,138},
  {&(_ZTV9S19207C14[35]),  35,138},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[23]),  23,138},
  {&(_ZTV9S19207C14[53]),  53,138},
  {&(_ZTV9S19207C14[70]),  70,138},
  {&(_ZTV9S19207C14[89]),  89,138},
  {&(_ZTV9S19207C14[99]),  99,138},
  {&(_ZTV9S19207C14[112]),  112,138},
  {&(_ZTV9S19207C14[78]),  78,138},
  {&(_ZTV9S19207C14[131]),  131,138},
  {&(_ZTV9S19207C14[136]),  136,138},
  {&(_tg__ZTV8S19207C5__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C10__9S19207C14[3]),  3,3},
  {&(_tg__ZTV8S19207C2__9S19207C14[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__9S19207C14[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__9S19207C14[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C15__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C16__9S19207C14[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C16__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A1__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV8S19207C9__A1__9S19207C14[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C9__A1__9S19207C14[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9__A1__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__A1__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C119S19207C20__A1__9S19207C14[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C119S19207C20__A2__9S19207C14[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C219S19207C20__9S19207C14[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C219S19207C20__A1__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV8S19207C2__9S19207C20__9S19207C14[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20__9S19207C14[16]),  16,18},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20__9S19207C14[8]),  8,10},
  {&(_tg__ZTV9S19207C16__9S19207C20__9S19207C14[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C20__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20__9S19207C14[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C20__9S19207C14[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C20__9S19207C14[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__9S19207C14[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20__9S19207C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19207C14[];
extern  VTBL_ENTRY _ZTV9S19207C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C14[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C8D0Ev,_ZThn28_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C8D1Ev,_ZThn28_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C9D0Ev,_ZThn28_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C9D1Ev,_ZThn28_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn84_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn84_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn76_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C14D0Ev,_ZThn56_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn76_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19207C14D1Ev,_ZThn56_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn36_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn36_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C14D0Ev,_ZThn28_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C14D1Ev,_ZThn28_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C14 = {  "S19207C14", // class name
  bases_S19207C14, 55,
  &(vtc_S19207C14[0]), // expected_vtbl_contents
  &(vtt_S19207C14[0]), // expected_vtt_contents
  ABISELECT(184,100), // object size
  NSPAIRA(_ZTI9S19207C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19207C14),138, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19207C14),109, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19207C1  : virtual S19207C2 , virtual S19207C7 , S19207C14 {
  ~S19207C1(); // tgen
  S19207C1(); // tgen
};
//SIG(1 S19207C1) C1{ VBC2{ BC3{ m} BC4{ m} BC5{ VBC6{ m} BC4 VBC3} Fi} VBC7{ VBC4 BC8{ BC9{ VBC5 VBC10{ VBC4} VBC2 BC3 VBC11{ VBC6 VBC4 VBC12{ BC6 VBC5 VBC4} BC3 BC13{ BC4 VBC6 VBC3 BC5 VBC12 vd} vd} vd Fi} BC4}} BC14{ BC8 BC5 VBC15{ VBC11 VBC16{ VBC17{ VBC11 VBC2 VBC13 vd Fi[2]} VBC18{ m} VBC9 BC19{ VBC13 BC2 BC12 BC3 vd} vd} vd} VBC20{ BC11 VBC2 VBC15 BC21{ BC4 BC10 vd} BC22{ m} Fi} Fi}}


S19207C1 ::~S19207C1(){ note_dtor("S19207C1", this);} // tgen
S19207C1 ::S19207C1(){ note_ctor("S19207C1", this);} // tgen

static void Test_S19207C1()
{
  extern Class_Descriptor cd_S19207C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,29)];
    init_test(&cd_S19207C1, buf);
    S19207C1 *dp, &lv = *(dp=new (buf) S19207C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,112), "sizeof(S19207C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19207C1)");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*), ABISELECT(40,20), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*), 0, "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*), 0, "S19207C1");
    check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C14*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*), ABISELECT(44,24), "S19207C1");
    check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(44,24), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C2*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(32,16), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C17*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C9*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C2 */ AMB_check_base_class_offset(lv, (S19207C2*)(S19207C20*), ABISELECT(32,16), "S19207C1");
    /*is_ambiguous_... S19207C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C7*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C10*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C11*)(S19207C20*), ABISELECT(60,36), "S19207C1");
    check_base_class_offset(lv, (S7856C15*)(S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(60,36), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C9::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C9*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(80,48), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C10*)(S19207C9*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C11*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*), ABISELECT(72,44), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C9*)(S19207C8*)(S19207C14*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C15*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C11*)(S19207C17*), ABISELECT(64,40), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C9*), ABISELECT(64,40), "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C8*)(S19207C7*), ABISELECT(48,28), "S19207C1");
    check_base_class_offset(lv, (S19207C7*), ABISELECT(48,28), "S19207C1");
    /*is_ambiguous_... S19207C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C8*)(S19207C14*), 0, "S19207C1");
    check_base_class_offset(lv, (S19207C8*)(S19207C14*), 0, "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C14*), ABISELECT(16,8), "S19207C1");
    /*is_ambiguous_... S19207C14::S19207C5 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C14*), ABISELECT(16,8), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*), ABISELECT(144,84), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*), ABISELECT(136,80), "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*), ABISELECT(136,80), "S19207C1");
    /*is_ambiguous_... S19207C17::S19207C13 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C17*), ABISELECT(136,80), "S19207C1");
    check_base_class_offset(lv, (S19207C13*)(S19207C19*)(S19207C16*), ABISELECT(136,80), "S19207C1");
    check_base_class_offset(lv, (S19207C17*)(S19207C16*), ABISELECT(120,68), "S19207C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19207C16*), 0, "S19207C1");
    /*is_ambiguous_... S19207C1::S19207C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C9*), ABISELECT(152,88), "S19207C1");
    check_base_class_offset(lv, (S19207C9*)(S19207C16*), ABISELECT(152,88), "S19207C1");
    /*is_ambiguous_... S19207C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    /*is_ambiguous_... S19207C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(96,56), "S19207C1");
    check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C5*)(S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C2*)(S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(104,60), "S19207C1");
    /*is_ambiguous_... S19207C19::S19207C12 */ AMB_check_base_class_offset(lv, (S19207C12*)(S19207C19*)(S19207C16*), ABISELECT(104,60), "S19207C1");
    /*is_ambiguous_... S19207C19::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C19*)(S19207C16*), ABISELECT(112,64), "S19207C1");
    check_base_class_offset(lv, (S19207C19*)(S19207C16*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C16*)(S19207C15*), ABISELECT(88,52), "S19207C1");
    check_base_class_offset(lv, (S19207C15*)(S19207C14*), ABISELECT(80,48), "S19207C1");
    check_base_class_offset(lv, (S19207C15*)(S19207C20*), ABISELECT(80,48), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(176,100), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C5*)(S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C13*)(S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C20::S19207C11 */ AMB_check_base_class_offset(lv, (S19207C11*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    /*is_ambiguous_... S19207C21::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S19207C10*)(S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S19207C21*)(S19207C20*), ABISELECT(184,104), "S19207C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19207C20*), ABISELECT(168,96), "S19207C1");
    check_base_class_offset(lv, (S19207C20*)(S19207C14*), ABISELECT(168,96), "S19207C1");
    check_base_class_offset(lv, (S19207C14*), 0, "S19207C1");
    test_class_info(&lv, &cd_S19207C1);
    dp->~S19207C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19207C1(Test_S19207C1, "S19207C1", ABISELECT(200,112));

#else // __cplusplus

extern void _ZN8S19207C1C1Ev();
extern void _ZN8S19207C1D1Ev();
Name_Map name_map_S19207C1[] = {
  NSPAIR(_ZN8S19207C1C1Ev),
  NSPAIR(_ZN8S19207C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S19207C7;
extern VTBL_ENTRY _ZTI8S19207C7[];
extern  VTBL_ENTRY _ZTV8S19207C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C8;
extern VTBL_ENTRY _ZTI8S19207C8[];
extern  VTBL_ENTRY _ZTV8S19207C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C17;
extern VTBL_ENTRY _ZTI9S19207C17[];
extern  VTBL_ENTRY _ZTV9S19207C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C17[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C9;
extern VTBL_ENTRY _ZTI8S19207C9[];
extern  VTBL_ENTRY _ZTV8S19207C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C9[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C2;
extern VTBL_ENTRY _ZTI8S19207C2[];
extern  VTBL_ENTRY _ZTV8S19207C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19207C12;
extern VTBL_ENTRY _ZTI9S19207C12[];
extern  VTBL_ENTRY _ZTV9S19207C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19207C19;
extern VTBL_ENTRY _ZTI9S19207C19[];
extern  VTBL_ENTRY _ZTV9S19207C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C19[];
extern Class_Descriptor cd_S19207C16;
extern VTBL_ENTRY _ZTI9S19207C16[];
extern  VTBL_ENTRY _ZTV9S19207C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C16[];
extern Class_Descriptor cd_S19207C15;
extern VTBL_ENTRY _ZTI9S19207C15[];
extern  VTBL_ENTRY _ZTV9S19207C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C5;
extern VTBL_ENTRY _ZTI8S19207C5[];
extern  VTBL_ENTRY _ZTV8S19207C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C5[];
extern Class_Descriptor cd_S19207C13;
extern VTBL_ENTRY _ZTI9S19207C13[];
extern  VTBL_ENTRY _ZTV9S19207C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C13[];
extern Class_Descriptor cd_S19207C11;
extern VTBL_ENTRY _ZTI9S19207C11[];
extern  VTBL_ENTRY _ZTV9S19207C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19207C10;
extern VTBL_ENTRY _ZTI9S19207C10[];
extern  VTBL_ENTRY _ZTV9S19207C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C10[];
extern Class_Descriptor cd_S19207C21;
extern VTBL_ENTRY _ZTI9S19207C21[];
extern  VTBL_ENTRY _ZTV9S19207C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C21[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19207C20;
extern VTBL_ENTRY _ZTI9S19207C20[];
extern  VTBL_ENTRY _ZTV9S19207C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C20[];
extern Class_Descriptor cd_S19207C14;
extern VTBL_ENTRY _ZTI9S19207C14[];
extern  VTBL_ENTRY _ZTV9S19207C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19207C14[];
static Base_Class bases_S19207C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(44,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, 1},
  {&cd_S19207C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19207C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(64,40), //bcp->offset
    41, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19207C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S19207C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19207C7,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19207C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    29, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,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
    33, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(136,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S19207C17,    ABISELECT(120,68), //bcp->offset
    92, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(152,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
    37, //immediately_derived
  0, 0},
  {&cd_S19207C9,    ABISELECT(152,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    42, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    41, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19207C2,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19207C12,    ABISELECT(104,60), //bcp->offset
    86, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19207C19,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19207C16,    ABISELECT(88,52), //bcp->offset
    69, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19207C15,    ABISELECT(80,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19207C5,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19207C13,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19207C11,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19207C10,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19207C21,    ABISELECT(184,104), //bcp->offset
    147, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19207C20,    ABISELECT(168,96), //bcp->offset
    128, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S19207C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S19207C1[];
extern void _ZN8S19207C1D1Ev();
extern void _ZN8S19207C1D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19207C1D1Ev,_ZThn28_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19207C1D0Ev,_ZThn28_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C1D1Ev,_ZThn40_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C1D0Ev,_ZThn40_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19207C1D1Ev,_ZThn48_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19207C1D0Ev,_ZThn48_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19207C1D1Ev,_ZThn52_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S19207C1D0Ev,_ZThn52_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19207C1D1Ev,_ZThn68_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19207C1D0Ev,_ZThn68_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19207C1D1Ev,_ZThn80_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19207C1D0Ev,_ZThn80_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19207C1D1Ev,_ZThn88_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19207C1D0Ev,_ZThn88_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19207C1D1Ev,_ZThn96_N8S19207C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19207C1D0Ev,_ZThn96_N8S19207C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N8S19207C1D1Ev,_ZTvn8_n68_N8S19207C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S19207C1D0Ev,_ZTvn8_n68_N8S19207C1D0Ev)();
static  VTBL_ENTRY vtc_S19207C1[] = {
  ABISELECT(48,28),
  ABISELECT(168,96),
  ABISELECT(152,88),
  0,
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&_ZN8S19207C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C1D0Ev,
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  ABISELECT(-120,-68),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev),
  ABISELECT(-168,-96),
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev),
  ABISELECT(-124,-68),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S19207C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19207C1D1Ev,_ZTvn8_n68_N8S19207C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19207C1D0Ev,_ZTvn8_n68_N8S19207C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19207C1[];
extern void _ZN9S19207C14D1Ev();
extern void _ZN9S19207C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C14__8S19207C1[] = {
  ABISELECT(168,96),
  ABISELECT(152,88),
  0,
  ABISELECT(136,80),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&_ZN9S19207C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C14D0Ev,
};
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  ABISELECT(32,16),
  ABISELECT(48,28),
  ABISELECT(44,24),
  0,
  ABISELECT(80,48),
  ABISELECT(60,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C9D1Ev,_ZThn40_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C9D0Ev,_ZThn40_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19207C8D1Ev,_ZThn40_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19207C8D0Ev,_ZThn40_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C89S19207C14__A1__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C14__A3__8S19207C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19207C14D1Ev,_ZThn48_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19207C14D0Ev,_ZThn48_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C14__8S19207C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C14__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C14__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C14__8S19207C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A__9S19207C14__8S19207C1[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19207C14D1Ev,_ZThn52_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19207C14D0Ev,_ZThn52_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C14__8S19207C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C14__8S19207C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn80_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn80_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn88_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn88_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
};
extern void ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZThn168_N9S19207C14D1Ev,_ZThn96_N9S19207C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev)();
extern void ABISELECT(_ZThn168_N9S19207C14D0Ev,_ZThn96_N9S19207C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C20__9S19207C14__8S19207C1[] = {
  ABISELECT(-168,-96),
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__9S19207C14__8S19207C1[] = {
  ABISELECT(-124,-68),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S19207C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D1Ev,_ZTvn8_n68_N9S19207C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N9S19207C14D0Ev,_ZTvn8_n68_N9S19207C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
extern void _ZN8S19207C7D1Ev();
extern void _ZN8S19207C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&_ZN8S19207C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C7D0Ev,
};
extern void _ZN8S19207C8D1Ev();
extern void _ZN8S19207C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&_ZN8S19207C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C8D0Ev,
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  0,
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,20),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C9D1Ev,_ZThn12_N8S19207C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C9D0Ev,_ZThn12_N8S19207C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C98S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C8D1Ev,_ZThn12_N8S19207C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C8D0Ev,_ZThn12_N8S19207C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C88S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C7__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C7__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19207C7D1Ev,_ZThn12_N8S19207C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S19207C7D0Ev,_ZThn12_N8S19207C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C7__8S19207C1[] = {
  ABISELECT(-16,-12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19207C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__A1__8S19207C1[] = {
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C1[] = {
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C11__8S19207C1[] = {
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C1[] = {
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C11__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void _ZN9S19207C15D1Ev();
extern void _ZN9S19207C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C15__8S19207C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&_ZN9S19207C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C15__8S19207C1[] = {
  ABISELECT(16,8),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C15__8S19207C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C15__8S19207C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C15__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C15__8S19207C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C15__8S19207C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C15__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C15[0]),
};
extern void _ZN9S19207C16D1Ev();
extern void _ZN9S19207C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C16__8S19207C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&_ZN9S19207C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C16D0Ev,
};
extern void _ZN9S19207C19D1Ev();
extern void _ZN9S19207C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&_ZN9S19207C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C29S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__8S19207C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__8S19207C1[] = {
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__A__9S19207C199S19207C16__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C19[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C16__8S19207C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C16__8S19207C1[] = {
  ABISELECT(24,12),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C16__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C16__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C16__8S19207C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C16__8S19207C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C16__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C19__A1__9S19207C16__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C16[0]),
};
extern void _ZN9S19207C17D1Ev();
extern void _ZN9S19207C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C17__8S19207C1[] = {
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&_ZN9S19207C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C17D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__9S19207C17__8S19207C1[] = {
  ABISELECT(56,28),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C17__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C17__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__9S19207C17__8S19207C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19207C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev),
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A1__8S19207C1[] = {
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C13__A4__8S19207C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
extern void _ZN8S19207C9D1Ev();
extern void _ZN8S19207C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19207C9__A2__8S19207C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&_ZN8S19207C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19207C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__8S19207C9__A2__8S19207C1[] = {
  ABISELECT(88,48),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19207C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev),
};
extern void _ZN9S19207C20D1Ev();
extern void _ZN9S19207C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C20__8S19207C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-16,-8),
  ABISELECT(-168,-96),
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  ABISELECT(-136,-80),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&_ZN9S19207C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C20D0Ev,
};
extern void _ZN9S19207C11D1Ev();
extern void _ZN9S19207C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C119S19207C20__A1__8S19207C1[] = {
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
  (VTBL_ENTRY)&_ZN9S19207C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C11D0Ev,
};
extern void _ZN9S19207C13D1Ev();
extern void _ZN9S19207C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C139S19207C119S19207C20__A2__8S19207C1[] = {
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
  (VTBL_ENTRY)&_ZN9S19207C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__8S19207C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-168,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19207C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C11[0]),
};
extern void _ZN9S19207C21D1Ev();
extern void _ZN9S19207C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19207C219S19207C20__8S19207C1[] = {
  ABISELECT(-124,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C21[0]),
  (VTBL_ENTRY)&_ZN9S19207C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19207C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19207C109S19207C219S19207C20__A1__8S19207C1[] = {
  ABISELECT(-124,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19207C10[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C15__9S19207C20__8S19207C1[] = {
  ABISELECT(88,48),
  ABISELECT(-32,-20),
  ABISELECT(72,40),
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-36,-24),
  ABISELECT(-80,-48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D1Ev,_ZTv0_n64_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19207C20D0Ev,_ZTv0_n64_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19207C2__9S19207C20__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(-32,-16),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C11__A1__9S19207C20__8S19207C1[] = {
  ABISELECT(104,56),
  -4,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-16),
  ABISELECT(-64,-40),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C16__9S19207C20__8S19207C1[] = {
  ABISELECT(80,44),
  ABISELECT(-40,-24),
  ABISELECT(64,36),
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-28),
  ABISELECT(-88,-52),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D1Ev,_ZTv0_n60_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19207C20D0Ev,_ZTv0_n60_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C17__9S19207C20__8S19207C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-76,-44),
  ABISELECT(-120,-68),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C13__A2__9S19207C20__8S19207C1[] = {
  ABISELECT(32,16),
  ABISELECT(-76,-44),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-56),
  ABISELECT(-136,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D1Ev,_ZTv0_n32_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19207C20D0Ev,_ZTv0_n32_N9S19207C20D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19207C9__9S19207C20__8S19207C1[] = {
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-104,-60),
  ABISELECT(-108,-64),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D1Ev,_ZTv0_n44_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19207C20D0Ev,_ZTv0_n44_N9S19207C20D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19207C10__9S19207C20__8S19207C1[] = {
  ABISELECT(12,8),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__8S19207C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-60,-36),
  ABISELECT(-104,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
};
extern void ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19207C21__9S19207C20__8S19207C1[] = {
  ABISELECT(-124,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19207C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D1Ev,_ZThn8_N9S19207C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19207C20D0Ev,_ZThn8_N9S19207C20D0Ev),
};
static  VTT_ENTRY vtt_S19207C1[] = {
  {&(_ZTV8S19207C1[18]),  18,152},
  {&(_tg__ZTV9S19207C14__8S19207C1[17]),  17,19},
  {&(_tg__ZTV8S19207C89S19207C14__A1__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C89S19207C14__A1__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C98S19207C89S19207C14__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C89S19207C14__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C89S19207C14__A1__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C89S19207C14__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C89S19207C14__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C89S19207C14__A1__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C89S19207C14__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C59S19207C14__A3__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C10__9S19207C14__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__9S19207C14__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__9S19207C14__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV8S19207C5__A__9S19207C14__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C14__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C16__9S19207C14__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C14__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A1__9S19207C14__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__A1__9S19207C14__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C14__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C20__9S19207C14__8S19207C1[17]),  17,19},
  {&(_tg__ZTV9S19207C219S19207C20__9S19207C14__8S19207C1[3]),  3,5},
  {&(_ZTV8S19207C1[28]),  28,152},
  {&(_ZTV8S19207C1[39]),  39,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[39]),  39,152},
  {&(_ZTV8S19207C1[49]),  49,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[24]),  24,152},
  {&(_ZTV8S19207C1[67]),  67,152},
  {&(_ZTV8S19207C1[84]),  84,152},
  {&(_ZTV8S19207C1[103]),  103,152},
  {&(_ZTV8S19207C1[113]),  113,152},
  {&(_ZTV8S19207C1[126]),  126,152},
  {&(_ZTV8S19207C1[92]),  92,152},
  {&(_ZTV8S19207C1[145]),  145,152},
  {&(_ZTV8S19207C1[150]),  150,152},
  {&(_tg__ZTV8S19207C2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C98S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C98S19207C88S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C98S19207C88S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C98S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C88S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C88S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C88S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C88S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C7__8S19207C1[10]),  10,12},
  {&(_tg__ZTV8S19207C2__8S19207C7__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C7__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C7__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C5__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C10__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C11__8S19207C1[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C11__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C11__A2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C11__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C11__9S19207C15__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C16__9S19207C15__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C15__8S19207C1[11]),  11,13},
  {&(_tg__ZTV8S19207C2__9S19207C15__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C15__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C15__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C15__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C15__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C16__8S19207C1[14]),  14,16},
  {&(_tg__ZTV9S19207C199S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C29S19207C199S19207C16__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV8S19207C58S19207C29S19207C199S19207C16__A5__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C5__9S19207C129S19207C199S19207C16__A1__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__9S19207C199S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__A__9S19207C199S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C17__9S19207C16__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C11__9S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C16__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C16__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C16__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C16__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C19__A1__9S19207C16__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C17__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C11__9S19207C17__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__9S19207C17__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C17__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C2__9S19207C17__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C13__A1__9S19207C17__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C13__A1__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C13__A4__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C13__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV8S19207C9__A2__8S19207C1[10]),  10,12},
  {&(_tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C10__8S19207C9__A2__8S19207C1[3]),  3,3},
  {&(_tg__ZTV8S19207C2__8S19207C9__A2__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C11__8S19207C9__A2__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C12__8S19207C9__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C119S19207C20__A1__8S19207C1[7]),  7,9},
  {&(_tg__ZTV9S19207C139S19207C119S19207C20__A2__8S19207C1[7]),  7,9},
  {&(_tg__ZTV8S19207C59S19207C139S19207C119S19207C20__A6__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C139S19207C119S19207C20__A2__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C12__9S19207C119S19207C20__A1__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C219S19207C20__8S19207C1[3]),  3,5},
  {&(_tg__ZTV9S19207C109S19207C219S19207C20__A1__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV8S19207C2__9S19207C20__8S19207C1[4]),  4,4},
  {&(_tg__ZTV9S19207C15__9S19207C20__8S19207C1[16]),  16,18},
  {&(_tg__ZTV9S19207C11__A1__9S19207C20__8S19207C1[8]),  8,10},
  {&(_tg__ZTV9S19207C16__9S19207C20__8S19207C1[15]),  15,17},
  {&(_tg__ZTV9S19207C17__9S19207C20__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C13__A2__9S19207C20__8S19207C1[8]),  8,10},
  {&(_tg__ZTV8S19207C9__9S19207C20__8S19207C1[11]),  11,13},
  {&(_tg__ZTV9S19207C10__9S19207C20__8S19207C1[3]),  3,3},
  {&(_tg__ZTV9S19207C129S19207C199S19207C16__A1__9S19207C20__8S19207C1[6]),  6,6},
  {&(_tg__ZTV9S19207C21__9S19207C20__8S19207C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19207C1[];
extern  VTBL_ENTRY _ZTV8S19207C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19207C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D0Ev,_ZTv0_n32_N9S19207C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D0Ev,_ZThn12_N9S19207C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C17D1Ev,_ZTv0_n32_N9S19207C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19207C17D1Ev,_ZThn12_N9S19207C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D0Ev,_ZTv0_n32_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D0Ev,_ZThn28_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C16D1Ev,_ZTv0_n32_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C16D1Ev,_ZThn28_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D0Ev,_ZTv0_n44_N9S19207C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D0Ev,_ZThn36_N9S19207C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D0Ev,_ZThn16_N9S19207C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C16D1Ev,_ZTv0_n44_N9S19207C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C16D1Ev,_ZThn36_N9S19207C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19207C16D1Ev,_ZThn16_N9S19207C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D0Ev,_ZTv0_n32_N9S19207C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D0Ev,_ZThn28_N9S19207C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C19D1Ev,_ZTv0_n32_N9S19207C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19207C19D1Ev,_ZThn28_N9S19207C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D0Ev,_ZTv0_n32_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D0Ev,_ZThn32_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C15D1Ev,_ZTv0_n32_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19207C15D1Ev,_ZThn32_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D0Ev,_ZTv0_n44_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D0Ev,_ZThn40_N9S19207C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D0Ev,_ZThn20_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C15D1Ev,_ZTv0_n44_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19207C15D1Ev,_ZThn40_N9S19207C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19207C15D1Ev,_ZThn20_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D0Ev,_ZTv0_n60_N9S19207C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D0Ev,_ZThn4_N9S19207C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C15D1Ev,_ZTv0_n60_N9S19207C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19207C15D1Ev,_ZThn4_N9S19207C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D0Ev,_ZTv0_n32_N8S19207C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C7D0Ev,_ZThn12_N8S19207C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C7D1Ev,_ZTv0_n32_N8S19207C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C7D1Ev,_ZThn12_N8S19207C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D0Ev,_ZTv0_n68_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19207C14D0Ev,_ZThn96_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S19207C14D1Ev,_ZTv0_n68_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19207C14D1Ev,_ZThn96_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D0Ev,_ZTv0_n44_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D0Ev,_ZThn88_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D0Ev,_ZThn68_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19207C14D1Ev,_ZTv0_n44_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19207C14D1Ev,_ZThn88_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19207C14D1Ev,_ZThn68_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D0Ev,_ZTv0_n60_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C14D0Ev,_ZThn52_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19207C14D1Ev,_ZTv0_n60_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19207C14D1Ev,_ZThn52_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D0Ev,_ZTv0_n32_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D0Ev,_ZThn80_N9S19207C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D0Ev,_ZThn40_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19207C14D1Ev,_ZTv0_n32_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19207C14D1Ev,_ZThn80_N9S19207C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19207C14D1Ev,_ZThn40_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D0Ev,_ZTv0_n64_N9S19207C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C14D0Ev,_ZThn48_N9S19207C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19207C14D1Ev,_ZTv0_n64_N9S19207C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19207C14D1Ev,_ZThn48_N9S19207C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D0Ev,_ZTv0_n32_N8S19207C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C8D0Ev,_ZThn12_N8S19207C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C8D0Ev,_ZThn40_N8S19207C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C8D1Ev,_ZTv0_n32_N8S19207C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C8D1Ev,_ZThn12_N8S19207C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C8D1Ev,_ZThn40_N8S19207C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D0Ev,_ZTv0_n32_N8S19207C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C9D0Ev,_ZThn12_N8S19207C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C9D0Ev,_ZThn40_N8S19207C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C9D1Ev,_ZTv0_n32_N8S19207C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19207C9D1Ev,_ZThn12_N8S19207C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C9D1Ev,_ZThn40_N8S19207C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19207C1D0Ev,_ZTv0_n68_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19207C1D0Ev,_ZThn96_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19207C1D1Ev,_ZTv0_n68_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19207C1D1Ev,_ZThn96_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19207C1D0Ev,_ZTv0_n60_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19207C1D0Ev,_ZThn52_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19207C1D1Ev,_ZTv0_n60_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19207C1D1Ev,_ZThn52_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19207C1D0Ev,_ZTv0_n64_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19207C1D0Ev,_ZThn48_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19207C1D1Ev,_ZTv0_n64_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19207C1D1Ev,_ZThn48_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C1D0Ev,_ZTv0_n32_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19207C1D0Ev,_ZThn80_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C1D0Ev,_ZThn40_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19207C1D1Ev,_ZTv0_n32_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19207C1D1Ev,_ZThn80_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19207C1D1Ev,_ZThn40_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19207C1D0Ev,_ZTv0_n44_N8S19207C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19207C1D0Ev,_ZThn88_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19207C1D0Ev,_ZThn68_N8S19207C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C1D0Ev,_ZThn28_N8S19207C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19207C1D1Ev,_ZTv0_n44_N8S19207C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19207C1D1Ev,_ZThn88_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19207C1D1Ev,_ZThn68_N8S19207C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19207C1D1Ev,_ZThn28_N8S19207C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19207C1 = {  "S19207C1", // class name
  bases_S19207C1, 61,
  &(vtc_S19207C1[0]), // expected_vtbl_contents
  &(vtt_S19207C1[0]), // expected_vtt_contents
  ABISELECT(200,112), // object size
  NSPAIRA(_ZTI8S19207C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19207C1),152, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19207C1),143, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C5  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S1627C5(); // tgen
  S1627C5(); // tgen
};
//SIG(-1 S1627C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S1627C5 ::~S1627C5(){ note_dtor("S1627C5", this);} // tgen
S1627C5 ::S1627C5(){ note_ctor("S1627C5", this);} // tgen

static void Test_S1627C5()
{
  extern Class_Descriptor cd_S1627C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1627C5, buf);
    S1627C5 *dp, &lv = *(dp=new (buf) S1627C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1627C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S1627C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S1627C5");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C5");
    test_class_info(&lv, &cd_S1627C5);
    dp->~S1627C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C5(Test_S1627C5, "S1627C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1627C5C1Ev();
extern void _ZN7S1627C5D1Ev();
Name_Map name_map_S1627C5[] = {
  NSPAIR(_ZN7S1627C5C1Ev),
  NSPAIR(_ZN7S1627C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1627C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1627C5[];
static  VTBL_ENTRY vtc_S1627C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern VTBL_ENTRY _ZTV7S1627C5[];
static  VTT_ENTRY vtt_S1627C5[] = {
  {&(_ZTV7S1627C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
Class_Descriptor cd_S1627C5 = {  "S1627C5", // class name
  bases_S1627C5, 3,
  &(vtc_S1627C5[0]), // expected_vtbl_contents
  &(vtt_S1627C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1627C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1627C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C5),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  S1627C9  : virtual S7856C15 {
  ~S1627C9(); // tgen
  S1627C9(); // tgen
};
//SIG(-1 S1627C9) C1{ VBC2{ m}}


S1627C9 ::~S1627C9(){ note_dtor("S1627C9", this);} // tgen
S1627C9 ::S1627C9(){ note_ctor("S1627C9", this);} // tgen

static void Test_S1627C9()
{
  extern Class_Descriptor cd_S1627C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1627C9, buf);
    S1627C9 *dp, &lv = *(dp=new (buf) S1627C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1627C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C9)");
    check_base_class_offset(lv, (S7856C15*), 0, "S1627C9");
    test_class_info(&lv, &cd_S1627C9);
    dp->~S1627C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C9(Test_S1627C9, "S1627C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1627C9C1Ev();
extern void _ZN7S1627C9D1Ev();
Name_Map name_map_S1627C9[] = {
  NSPAIR(_ZN7S1627C9C1Ev),
  NSPAIR(_ZN7S1627C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1627C9[];
static  VTBL_ENTRY vtc_S1627C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern VTBL_ENTRY _ZTV7S1627C9[];
static  VTT_ENTRY vtt_S1627C9[] = {
  {&(_ZTV7S1627C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
Class_Descriptor cd_S1627C9 = {  "S1627C9", // class name
  bases_S1627C9, 1,
  &(vtc_S1627C9[0]), // expected_vtbl_contents
  &(vtt_S1627C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1627C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1627C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C9),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  S1627C10  : S7856C12 , S7856C15 , S1627C5 {
  int s1627c10f0;
  ~S1627C10(); // tgen
  S1627C10(); // tgen
};
//SIG(-1 S1627C10) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S1627C10 ::~S1627C10(){ note_dtor("S1627C10", this);} // tgen
S1627C10 ::S1627C10(){ note_ctor("S1627C10", this);} // tgen

static void Test_S1627C10()
{
  extern Class_Descriptor cd_S1627C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1627C10, buf);
    S1627C10 *dp, &lv = *(dp=new (buf) S1627C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1627C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C10)");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C10");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C10");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C10");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C10");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C10");
    check_base_class_offset(lv, (S1627C5*), 0, "S1627C10");
    check_field_offset(lv, s1627c10f0, ABISELECT(8,4), "S1627C10.s1627c10f0");
    test_class_info(&lv, &cd_S1627C10);
    dp->~S1627C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C10(Test_S1627C10, "S1627C10", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S1627C10C1Ev();
extern void _ZN8S1627C10D1Ev();
Name_Map name_map_S1627C10[] = {
  NSPAIR(_ZN8S1627C10C1Ev),
  NSPAIR(_ZN8S1627C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
static Base_Class bases_S1627C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S1627C5,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C10[];
static  VTBL_ENTRY vtc_S1627C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
extern VTBL_ENTRY _ZTV8S1627C10[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C10[] = {
  {&(_ZTV8S1627C10[4]),  4,4},
  {&(_tg__ZTV7S1627C5__8S1627C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
Class_Descriptor cd_S1627C10 = {  "S1627C10", // class name
  bases_S1627C10, 6,
  &(vtc_S1627C10[0]), // expected_vtbl_contents
  &(vtt_S1627C10[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S1627C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C10),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  S1627C12  : S7856C24 , virtual S1627C5 , virtual S7856C15 {
  ~S1627C12(); // tgen
  S1627C12(); // tgen
};
//SIG(-1 S1627C12) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S1627C12 ::~S1627C12(){ note_dtor("S1627C12", this);} // tgen
S1627C12 ::S1627C12(){ note_ctor("S1627C12", this);} // tgen

static void Test_S1627C12()
{
  extern Class_Descriptor cd_S1627C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C12, buf);
    S1627C12 *dp, &lv = *(dp=new (buf) S1627C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C12)");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C12");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*), ABISELECT(8,4), "S1627C12");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C12");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C12");
    check_base_class_offset(lv, (S1627C5*), 0, "S1627C12");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C12");
    test_class_info(&lv, &cd_S1627C12);
    dp->~S1627C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C12(Test_S1627C12, "S1627C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C12C1Ev();
extern void _ZN8S1627C12D1Ev();
Name_Map name_map_S1627C12[] = {
  NSPAIR(_ZN8S1627C12C1Ev),
  NSPAIR(_ZN8S1627C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    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},
  {&cd_S7856C15,    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 _ZTI8S1627C12[];
static  VTBL_ENTRY vtc_S1627C12[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern VTBL_ENTRY _ZTV8S1627C12[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C12[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C12[] = {
  {&(_ZTV8S1627C12[6]),  6,6},
  {&(_ZTV8S1627C12[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C12[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
Class_Descriptor cd_S1627C12 = {  "S1627C12", // class name
  bases_S1627C12, 6,
  &(vtc_S1627C12[0]), // expected_vtbl_contents
  &(vtt_S1627C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C12),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C12),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  S1627C13  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S1627C5 , virtual S1627C12 {
  virtual  ~S1627C13(); // _ZN8S1627C13D2Ev
  S1627C13(); // tgen
};
//SIG(-1 S1627C13) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S1627C13 ::~S1627C13(){ note_dtor("S1627C13", this);}
S1627C13 ::S1627C13(){ note_ctor("S1627C13", this);} // tgen

static void Test_S1627C13()
{
  extern Class_Descriptor cd_S1627C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1627C13, buf);
    S1627C13 *dp, &lv = *(dp=new (buf) S1627C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1627C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C13)");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S1627C13");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C13");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*), 0, "S1627C13");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C13");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(16,8), "S1627C13");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(16,8), "S1627C13");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(24,12), "S1627C13");
    check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C13");
    test_class_info(&lv, &cd_S1627C13);
    dp->~S1627C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C13(Test_S1627C13, "S1627C13", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1627C13C1Ev();
extern void _ZN8S1627C13D2Ev();
Name_Map name_map_S1627C13[] = {
  NSPAIR(_ZN8S1627C13C1Ev),
  NSPAIR(_ZN8S1627C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
static Base_Class bases_S1627C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C13[];
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY vtc_S1627C13[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern VTBL_ENTRY _ZTV8S1627C13[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__A__8S1627C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C13[] = {
  {&(_ZTV8S1627C13[7]),  7,15},
  {&(_tg__ZTV7S1627C5__A__8S1627C13[4]),  4,4},
  {&(_ZTV8S1627C13[15]),  15,15},
  {&(_ZTV8S1627C13[15]),  15,15},
  {&(_tg__ZTV8S1627C12__8S1627C13[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C13[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
Class_Descriptor cd_S1627C13 = {  "S1627C13", // class name
  bases_S1627C13, 10,
  &(vtc_S1627C13[0]), // expected_vtbl_contents
  &(vtt_S1627C13[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1627C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1627C13),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C13),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  S1627C11  : virtual S7856C24 , virtual S7856C15 , virtual S1627C12 , S7856C12 , S1627C13 {
  virtual  ~S1627C11(); // _ZN8S1627C11D2Ev
  S1627C11(); // tgen
};
//SIG(-1 S1627C11) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S1627C11 ::~S1627C11(){ note_dtor("S1627C11", this);}
S1627C11 ::S1627C11(){ note_ctor("S1627C11", this);} // tgen

static void Test_S1627C11()
{
  extern Class_Descriptor cd_S1627C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1627C11, buf);
    S1627C11 *dp, &lv = *(dp=new (buf) S1627C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1627C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C11)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S1627C11");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(9,5), "S1627C11");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(24,12), "S1627C11");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(24,12), "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C11");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(16,8), "S1627C11");
    check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C11");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(16,8), "S1627C11");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(8,4), "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), 0, "S1627C11");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), 0, "S1627C11");
    check_base_class_offset(lv, (S1627C13*), 0, "S1627C11");
    test_class_info(&lv, &cd_S1627C11);
    dp->~S1627C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C11(Test_S1627C11, "S1627C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S1627C11C1Ev();
extern void _ZN8S1627C11D2Ev();
Name_Map name_map_S1627C11[] = {
  NSPAIR(_ZN8S1627C11C1Ev),
  NSPAIR(_ZN8S1627C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
static Base_Class bases_S1627C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C11[];
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY vtc_S1627C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
extern VTBL_ENTRY _ZTV8S1627C11[];
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C11[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A1__8S1627C11[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C11[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C11[] = {
  {&(_ZTV8S1627C11[7]),  7,15},
  {&(_tg__ZTV8S1627C13__8S1627C11[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A1__8S1627C11[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C11[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C11[6]),  6,6},
  {&(_ZTV8S1627C11[15]),  15,15},
  {&(_ZTV8S1627C11[15]),  15,15},
  {&(_tg__ZTV8S1627C12__8S1627C11[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
Class_Descriptor cd_S1627C11 = {  "S1627C11", // class name
  bases_S1627C11, 12,
  &(vtc_S1627C11[0]), // expected_vtbl_contents
  &(vtt_S1627C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S1627C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S1627C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C11),10, //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  S1627C4  : virtual S1627C5 , virtual S1627C9 , virtual S1627C10 , S7856C12 , virtual S1627C11 {
  int s1627c4f0;
  virtual  ~S1627C4(); // _ZN7S1627C4D2Ev
  S1627C4(); // tgen
};
//SIG(-1 S1627C4) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S1627C4 ::~S1627C4(){ note_dtor("S1627C4", this);}
S1627C4 ::S1627C4(){ note_ctor("S1627C4", this);} // tgen

static void Test_S1627C4()
{
  extern Class_Descriptor cd_S1627C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1627C4, buf);
    S1627C4 *dp, &lv = *(dp=new (buf) S1627C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1627C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C4)");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C4");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,28), "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C4");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(12,8), "S1627C4");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C4");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), 0, "S1627C4");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), 0, "S1627C4");
    check_base_class_offset(lv, (S1627C9*), 0, "S1627C4");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(24,16), "S1627C4");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C4");
    check_base_class_offset(lv, (S1627C10*), ABISELECT(16,12), "S1627C4");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C4");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,28), "S1627C4");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C4");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(40,24), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C4");
    check_base_class_offset(lv, (S1627C11*), ABISELECT(32,20), "S1627C4");
    check_field_offset(lv, s1627c4f0, ABISELECT(8,4), "S1627C4.s1627c4f0");
    test_class_info(&lv, &cd_S1627C4);
    dp->~S1627C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C4(Test_S1627C4, "S1627C4", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S1627C4C1Ev();
extern void _ZN7S1627C4D2Ev();
Name_Map name_map_S1627C4[] = {
  NSPAIR(_ZN7S1627C4C1Ev),
  NSPAIR(_ZN7S1627C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
static Base_Class bases_S1627C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C4[];
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C4[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern VTBL_ENTRY _ZTV7S1627C4[];
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C4[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C4[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C4[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C4[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTT_ENTRY vtt_S1627C4[] = {
  {&(_ZTV7S1627C4[10]),  10,32},
  {&(_ZTV7S1627C4[32]),  32,32},
  {&(_ZTV7S1627C4[10]),  10,32},
  {&(_ZTV7S1627C4[16]),  16,32},
  {&(_ZTV7S1627C4[24]),  24,32},
  {&(_ZTV7S1627C4[32]),  32,32},
  {&(_tg__ZTV7S1627C5__7S1627C4[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C4[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C4[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C4[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C4[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C4[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C4[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C4 = {  "S1627C4", // class name
  bases_S1627C4, 20,
  &(vtc_S1627C4[0]), // expected_vtbl_contents
  &(vtt_S1627C4[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S1627C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1627C4),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C4),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C3  : S1627C4 , S7856C15 {
  ~S1627C3(); // tgen
  S1627C3(); // tgen
};
//SIG(-1 S1627C3) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC5}


S1627C3 ::~S1627C3(){ note_dtor("S1627C3", this);} // tgen
S1627C3 ::S1627C3(){ note_ctor("S1627C3", this);} // tgen

static void Test_S1627C3()
{
  extern Class_Descriptor cd_S1627C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S1627C3, buf);
    S1627C3 *dp, &lv = *(dp=new (buf) S1627C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S1627C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C3)");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C3");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C3");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,28), "S1627C3");
    /*is_ambiguous_... S1627C3::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(12,8), "S1627C3");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(12,8), "S1627C3");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(24,16), "S1627C3");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(16,12), "S1627C3");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(16,12), "S1627C3");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,28), "S1627C3");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C3");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(40,24), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(32,20), "S1627C3");
    check_base_class_offset(lv, (S1627C4*), 0, "S1627C3");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1627C3");
    test_class_info(&lv, &cd_S1627C3);
    dp->~S1627C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C3(Test_S1627C3, "S1627C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S1627C3C1Ev();
extern void _ZN7S1627C3D1Ev();
Name_Map name_map_S1627C3[] = {
  NSPAIR(_ZN7S1627C3C1Ev),
  NSPAIR(_ZN7S1627C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S1627C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //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
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(16,12), //bcp->offset
    12, //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
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //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
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(32,20), //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
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(32,20), //bcp->offset
    16, //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
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1627C3[];
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn20_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn20_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern VTBL_ENTRY _ZTV7S1627C3[];
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__7S1627C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__7S1627C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C3[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C3[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C3[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C3[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3[] = {
  ABISELECT(-36,-20),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTT_ENTRY vtt_S1627C3[] = {
  {&(_ZTV7S1627C3[10]),  10,32},
  {&(_tg__ZTV7S1627C4__7S1627C3[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__7S1627C3[6]),  6,6},
  {&(_tg__ZTV7S1627C4__7S1627C3[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__7S1627C3[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__7S1627C3[6]),  6,6},
  {&(_ZTV7S1627C3[32]),  32,32},
  {&(_ZTV7S1627C3[10]),  10,32},
  {&(_ZTV7S1627C3[16]),  16,32},
  {&(_ZTV7S1627C3[24]),  24,32},
  {&(_ZTV7S1627C3[32]),  32,32},
  {&(_tg__ZTV7S1627C5__7S1627C3[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C3[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C3[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C3[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C3[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn20_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn20_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn20_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn20_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C3 = {  "S1627C3", // class name
  bases_S1627C3, 22,
  &(vtc_S1627C3[0]), // expected_vtbl_contents
  &(vtt_S1627C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S1627C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1627C3),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C3),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C16  : virtual S1627C11 , virtual S1627C10 , virtual S1627C13 {
  int s1627c16f0[2];
  virtual  ~S1627C16(); // _ZN8S1627C16D2Ev
  S1627C16(); // tgen
};
//SIG(-1 S1627C16) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S1627C16 ::~S1627C16(){ note_dtor("S1627C16", this);}
S1627C16 ::S1627C16(){ note_ctor("S1627C16", this);} // tgen

static void Test_S1627C16()
{
  extern Class_Descriptor cd_S1627C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S1627C16, buf);
    S1627C16 *dp, &lv = *(dp=new (buf) S1627C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S1627C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C16)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C12::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(25,17), "S1627C16");
    /*is_ambiguous_... S1627C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C16");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C5*)(S1627C12*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), 0, "S1627C16");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), 0, "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), 0, "S1627C16");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(24,16), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(16,12), "S1627C16");
    check_base_class_offset(lv, (S1627C11*), ABISELECT(16,12), "S1627C16");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C16");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C16");
    check_base_class_offset(lv, (S1627C10*), ABISELECT(32,20), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(56,32), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(48,28), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(48,28), "S1627C16");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*), ABISELECT(48,28), "S1627C16");
    check_field_offset(lv, s1627c16f0, ABISELECT(8,4), "S1627C16.s1627c16f0");
    test_class_info(&lv, &cd_S1627C16);
    dp->~S1627C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C16(Test_S1627C16, "S1627C16", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S1627C16C1Ev();
extern void _ZN8S1627C16D2Ev();
Name_Map name_map_S1627C16[] = {
  NSPAIR(_ZN8S1627C16C1Ev),
  NSPAIR(_ZN8S1627C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
static Base_Class bases_S1627C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C16[];
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C16[];
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C16[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTT_ENTRY vtt_S1627C16[] = {
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[20]),  20,36},
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[10]),  10,36},
  {&(_ZTV8S1627C16[26]),  26,36},
  {&(_ZTV8S1627C16[34]),  34,36},
  {&(_tg__ZTV8S1627C11__8S1627C16[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C16[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C16[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C16[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C16[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C16[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C16 = {  "S1627C16", // class name
  bases_S1627C16, 22,
  &(vtc_S1627C16[0]), // expected_vtbl_contents
  &(vtt_S1627C16[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S1627C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S1627C16),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C16),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C18  : virtual S1627C13 , S1627C10 , S1627C12 , S7856C12 {
  virtual  ~S1627C18(); // _ZN8S1627C18D2Ev
  S1627C18(); // tgen
};
//SIG(-1 S1627C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S1627C18 ::~S1627C18(){ note_dtor("S1627C18", this);}
S1627C18 ::S1627C18(){ note_ctor("S1627C18", this);} // tgen

static void Test_S1627C18()
{
  extern Class_Descriptor cd_S1627C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1627C18, buf);
    S1627C18 *dp, &lv = *(dp=new (buf) S1627C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1627C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C18)");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(32,16), "S1627C18");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C18");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(33,17), "S1627C18");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(33,17), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(40,20), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(48,24), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(48,24), "S1627C18");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(40,20), "S1627C18");
    check_base_class_offset(lv, (S1627C13*), ABISELECT(24,12), "S1627C18");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), 0, "S1627C18");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(8,4), "S1627C18");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*), 0, "S1627C18");
    check_base_class_offset(lv, (S1627C10*), 0, "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(16,8), "S1627C18");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*), ABISELECT(16,8), "S1627C18");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S1627C18");
    test_class_info(&lv, &cd_S1627C18);
    dp->~S1627C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C18(Test_S1627C18, "S1627C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S1627C18C1Ev();
extern void _ZN8S1627C18D2Ev();
Name_Map name_map_S1627C18[] = {
  NSPAIR(_ZN8S1627C18C1Ev),
  NSPAIR(_ZN8S1627C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S1627C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1627C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1627C10,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C18[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S1627C18D1Ev,_ZThn12_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S1627C18D0Ev,_ZThn12_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern VTBL_ENTRY _ZTV8S1627C18[];
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C12__A__8S1627C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__8S1627C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTT_ENTRY vtt_S1627C18[] = {
  {&(_ZTV8S1627C18[8]),  8,32},
  {&(_tg__ZTV8S1627C10__8S1627C18[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C18[4]),  4,4},
  {&(_tg__ZTV8S1627C12__A__8S1627C18[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C12__A__8S1627C18[4]),  4,4},
  {&(_ZTV8S1627C18[24]),  24,32},
  {&(_ZTV8S1627C18[32]),  32,32},
  {&(_ZTV8S1627C18[32]),  32,32},
  {&(_ZTV8S1627C18[16]),  16,32},
  {&(_tg__ZTV8S1627C13__8S1627C18[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__8S1627C18[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1627C18D0Ev,_ZThn12_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S1627C18D1Ev,_ZThn12_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C18 = {  "S1627C18", // class name
  bases_S1627C18, 19,
  &(vtc_S1627C18[0]), // expected_vtbl_contents
  &(vtt_S1627C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S1627C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C15  : virtual S1627C16 , virtual S7856C9_nt , virtual S1627C4 , S1627C18 {
  virtual  ~S1627C15(); // _ZN8S1627C15D2Ev
  S1627C15(); // tgen
};
//SIG(-1 S1627C15) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S1627C15 ::~S1627C15(){ note_dtor("S1627C15", this);}
S1627C15 ::S1627C15(){ note_ctor("S1627C15", this);} // tgen

static void Test_S1627C15()
{
  extern Class_Descriptor cd_S1627C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S1627C15, buf);
    S1627C15 *dp, &lv = *(dp=new (buf) S1627C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S1627C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C15)");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C15");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C15");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(57,33), "S1627C15");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*), ABISELECT(57,33), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(32,16), "S1627C15");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C15");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(72,40), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(64,36), "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(64,36), "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(64,36), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(88,48), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(80,44), "S1627C15");
    /*is_ambiguous_... S1627C15::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(80,44), "S1627C15");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(80,44), "S1627C15");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*), ABISELECT(80,44), "S1627C15");
    check_base_class_offset(lv, (S1627C16*), ABISELECT(32,16), "S1627C15");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), ABISELECT(96,52), "S1627C15");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(96,52), "S1627C15");
    check_base_class_offset(lv, (S1627C4*), ABISELECT(96,52), "S1627C15");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*), ABISELECT(8,4), "S1627C15");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C15");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*), 0, "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C15");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C15");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*), ABISELECT(24,12), "S1627C15");
    check_base_class_offset(lv, (S1627C18*), 0, "S1627C15");
    test_class_info(&lv, &cd_S1627C15);
    dp->~S1627C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C15(Test_S1627C15, "S1627C15", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S1627C15C1Ev();
extern void _ZN8S1627C15D2Ev();
Name_Map name_map_S1627C15[] = {
  NSPAIR(_ZN8S1627C15C1Ev),
  NSPAIR(_ZN8S1627C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
static Base_Class bases_S1627C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1627C13,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1627C9,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C10,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1627C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C15[];
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C15D1Ev,_ZThn16_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C15D0Ev,_ZThn16_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C15D1Ev,_ZThn28_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C15D0Ev,_ZThn28_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C15D1Ev,_ZThn44_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C15D0Ev,_ZThn44_N8S1627C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C15D1Ev,_ZThn52_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C15D0Ev,_ZThn52_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C15[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C15[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C18__8S1627C15[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C18__A1__8S1627C15[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C18__A4__8S1627C15[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C15[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C18D1Ev,_ZThn44_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C18D0Ev,_ZThn44_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18__8S1627C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18__8S1627C15[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__8S1627C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__8S1627C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C15[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C15[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__8S1627C15[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__8S1627C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__8S1627C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C15[] = {
  {&(_ZTV8S1627C15[14]),  14,72},
  {&(_tg__ZTV8S1627C18__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C18__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C18__A4__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C18__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C18__8S1627C15[6]),  6,6},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[43]),  43,72},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[33]),  33,72},
  {&(_ZTV8S1627C15[49]),  49,72},
  {&(_ZTV8S1627C15[57]),  57,72},
  {&(_ZTV8S1627C15[70]),  70,72},
  {&(_ZTV8S1627C15[70]),  70,72},
  {&(_ZTV8S1627C15[22]),  22,72},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C16__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C11__8S1627C15[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C15[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C15[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C15[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__8S1627C15[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__8S1627C15[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C15[6]),  6,6},
  {&(_tg__ZTV7S1627C9__8S1627C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C18D0Ev,_ZThn44_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C18D1Ev,_ZThn44_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C15D0Ev,_ZThn44_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C15D0Ev,_ZThn28_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C15D1Ev,_ZThn44_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C15D1Ev,_ZThn28_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C15D0Ev,_ZThn52_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C15D0Ev,_ZThn16_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C15D1Ev,_ZThn52_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C15D1Ev,_ZThn16_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C15 = {  "S1627C15", // class name
  bases_S1627C15, 36,
  &(vtc_S1627C15[0]), // expected_vtbl_contents
  &(vtt_S1627C15[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S1627C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C15),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C15),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C19  : S7856C15 , S1627C9 {
  virtual  ~S1627C19(); // _ZN8S1627C19D2Ev
  S1627C19(); // tgen
};
//SIG(-1 S1627C19) C1{ BC2{ m} BC3{ VBC2} vd}


 S1627C19 ::~S1627C19(){ note_dtor("S1627C19", this);}
S1627C19 ::S1627C19(){ note_ctor("S1627C19", this);} // tgen

static void Test_S1627C19()
{
  extern Class_Descriptor cd_S1627C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C19, buf);
    S1627C19 *dp, &lv = *(dp=new (buf) S1627C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C19)");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S1627C19");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(8,4), "S1627C19");
    check_base_class_offset(lv, (S1627C9*), 0, "S1627C19");
    test_class_info(&lv, &cd_S1627C19);
    dp->~S1627C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C19(Test_S1627C19, "S1627C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C19C1Ev();
extern void _ZN8S1627C19D2Ev();
Name_Map name_map_S1627C19[] = {
  NSPAIR(_ZN8S1627C19C1Ev),
  NSPAIR(_ZN8S1627C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
static Base_Class bases_S1627C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C19[];
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY vtc_S1627C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
extern VTBL_ENTRY _ZTV8S1627C19[];
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C19[] = {
  {&(_ZTV8S1627C19[3]),  3,5},
  {&(_tg__ZTV7S1627C9__8S1627C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
Class_Descriptor cd_S1627C19 = {  "S1627C19", // class name
  bases_S1627C19, 3,
  &(vtc_S1627C19[0]), // expected_vtbl_contents
  &(vtt_S1627C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C19),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C19),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  S1627C14  : S1627C9 , virtual S7856C12 , S1627C15 , S1627C19 {
  virtual  ~S1627C14(); // _ZN8S1627C14D2Ev
  S1627C14(); // tgen
};
//SIG(-1 S1627C14) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


 S1627C14 ::~S1627C14(){ note_dtor("S1627C14", this);}
S1627C14 ::S1627C14(){ note_ctor("S1627C14", this);} // tgen

static void Test_S1627C14()
{
  extern Class_Descriptor cd_S1627C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S1627C14, buf);
    S1627C14 *dp, &lv = *(dp=new (buf) S1627C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S1627C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C14)");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C14");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(48,24), "S1627C14");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(72,40), "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(64,36), "S1627C14");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(64,36), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(88,48), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(80,44), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(80,44), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(80,44), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(104,56), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(96,52), "S1627C14");
    /*is_ambiguous_... S1627C14::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(96,52), "S1627C14");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(96,52), "S1627C14");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(96,52), "S1627C14");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(48,24), "S1627C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C14");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*), ABISELECT(112,60), "S1627C14");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(112,60), "S1627C14");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(112,60), "S1627C14");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(16,8), "S1627C14");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(24,12), "S1627C14");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(24,12), "S1627C14");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(32,16), "S1627C14");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(8,4), "S1627C14");
    check_base_class_offset(lv, (S1627C15*), ABISELECT(8,4), "S1627C14");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*), ABISELECT(40,20), "S1627C14");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*), ABISELECT(40,20), "S1627C14");
    check_base_class_offset(lv, (S1627C19*), ABISELECT(40,20), "S1627C14");
    test_class_info(&lv, &cd_S1627C14);
    dp->~S1627C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C14(Test_S1627C14, "S1627C14", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S1627C14C1Ev();
extern void _ZN8S1627C14D2Ev();
Name_Map name_map_S1627C14[] = {
  NSPAIR(_ZN8S1627C14C1Ev),
  NSPAIR(_ZN8S1627C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
static Base_Class bases_S1627C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1627C9,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S1627C9,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    34, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    40, //immediately_derived
  0, 0},
  {&cd_S1627C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C14[];
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C14D1Ev,_ZThn52_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C14D0Ev,_ZThn52_N8S1627C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S1627C14D1Ev,_ZThn60_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S1627C14D0Ev,_ZThn60_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C14[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C14[];
static  VTBL_ENTRY _tg__ZTV7S1627C9__A__8S1627C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A4__8S1627C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A1__8S1627C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S1627C18D1Ev,_ZThn48_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S1627C18D0Ev,_ZThn48_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__8S1627C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__8S1627C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn88_N8S1627C15D1Ev,_ZThn48_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn88_N8S1627C15D0Ev,_ZThn48_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__8S1627C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn104_N8S1627C15D1Ev,_ZThn56_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn104_N8S1627C15D0Ev,_ZThn56_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__8S1627C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__8S1627C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C19__A2__8S1627C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__8S1627C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__8S1627C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C14[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A2__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__8S1627C14[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__8S1627C14[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__8S1627C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__8S1627C14[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTT_ENTRY vtt_S1627C14[] = {
  {&(_ZTV8S1627C14[14]),  14,93},
  {&(_tg__ZTV7S1627C9__A__8S1627C14[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A4__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__8S1627C14[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV7S1627C4__8S1627C15__8S1627C14[11]),  11,13},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C19__A2__8S1627C14[3]),  3,3},
  {&(_ZTV8S1627C14[30]),  30,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[64]),  64,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[54]),  54,93},
  {&(_ZTV8S1627C14[70]),  70,93},
  {&(_ZTV8S1627C14[78]),  78,93},
  {&(_ZTV8S1627C14[91]),  91,93},
  {&(_ZTV8S1627C14[91]),  91,93},
  {&(_ZTV8S1627C14[38]),  38,93},
  {&(_ZTV8S1627C14[41]),  41,93},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C16__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C11__8S1627C14[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__8S1627C14[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A1__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C10__8S1627C14[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A2__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C4__8S1627C14[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C4__8S1627C14[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__8S1627C14[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__8S1627C14[6]),  6,6},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D0Ev,_ZThn28_N8S1627C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C16D1Ev,_ZThn28_N8S1627C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C15D0Ev,_ZThn48_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C15D1Ev,_ZThn48_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1627C15D0Ev,_ZThn56_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S1627C15D1Ev,_ZThn56_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C18D0Ev,_ZThn48_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S1627C18D1Ev,_ZThn48_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C14D0Ev,_ZThn52_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C14D1Ev,_ZThn52_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1627C14D0Ev,_ZThn60_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S1627C14D1Ev,_ZThn60_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C14 = {  "S1627C14", // class name
  bases_S1627C14, 41,
  &(vtc_S1627C14[0]), // expected_vtbl_contents
  &(vtt_S1627C14[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S1627C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S1627C14),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C14),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C21  : virtual S7856C12 , virtual S7856C9_nt {
  char s1627c21f0;
  ~S1627C21(); // tgen
  S1627C21(); // tgen
};
//SIG(-1 S1627C21) C1{ VBC2{ m} VBC3{ m} Fc}


S1627C21 ::~S1627C21(){ note_dtor("S1627C21", this);} // tgen
S1627C21 ::S1627C21(){ note_ctor("S1627C21", this);} // tgen

static void Test_S1627C21()
{
  extern Class_Descriptor cd_S1627C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1627C21, buf);
    S1627C21 *dp, &lv = *(dp=new (buf) S1627C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1627C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C21)");
    check_base_class_offset(lv, (S7856C12*), 0, "S1627C21");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S1627C21");
    check_field_offset(lv, s1627c21f0, ABISELECT(8,4), "S1627C21.s1627c21f0");
    test_class_info(&lv, &cd_S1627C21);
    dp->~S1627C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C21(Test_S1627C21, "S1627C21", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S1627C21C1Ev();
extern void _ZN8S1627C21D1Ev();
Name_Map name_map_S1627C21[] = {
  NSPAIR(_ZN8S1627C21C1Ev),
  NSPAIR(_ZN8S1627C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S1627C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S1627C21[];
static  VTBL_ENTRY vtc_S1627C21[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
extern VTBL_ENTRY _ZTV8S1627C21[];
static  VTT_ENTRY vtt_S1627C21[] = {
  {&(_ZTV8S1627C21[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
Class_Descriptor cd_S1627C21 = {  "S1627C21", // class name
  bases_S1627C21, 2,
  &(vtc_S1627C21[0]), // expected_vtbl_contents
  &(vtt_S1627C21[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S1627C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C21),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C21),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  S1627C2  : S1627C3 , virtual S1627C14 , S77C13_nt , virtual S1627C15 , S1627C21 {
  short s1627c2f0;
  virtual  ~S1627C2(); // _ZN7S1627C2D2Ev
  S1627C2(); // tgen
};
//SIG(-1 S1627C2) C1{ BC2{ BC3{ VBC4{ VBC5{ m} BC6{ m} VBC7{ m}} VBC8{ VBC6} VBC9{ BC7 BC6 BC4 Fi} BC7 VBC10{ VBC5 VBC6 VBC11{ BC5 VBC4 VBC6} BC7 BC12{ BC6 VBC5 VBC7 BC4 VBC11 vd} vd} vd Fi} BC6} VBC13{ BC8 VBC7 BC14{ VBC15{ VBC10 VBC9 VBC12 vd Fi[2]} VBC16{ m} VBC3 BC17{ VBC12 BC9 BC11 BC7 vd} vd} BC18{ BC6 BC8 vd} vd} BC19{ m} VBC14 BC20{ VBC7 VBC16 Fc} vd Fs}


 S1627C2 ::~S1627C2(){ note_dtor("S1627C2", this);}
S1627C2 ::S1627C2(){ note_ctor("S1627C2", this);} // tgen

static void Test_S1627C2()
{
  extern Class_Descriptor cd_S1627C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,27)];
    init_test(&cd_S1627C2, buf);
    S1627C2 *dp, &lv = *(dp=new (buf) S1627C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S1627C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C2)");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C2");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C12*)(S1627C21*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(28,16), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C2");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(32,20), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(32,20), "S1627C2");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C2");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), 0, "S1627C2");
    check_base_class_offset(lv, (S1627C3*), 0, "S1627C2");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C14*), ABISELECT(64,36), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(136,76), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(128,72), "S1627C2");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(128,72), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(128,72), "S1627C2");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(112,60), "S1627C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*)(S1627C14*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C21*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(144,80), "S1627C2");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*)(S1627C14*), ABISELECT(144,80), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(144,80), "S1627C2");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(80,44), "S1627C2");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C2");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C2");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(96,52), "S1627C2");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    check_base_class_offset(lv, (S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C2");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C2");
    check_base_class_offset(lv, (S1627C14*), ABISELECT(64,36), "S1627C2");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(168,92), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(184,100), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C2");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C15*), ABISELECT(160,88), "S1627C2");
    check_base_class_offset(lv, (S1627C21*), ABISELECT(16,8), "S1627C2");
    check_field_offset(lv, s1627c2f0, ABISELECT(26,14), "S1627C2.s1627c2f0");
    test_class_info(&lv, &cd_S1627C2);
    dp->~S1627C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C2(Test_S1627C2, "S1627C2", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN7S1627C2C1Ev();
extern void _ZN7S1627C2D2Ev();
Name_Map name_map_S1627C2[] = {
  NSPAIR(_ZN7S1627C2C1Ev),
  NSPAIR(_ZN7S1627C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
extern Class_Descriptor cd_S1627C14;
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S1627C21;
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
static Base_Class bases_S1627C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    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
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C3,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1627C9,    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
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(128,72), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(144,80), //bcp->offset
    103, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    38, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(88,48), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    40, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(72,40), //bcp->offset
    53, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C9,    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
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(104,56), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1627C14,    ABISELECT(64,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    53, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(176,96), //bcp->offset
    133, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(160,88), //bcp->offset
    116, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1627C21,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C2[];
extern void _ZN7S1627C2D1Ev();
extern void _ZN7S1627C2D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C2[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&_ZN7S1627C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern VTBL_ENTRY _ZTV7S1627C2[];
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__7S1627C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__7S1627C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C21__7S1627C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C2[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C14__A1__7S1627C2[] = {
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C2[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C2[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14__7S1627C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14__7S1627C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14__7S1627C2[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14__7S1627C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14__7S1627C2[] = {
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C2[] = {
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__7S1627C2[] = {
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__7S1627C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C2[] = {
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__7S1627C2[] = {
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__A1__7S1627C2[] = {
  ABISELECT(96,52),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C2[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C2[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(112,60),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__A1__7S1627C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(28,16),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C2[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTT_ENTRY vtt_S1627C2[] = {
  {&(_ZTV7S1627C2[16]),  16,139},
  {&(_tg__ZTV7S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C3__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C21__7S1627C2[4]),  4,4},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[16]),  16,139},
  {&(_ZTV7S1627C2[26]),  26,139},
  {&(_ZTV7S1627C2[34]),  34,139},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[51]),  51,139},
  {&(_ZTV7S1627C2[67]),  67,139},
  {&(_ZTV7S1627C2[91]),  91,139},
  {&(_ZTV7S1627C2[101]),  101,139},
  {&(_ZTV7S1627C2[114]),  114,139},
  {&(_ZTV7S1627C2[75]),  75,139},
  {&(_ZTV7S1627C2[78]),  78,139},
  {&(_ZTV7S1627C2[131]),  131,139},
  {&(_ZTV7S1627C2[139]),  139,139},
  {&(_ZTV7S1627C2[22]),  22,139},
  {&(_tg__ZTV7S1627C5__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C2[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C2[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV7S1627C98S1627C14__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C2[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C14__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C14__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14__7S1627C2[3]),  3,5},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C16__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C13__A1__7S1627C2[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C4__A1__7S1627C2[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C4__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C15__A1__7S1627C2[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C2[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__A1__7S1627C2[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C2[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__A1__7S1627C2[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C15__A1__7S1627C2[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C2[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C2[];
extern  VTBL_ENTRY _ZTV7S1627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C2[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C2 = {  "S1627C2", // class name
  bases_S1627C2, 58,
  &(vtc_S1627C2[0]), // expected_vtbl_contents
  &(vtt_S1627C2[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI7S1627C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1627C2),139, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C2),111, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C22  : S1627C18 , virtual S1627C3 {
  ~S1627C22(); // tgen
  S1627C22(); // tgen
};
//SIG(-1 S1627C22) C1{ BC2{ VBC3{ BC4{ m} VBC5{ m} VBC6{ m} BC7{ VBC5 BC4 VBC6} VBC8{ BC5 VBC7 VBC4} vd} BC9{ BC6 BC4 BC7 Fi} BC8 BC6 vd} VBC10{ BC11{ VBC7 VBC12{ VBC4} VBC9 BC6 VBC13{ VBC5 VBC4 VBC8 BC6 BC3 vd} vd Fi} BC4}}


S1627C22 ::~S1627C22(){ note_dtor("S1627C22", this);} // tgen
S1627C22 ::S1627C22(){ note_ctor("S1627C22", this);} // tgen

static void Test_S1627C22()
{
  extern Class_Descriptor cd_S1627C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S1627C22, buf);
    S1627C22 *dp, &lv = *(dp=new (buf) S1627C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S1627C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C22)");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(40,20), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C22");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(41,21), "S1627C22");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(41,21), "S1627C22");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(41,21), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(48,24), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*), ABISELECT(56,28), "S1627C22");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(56,28), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(48,24), "S1627C22");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*), ABISELECT(32,16), "S1627C22");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*), ABISELECT(8,4), "S1627C22");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*), 0, "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C22");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*), ABISELECT(16,8), "S1627C22");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*), ABISELECT(24,12), "S1627C22");
    check_base_class_offset(lv, (S1627C18*), 0, "S1627C22");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(88,44), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C22::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(80,40), "S1627C22");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(80,40), "S1627C22");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(104,52), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(96,48), "S1627C22");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), ABISELECT(64,32), "S1627C22");
    check_base_class_offset(lv, (S1627C3*), ABISELECT(64,32), "S1627C22");
    test_class_info(&lv, &cd_S1627C22);
    dp->~S1627C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C22(Test_S1627C22, "S1627C22", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S1627C22C1Ev();
extern void _ZN8S1627C22D1Ev();
Name_Map name_map_S1627C22[] = {
  NSPAIR(_ZN8S1627C22C1Ev),
  NSPAIR(_ZN8S1627C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
static Base_Class bases_S1627C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    ABISELECT(41,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    4, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S1627C12,    ABISELECT(48,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S1627C13,    ABISELECT(32,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S1627C10,    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
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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_S1627C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1627C9,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(80,40), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(96,48), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S1627C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S1627C3,    ABISELECT(64,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S1627C22[];
extern void _ZN8S1627C22D1Ev();
extern void _ZN8S1627C22D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C22D1Ev,_ZThn32_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C22D0Ev,_ZThn32_N8S1627C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S1627C22D1Ev,_ZThn48_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S1627C22D0Ev,_ZThn48_N8S1627C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C22[] = {
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&_ZN8S1627C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C22D0Ev,
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev),
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  ABISELECT(-96,-48),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
extern VTBL_ENTRY _ZTV8S1627C22[];
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C18__8S1627C22[] = {
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C18__8S1627C22[] = {
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C18__A2__8S1627C22[] = {
  ABISELECT(41,21),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C22[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C22[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C18D1Ev,_ZThn16_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C18D0Ev,_ZThn16_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C18__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C18__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C18__8S1627C22[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C22[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__8S1627C22[] = {
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__A1__8S1627C22[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__8S1627C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  ABISELECT(-23,-11),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn16_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn16_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn16_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn16_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__8S1627C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C22[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__A1__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A3__8S1627C22[] = {
  ABISELECT(-39,-19),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__A1__8S1627C22[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A4__8S1627C22[] = {
  ABISELECT(-55,-27),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__8S1627C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-48,-24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTT_ENTRY vtt_S1627C22[] = {
  {&(_ZTV8S1627C22[12]),  12,63},
  {&(_tg__ZTV8S1627C18__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C18__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C18__A2__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C18__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C18__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C18__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C18__8S1627C22[6]),  6,6},
  {&(_ZTV8S1627C22[28]),  28,63},
  {&(_ZTV8S1627C22[36]),  36,63},
  {&(_ZTV8S1627C22[36]),  36,63},
  {&(_ZTV8S1627C22[20]),  20,63},
  {&(_ZTV8S1627C22[47]),  47,63},
  {&(_ZTV8S1627C22[47]),  47,63},
  {&(_ZTV8S1627C22[53]),  53,63},
  {&(_ZTV8S1627C22[61]),  61,63},
  {&(_tg__ZTV8S1627C13__8S1627C22[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C5__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C3__8S1627C22[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__8S1627C22[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__8S1627C22[6]),  6,6},
  {&(_tg__ZTV7S1627C9__8S1627C22[3]),  3,3},
  {&(_tg__ZTV8S1627C10__A1__8S1627C22[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A3__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C11__8S1627C22[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__A1__8S1627C22[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A4__8S1627C22[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__A1__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C22[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__8S1627C22[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S1627C22[];
extern  VTBL_ENTRY _ZTV8S1627C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C22[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D0Ev,_ZThn16_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C3D1Ev,_ZThn16_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D0Ev,_ZThn16_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1627C4D1Ev,_ZThn16_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C18D0Ev,_ZThn16_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C18D1Ev,_ZThn16_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C22D0Ev,_ZThn32_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C22D1Ev,_ZThn32_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C22D0Ev,_ZThn48_N8S1627C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S1627C22D1Ev,_ZThn48_N8S1627C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C22 = {  "S1627C22", // class name
  bases_S1627C22, 36,
  &(vtc_S1627C22[0]), // expected_vtbl_contents
  &(vtt_S1627C22[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S1627C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S1627C22),63, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S1627C22),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1627C1  : S1627C2 , virtual S1627C22 {
  ~S1627C1(); // tgen
  S1627C1(); // tgen
};
//SIG(1 S1627C1) C1{ BC2{ BC3{ BC4{ VBC5{ VBC6{ m} BC7{ m} VBC8{ m}} VBC9{ VBC7} VBC10{ BC8 BC7 BC5 Fi} BC8 VBC11{ VBC6 VBC7 VBC12{ BC6 VBC5 VBC7} BC8 BC13{ BC7 VBC6 VBC8 BC5 VBC12 vd} vd} vd Fi} BC7} VBC14{ BC9 VBC8 BC15{ VBC16{ VBC11 VBC10 VBC13 vd Fi[2]} VBC17{ m} VBC4 BC18{ VBC13 BC10 BC12 BC8 vd} vd} BC19{ BC7 BC9 vd} vd} BC20{ m} VBC15 BC21{ VBC8 VBC17 Fc} vd Fs} VBC22{ BC18 VBC3}}


S1627C1 ::~S1627C1(){ note_dtor("S1627C1", this);} // tgen
S1627C1 ::S1627C1(){ note_ctor("S1627C1", this);} // tgen

static void Test_S1627C1()
{
  extern Class_Descriptor cd_S1627C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,33)];
    init_test(&cd_S1627C1, buf);
    S1627C1 *dp, &lv = *(dp=new (buf) S1627C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S1627C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1627C1)");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*), 0, "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C13::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*)(S1627C11*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C13*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C13*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C24*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C14::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C13*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C13*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C21*)(S1627C2*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C12*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C4::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C4*)(S1627C3*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C11*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(28,16), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(28,16), "S1627C1");
    check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C4*)(S1627C3*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*), ABISELECT(40,24), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C10 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*), ABISELECT(32,20), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(32,20), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C16*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C4*)(S1627C3*), ABISELECT(32,20), "S1627C1");
    /*is_ambiguous_... S1627C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S1627C12*)(S1627C11*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S1627C12*)(S1627C13*)(S1627C11*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C13*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C13::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*)(S1627C11*), ABISELECT(56,32), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C13::S1627C5 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C11*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*)(S1627C2*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C11*)(S1627C16*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*), ABISELECT(48,28), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C11*)(S1627C4*)(S1627C3*), ABISELECT(48,28), "S1627C1");
    check_base_class_offset(lv, (S1627C4*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*)(S1627C2*), 0, "S1627C1");
    check_base_class_offset(lv, (S1627C3*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C14::S1627C9 */ AMB_check_base_class_offset(lv, (S1627C9*)(S1627C14*), ABISELECT(64,36), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C13*), ABISELECT(136,76), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C13*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C16::S1627C13 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C16*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(128,72), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C15*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C13*)(S1627C18*)(S1627C22*), ABISELECT(128,72), "S1627C1");
    check_base_class_offset(lv, (S1627C16*)(S1627C15*)(S1627C14*), ABISELECT(112,60), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C16*)(S1627C15*), ABISELECT(112,60), "S1627C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*)(S1627C14*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C9_nt*)(S1627C15*), 0, "S1627C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S1627C21*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C4 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*), ABISELECT(144,80), "S1627C1");
    check_base_class_offset(lv, (S1627C4*)(S1627C15*)(S1627C14*), ABISELECT(144,80), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C15*), ABISELECT(144,80), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(80,44), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(88,48), "S1627C1");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(96,52), "S1627C1");
    check_base_class_offset(lv, (S1627C18*)(S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    check_base_class_offset(lv, (S1627C15*)(S1627C14*), ABISELECT(72,40), "S1627C1");
    /*is_ambiguous_... S1627C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C9*)(S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C19*)(S1627C14*), ABISELECT(104,56), "S1627C1");
    check_base_class_offset(lv, (S1627C14*)(S1627C2*), ABISELECT(64,36), "S1627C1");
    check_base_class_offset(lv, (S77C13_nt*)(S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(168,92), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C15*), ABISELECT(176,96), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C15*), ABISELECT(184,100), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C18*)(S1627C15*), ABISELECT(160,88), "S1627C1");
    /*is_ambiguous_... S1627C2::S1627C15 */ AMB_check_base_class_offset(lv, (S1627C15*)(S1627C2*), ABISELECT(160,88), "S1627C1");
    check_base_class_offset(lv, (S1627C21*)(S1627C2*), ABISELECT(16,8), "S1627C1");
    check_base_class_offset(lv, (S1627C2*), 0, "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(200,108), "S1627C1");
    check_base_class_offset(lv, (S7856C15*)(S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    check_base_class_offset(lv, (S1627C5*)(S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    check_base_class_offset(lv, (S1627C10*)(S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(208,112), "S1627C1");
    /*is_ambiguous_... S1627C18::S1627C12 */ AMB_check_base_class_offset(lv, (S1627C12*)(S1627C18*)(S1627C22*), ABISELECT(208,112), "S1627C1");
    /*is_ambiguous_... S1627C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C18*)(S1627C22*), ABISELECT(216,116), "S1627C1");
    check_base_class_offset(lv, (S1627C18*)(S1627C22*), ABISELECT(192,104), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S1627C4*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S1627C4*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    /*is_ambiguous_... S1627C1::S1627C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S1627C3*), ABISELECT(224,120), "S1627C1");
    check_base_class_offset(lv, (S1627C3*)(S1627C22*), ABISELECT(224,120), "S1627C1");
    check_base_class_offset(lv, (S1627C22*), ABISELECT(192,104), "S1627C1");
    test_class_info(&lv, &cd_S1627C1);
    dp->~S1627C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1627C1(Test_S1627C1, "S1627C1", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S1627C1C1Ev();
extern void _ZN7S1627C1D1Ev();
Name_Map name_map_S1627C1[] = {
  NSPAIR(_ZN7S1627C1C1Ev),
  NSPAIR(_ZN7S1627C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C11;
extern VTBL_ENTRY _ZTI8S1627C11[];
extern  VTBL_ENTRY _ZTV8S1627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C11[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C13;
extern VTBL_ENTRY _ZTI8S1627C13[];
extern  VTBL_ENTRY _ZTV8S1627C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C13[];
extern Class_Descriptor cd_S1627C16;
extern VTBL_ENTRY _ZTI8S1627C16[];
extern  VTBL_ENTRY _ZTV8S1627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C16[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C9;
extern VTBL_ENTRY _ZTI7S1627C9[];
extern  VTBL_ENTRY _ZTV7S1627C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C9[];
extern Class_Descriptor cd_S1627C19;
extern VTBL_ENTRY _ZTI8S1627C19[];
extern  VTBL_ENTRY _ZTV8S1627C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C19[];
extern Class_Descriptor cd_S1627C14;
extern VTBL_ENTRY _ZTI8S1627C14[];
extern  VTBL_ENTRY _ZTV8S1627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S1627C15;
extern VTBL_ENTRY _ZTI8S1627C15[];
extern  VTBL_ENTRY _ZTV8S1627C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C15[];
extern Class_Descriptor cd_S1627C21;
extern VTBL_ENTRY _ZTI8S1627C21[];
extern  VTBL_ENTRY _ZTV8S1627C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C21[];
extern Class_Descriptor cd_S1627C2;
extern VTBL_ENTRY _ZTI7S1627C2[];
extern  VTBL_ENTRY _ZTV7S1627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C2[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C5;
extern VTBL_ENTRY _ZTI7S1627C5[];
extern  VTBL_ENTRY _ZTV7S1627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C5[];
extern Class_Descriptor cd_S1627C10;
extern VTBL_ENTRY _ZTI8S1627C10[];
extern  VTBL_ENTRY _ZTV8S1627C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S1627C12;
extern VTBL_ENTRY _ZTI8S1627C12[];
extern  VTBL_ENTRY _ZTV8S1627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C18;
extern VTBL_ENTRY _ZTI8S1627C18[];
extern  VTBL_ENTRY _ZTV8S1627C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S1627C4;
extern VTBL_ENTRY _ZTI7S1627C4[];
extern  VTBL_ENTRY _ZTV7S1627C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C4[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S1627C3;
extern VTBL_ENTRY _ZTI7S1627C3[];
extern  VTBL_ENTRY _ZTV7S1627C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C3[];
extern Class_Descriptor cd_S1627C22;
extern VTBL_ENTRY _ZTI8S1627C22[];
extern  VTBL_ENTRY _ZTV8S1627C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S1627C22[];
static Base_Class bases_S1627C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    3, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1627C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1627C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S1627C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1627C13,    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
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S1627C11,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1627C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1627C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1627C9,    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
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S1627C13,    ABISELECT(128,72), //bcp->offset
    95, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S1627C16,    ABISELECT(112,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(144,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    35, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    38, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(88,48), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    40, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C9,    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
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S1627C19,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S1627C14,    ABISELECT(64,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    53, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(176,96), //bcp->offset
    135, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S1627C15,    ABISELECT(160,88), //bcp->offset
    118, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S1627C21,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S1627C2,    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
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    63, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(200,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
    63, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    62, //immediately_derived
  0, 0},
  {&cd_S1627C5,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S1627C10,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(208,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
    65, //immediately_derived
  0, 0},
  {&cd_S1627C12,    ABISELECT(208,112), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    67, //immediately_derived
  0, 0},
  {&cd_S1627C18,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    69, //immediately_derived
  0, 0},
  {&cd_S1627C4,    ABISELECT(224,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    71, //immediately_derived
  0, 0},
  {&cd_S1627C3,    ABISELECT(224,120), //bcp->offset
    162, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    72, //immediately_derived
  0, 1},
  {&cd_S1627C22,    ABISELECT(192,104), //bcp->offset
    141, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1627C1[];
extern void _ZN7S1627C1D1Ev();
extern void _ZN7S1627C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C1D1Ev,_ZThn28_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C1D0Ev,_ZThn28_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C1D1Ev,_ZThn36_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C1D0Ev,_ZThn36_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n120_N7S1627C1D1Ev,_ZTvn4_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C1D0Ev,_ZTvn4_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C1D1Ev,_ZTvn20_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C1D0Ev,_ZTvn20_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C1D1Ev,_ZThn60_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C1D0Ev,_ZThn60_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C1D1Ev,_ZThn72_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C1D0Ev,_ZThn72_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C1D1Ev,_ZThn80_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C1D0Ev,_ZThn80_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C1D1Ev,_ZThn88_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C1D0Ev,_ZThn88_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S1627C1D1Ev,_ZThn104_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S1627C1D0Ev,_ZThn104_N7S1627C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S1627C1D1Ev,_ZThn120_N7S1627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S1627C1D0Ev,_ZThn120_N7S1627C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S1627C1[] = {
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&_ZN7S1627C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C1D1Ev,_ZTvn4_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C1D0Ev,_ZTvn4_n60_N7S1627C1D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C1D1Ev,_ZTvn20_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C1D0Ev,_ZTvn20_n60_N7S1627C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev),
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-192,-104),
  ABISELECT(-144,-76),
  ABISELECT(-160,-84),
  ABISELECT(-192,-104),
  ABISELECT(32,16),
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev),
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S1627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S1627C1[];
extern void _ZN7S1627C2D1Ev();
extern void _ZN7S1627C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C2__7S1627C1[] = {
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(128,72),
  ABISELECT(112,60),
  ABISELECT(64,36),
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&_ZN7S1627C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C2D0Ev,
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(28,16),
  0,
  ABISELECT(112,60),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C37S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C37S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C217S1627C2__7S1627C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C2__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C2__7S1627C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D1Ev,_ZTvn4_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n120_N7S1627C2D0Ev,_ZTvn4_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C2__7S1627C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D1Ev,_ZTvn20_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n120_N7S1627C2D0Ev,_ZTvn20_n60_N7S1627C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C2__7S1627C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C21__7S1627C2__7S1627C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1627C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C10__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
extern void _ZN8S1627C11D1Ev();
extern void _ZN8S1627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
  (VTBL_ENTRY)&_ZN8S1627C11D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C11D0Ev,
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C138S1627C11__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C11__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void _ZN8S1627C14D1Ev();
extern void _ZN8S1627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C14__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(80,44),
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(-32,-16),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(-36,-20),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&_ZN8S1627C14D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C14__A1__7S1627C1[] = {
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C1[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(24,12),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
extern void ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C19D1Ev();
extern void _ZN8S1627C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C198S1627C14__7S1627C1[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C19[0]),
  (VTBL_ENTRY)&_ZN8S1627C19D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C1[] = {
  ABISELECT(-76,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C9[0]),
};
extern void ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C15__8S1627C14__7S1627C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(72,40),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(40,20),
  ABISELECT(-44,-24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(56,32),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D1Ev,_ZThn4_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S1627C14D0Ev,_ZThn4_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C14__7S1627C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C14__7S1627C1[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C14__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C14__7S1627C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C1[] = {
  ABISELECT(-60,-32),
  ABISELECT(24,12),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
};
extern void ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev)();
extern void ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C19__8S1627C14__7S1627C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S1627C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D1Ev,_ZThn20_N8S1627C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S1627C14D0Ev,_ZThn20_N8S1627C14D0Ev),
};
extern void _ZN8S1627C16D1Ev();
extern void _ZN8S1627C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C16__7S1627C1[] = {
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&_ZN8S1627C16D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C16D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C16__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C16__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C16__7S1627C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S1627C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev),
};
extern void _ZN8S1627C13D1Ev();
extern void _ZN8S1627C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__7S1627C1[] = {
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
  (VTBL_ENTRY)&_ZN8S1627C13D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C13__A3__7S1627C1[] = {
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S1627C13[0]),
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C4__A1__7S1627C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C4__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C4__A1__7S1627C1[] = {
  ABISELECT(96,52),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
extern void _ZN8S1627C15D1Ev();
extern void _ZN8S1627C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C15__A1__7S1627C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(-160,-88),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(-48,-28),
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&_ZN8S1627C15D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C15D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C1[] = {
  ABISELECT(-132,-72),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(48,28),
  ABISELECT(16,12),
  ABISELECT(-80,-40),
  0,
  ABISELECT(-64,-32),
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(112,60),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__8S1627C15__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(32,16),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S1627C4__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(-144,-80),
  ABISELECT(-116,-64),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-116,-64),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C1[] = {
  ABISELECT(-148,-80),
  ABISELECT(-64,-36),
  ABISELECT(-148,-80),
  ABISELECT(-176,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C15[0]),
};
extern void _ZN8S1627C22D1Ev();
extern void _ZN8S1627C22D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C22__7S1627C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-160,-84),
  ABISELECT(-192,-104),
  ABISELECT(32,16),
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&_ZN8S1627C22D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C22D0Ev,
};
extern void _ZN8S1627C18D1Ev();
extern void _ZN8S1627C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&_ZN8S1627C18D1Ev,
  (VTBL_ENTRY)&_ZN8S1627C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C108S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C58S1627C108S1627C188S1627C22__A6__7S1627C1[] = {
  ABISELECT(-164,-88),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C5__8S1627C128S1627C188S1627C22__A3__7S1627C1[] = {
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S1627C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__A__8S1627C188S1627C22__A2__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C18[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C13__8S1627C22__7S1627C1[] = {
  ABISELECT(64,32),
  ABISELECT(-100,-56),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__8S1627C22__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C128S1627C18__A1__8S1627C22__7S1627C1[] = {
  ABISELECT(-180,-96),
  ABISELECT(-96,-52),
  ABISELECT(-180,-96),
  ABISELECT(-208,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev)();
extern void ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S1627C3__8S1627C22__7S1627C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__8S1627C22__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__A1__8S1627C22__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__8S1627C22__7S1627C1[] = {
  ABISELECT(144,76),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S1627C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D1Ev,_ZTv0_n32_N8S1627C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S1627C22D0Ev,_ZTv0_n32_N8S1627C22D0Ev),
};
extern void _ZN7S1627C3D1Ev();
extern void _ZN7S1627C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C3__A1__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&_ZN7S1627C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C3D0Ev,
};
extern void _ZN7S1627C4D1Ev();
extern void _ZN7S1627C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-176,-92),
  ABISELECT(-192,-100),
  ABISELECT(-224,-120),
  ABISELECT(-196,-104),
  ABISELECT(-224,-120),
  ABISELECT(-112,-60),
  ABISELECT(-196,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&_ZN7S1627C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1627C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C47S1627C3__A2__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C47S1627C3__A2__7S1627C1[] = {
  ABISELECT(176,92),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1627C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(-84,-44),
  0,
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S1627C9__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(28,16),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S1627C10__7S1627C3__A1__7S1627C1[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S1627C11__7S1627C3__A1__7S1627C1[] = {
  ABISELECT(176,92),
  ABISELECT(-20,-12),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S1627C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev),
};
static  VTT_ENTRY vtt_S1627C1[] = {
  {&(_ZTV7S1627C1[18]),  18,175},
  {&(_tg__ZTV7S1627C2__7S1627C1[16]),  16,18},
  {&(_tg__ZTV7S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C47S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C37S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C37S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C37S1627C2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__7S1627C37S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C37S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C37S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C217S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C2__7S1627C1[16]),  16,18},
  {&(_tg__ZTV8S1627C10__7S1627C2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C14__7S1627C2__7S1627C1[15]),  15,17},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C2__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C16__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C13__A1__7S1627C2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__A1__7S1627C2__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C2__7S1627C1[3]),  3,5},
  {&(_tg__ZTV8S1627C15__A1__7S1627C2__7S1627C1[15]),  15,17},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C21__7S1627C2__7S1627C1[4]),  4,4},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[18]),  18,175},
  {&(_ZTV7S1627C1[28]),  28,175},
  {&(_ZTV7S1627C1[36]),  36,175},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[53]),  53,175},
  {&(_ZTV7S1627C1[69]),  69,175},
  {&(_ZTV7S1627C1[93]),  93,175},
  {&(_ZTV7S1627C1[103]),  103,175},
  {&(_ZTV7S1627C1[116]),  116,175},
  {&(_ZTV7S1627C1[77]),  77,175},
  {&(_ZTV7S1627C1[80]),  80,175},
  {&(_ZTV7S1627C1[133]),  133,175},
  {&(_ZTV7S1627C1[141]),  141,175},
  {&(_ZTV7S1627C1[24]),  24,175},
  {&(_ZTV7S1627C1[154]),  154,175},
  {&(_ZTV7S1627C1[162]),  162,175},
  {&(_ZTV7S1627C1[173]),  173,175},
  {&(_tg__ZTV7S1627C5__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C9__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C10__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C1[7]),  7,9},
  {&(_tg__ZTV8S1627C138S1627C11__7S1627C1[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C138S1627C11__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C138S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C11__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV7S1627C98S1627C14__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C158S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C158S1627C14__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C158S1627C14__A4__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C158S1627C14__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C158S1627C14__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C158S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C158S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C158S1627C14__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C158S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C198S1627C14__7S1627C1[3]),  3,5},
  {&(_tg__ZTV7S1627C98S1627C198S1627C14__A2__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C15__8S1627C14__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C14__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C14__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C14__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__A1__8S1627C14__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A1__8S1627C14__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C19__8S1627C14__7S1627C1[3]),  3,5},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C11__8S1627C16__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C16__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C10__8S1627C16__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C16__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C13__A1__7S1627C1[7]),  7,9},
  {&(_tg__ZTV7S1627C58S1627C13__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C13__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C4__A1__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C4__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C4__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C4__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C4__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C15__A1__7S1627C1[14]),  14,16},
  {&(_tg__ZTV8S1627C188S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C15__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C15__A5__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C15__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C15__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C11__8S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C16__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV8S1627C10__8S1627C15__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__A1__8S1627C15__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C4__8S1627C15__A1__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C15__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C15__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C22__7S1627C1[12]),  12,14},
  {&(_tg__ZTV8S1627C188S1627C22__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C108S1627C188S1627C22__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV7S1627C58S1627C108S1627C188S1627C22__A6__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C128S1627C188S1627C22__A3__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C5__8S1627C128S1627C188S1627C22__A3__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C13__8S1627C188S1627C22__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__A__8S1627C188S1627C22__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C13__8S1627C22__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C128S1627C18__A1__8S1627C22__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C3__8S1627C22__7S1627C1[11]),  11,13},
  {&(_tg__ZTV7S1627C9__8S1627C22__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__A1__8S1627C22__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__8S1627C22__7S1627C1[8]),  8,10},
  {&(_tg__ZTV7S1627C3__A1__7S1627C1[10]),  10,12},
  {&(_tg__ZTV7S1627C47S1627C3__A2__7S1627C1[10]),  10,12},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C47S1627C3__A2__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C47S1627C3__A2__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C47S1627C3__A2__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C47S1627C3__A2__7S1627C1[6]),  6,6},
  {&(_tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[6]),  6,6},
  {&(_tg__ZTV7S1627C9__7S1627C3__A1__7S1627C1[3]),  3,3},
  {&(_tg__ZTV8S1627C10__7S1627C3__A1__7S1627C1[4]),  4,4},
  {&(_tg__ZTV8S1627C11__7S1627C3__A1__7S1627C1[8]),  8,10},
  {&(_tg__ZTV8S1627C12__7S1627C3__A1__7S1627C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S1627C1[];
extern  VTBL_ENTRY _ZTV7S1627C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1627C1[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D0Ev,_ZTv0_n44_N8S1627C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D0Ev,_ZThn16_N8S1627C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C22D1Ev,_ZTv0_n44_N8S1627C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S1627C22D1Ev,_ZThn16_N8S1627C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D0Ev,_ZTv0_n32_N8S1627C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D0Ev,_ZThn12_N8S1627C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C16D1Ev,_ZTv0_n32_N8S1627C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S1627C16D1Ev,_ZThn12_N8S1627C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D0Ev,_ZTv0_n32_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D0Ev,_ZThn36_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C14D1Ev,_ZTv0_n32_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S1627C14D1Ev,_ZThn36_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D0Ev,_ZTv0_n44_N8S1627C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D0Ev,_ZThn44_N8S1627C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D0Ev,_ZThn24_N8S1627C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C14D1Ev,_ZTv0_n44_N8S1627C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S1627C14D1Ev,_ZThn44_N8S1627C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S1627C14D1Ev,_ZThn24_N8S1627C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D0Ev,_ZTv0_n32_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D0Ev,_ZThn32_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C15D1Ev,_ZTv0_n32_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C15D1Ev,_ZThn32_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D0Ev,_ZTv0_n44_N8S1627C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D0Ev,_ZThn40_N8S1627C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D0Ev,_ZThn20_N8S1627C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S1627C15D1Ev,_ZTv0_n44_N8S1627C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S1627C15D1Ev,_ZThn40_N8S1627C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S1627C15D1Ev,_ZThn20_N8S1627C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D0Ev,_ZTv0_n32_N8S1627C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D0Ev,_ZThn32_N8S1627C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S1627C18D1Ev,_ZTv0_n32_N8S1627C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S1627C18D1Ev,_ZThn32_N8S1627C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D0Ev,_ZTv0_n60_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D0Ev,_ZThn88_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D0Ev,_ZThn36_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C2D1Ev,_ZTv0_n60_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C2D1Ev,_ZThn88_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C2D1Ev,_ZThn36_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D0Ev,_ZTv0_n32_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D0Ev,_ZThn72_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D0Ev,_ZThn28_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C2D1Ev,_ZTv0_n32_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C2D1Ev,_ZThn72_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C2D1Ev,_ZThn28_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D0Ev,_ZTv0_n44_N7S1627C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D0Ev,_ZThn80_N7S1627C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D0Ev,_ZThn60_N7S1627C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C2D1Ev,_ZTv0_n44_N7S1627C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C2D1Ev,_ZThn80_N7S1627C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C2D1Ev,_ZThn60_N7S1627C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D0Ev,_ZTv0_n32_N7S1627C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D0Ev,_ZThn28_N7S1627C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C3D1Ev,_ZTv0_n32_N7S1627C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C3D1Ev,_ZThn28_N7S1627C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D0Ev,_ZTv0_n32_N7S1627C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D0Ev,_ZThn28_N7S1627C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C4D1Ev,_ZTv0_n32_N7S1627C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C4D1Ev,_ZThn28_N7S1627C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S1627C1D0Ev,_ZTv0_n52_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S1627C1D0Ev,_ZThn104_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S1627C1D1Ev,_ZTv0_n52_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S1627C1D1Ev,_ZThn104_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C1D0Ev,_ZTv0_n44_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S1627C1D0Ev,_ZThn120_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C1D0Ev,_ZThn80_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C1D0Ev,_ZThn60_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S1627C1D1Ev,_ZTv0_n44_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S1627C1D1Ev,_ZThn120_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1627C1D1Ev,_ZThn80_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S1627C1D1Ev,_ZThn60_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C1D0Ev,_ZTv0_n60_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C1D0Ev,_ZThn88_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C1D0Ev,_ZThn36_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1627C1D1Ev,_ZTv0_n60_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1627C1D1Ev,_ZThn88_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S1627C1D1Ev,_ZThn36_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C1D0Ev,_ZTv0_n32_N7S1627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C1D0Ev,_ZThn72_N7S1627C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C1D0Ev,_ZThn28_N7S1627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1627C1D1Ev,_ZTv0_n32_N7S1627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S1627C1D1Ev,_ZThn72_N7S1627C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1627C1D1Ev,_ZThn28_N7S1627C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1627C1 = {  "S1627C1", // class name
  bases_S1627C1, 73,
  &(vtc_S1627C1[0]), // expected_vtbl_contents
  &(vtt_S1627C1[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S1627C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1627C1),175, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1627C1),160, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S794C4  : S1868C4_nt {
  void *s794c4f0[2];
  virtual  ~S794C4(); // _ZN6S794C4D1Ev
  virtual void  v5(); // _ZN6S794C42v5Ev
  virtual void  v6(); // _ZN6S794C42v6Ev
  virtual void  v7(); // _ZN6S794C42v7Ev
  virtual void  v8(); // _ZN6S794C42v8Ev
  virtual void  v9(); // _ZN6S794C42v9Ev
  virtual void  v10(); // _ZN6S794C43v10Ev
  virtual void  v11(); // _ZN6S794C43v11Ev
  S794C4(); // tgen
};
//SIG(-1 S794C4) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S794C4 ::~S794C4(){ note_dtor("S794C4", this);}
void  S794C4 ::v5(){vfunc_called(this, "_ZN6S794C42v5Ev");}
void  S794C4 ::v6(){vfunc_called(this, "_ZN6S794C42v6Ev");}
void  S794C4 ::v7(){vfunc_called(this, "_ZN6S794C42v7Ev");}
void  S794C4 ::v8(){vfunc_called(this, "_ZN6S794C42v8Ev");}
void  S794C4 ::v9(){vfunc_called(this, "_ZN6S794C42v9Ev");}
void  S794C4 ::v10(){vfunc_called(this, "_ZN6S794C43v10Ev");}
void  S794C4 ::v11(){vfunc_called(this, "_ZN6S794C43v11Ev");}
S794C4 ::S794C4(){ note_ctor("S794C4", this);} // tgen

static void Test_S794C4()
{
  extern Class_Descriptor cd_S794C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S794C4, buf);
    S794C4 *dp, &lv = *(dp=new (buf) S794C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S794C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C4)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S794C4");
    check_field_offset(lv, s794c4f0, ABISELECT(8,4), "S794C4.s794c4f0");
    test_class_info(&lv, &cd_S794C4);
    dp->~S794C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C4(Test_S794C4, "S794C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S794C4C1Ev();
extern void _ZN6S794C4D1Ev();
Name_Map name_map_S794C4[] = {
  NSPAIR(_ZN6S794C4C1Ev),
  NSPAIR(_ZN6S794C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S794C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI6S794C4[];
extern void _ZN6S794C4D1Ev();
extern void _ZN6S794C4D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
static  VTBL_ENTRY vtc_S794C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C4[0]),
  (VTBL_ENTRY)&_ZN6S794C4D1Ev,
  (VTBL_ENTRY)&_ZN6S794C4D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
};
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
Class_Descriptor cd_S794C4 = {  "S794C4", // class name
  bases_S794C4, 1,
  &(vtc_S794C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S794C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C4),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  S794C6  {
  virtual  ~S794C6(); // _ZN6S794C6D1Ev
  virtual void  v12(); // _ZN6S794C63v12Ev
  virtual void  v13(); // _ZN6S794C63v13Ev
  virtual void  v14(); // _ZN6S794C63v14Ev
  virtual void  v15(); // _ZN6S794C63v15Ev
  virtual void  v16(); // _ZN6S794C63v16Ev
  virtual void  v17(); // _ZN6S794C63v17Ev
  virtual void  v18(); // _ZN6S794C63v18Ev
  virtual void  v19(); // _ZN6S794C63v19Ev
  virtual void  v20(); // _ZN6S794C63v20Ev
  virtual void  v21(); // _ZN6S794C63v21Ev
  virtual void  v22(); // _ZN6S794C63v22Ev
  virtual void  v23(); // _ZN6S794C63v23Ev
  S794C6(); // tgen
};
//SIG(-1 S794C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S794C6 ::~S794C6(){ note_dtor("S794C6", this);}
void  S794C6 ::v12(){vfunc_called(this, "_ZN6S794C63v12Ev");}
void  S794C6 ::v13(){vfunc_called(this, "_ZN6S794C63v13Ev");}
void  S794C6 ::v14(){vfunc_called(this, "_ZN6S794C63v14Ev");}
void  S794C6 ::v15(){vfunc_called(this, "_ZN6S794C63v15Ev");}
void  S794C6 ::v16(){vfunc_called(this, "_ZN6S794C63v16Ev");}
void  S794C6 ::v17(){vfunc_called(this, "_ZN6S794C63v17Ev");}
void  S794C6 ::v18(){vfunc_called(this, "_ZN6S794C63v18Ev");}
void  S794C6 ::v19(){vfunc_called(this, "_ZN6S794C63v19Ev");}
void  S794C6 ::v20(){vfunc_called(this, "_ZN6S794C63v20Ev");}
void  S794C6 ::v21(){vfunc_called(this, "_ZN6S794C63v21Ev");}
void  S794C6 ::v22(){vfunc_called(this, "_ZN6S794C63v22Ev");}
void  S794C6 ::v23(){vfunc_called(this, "_ZN6S794C63v23Ev");}
S794C6 ::S794C6(){ note_ctor("S794C6", this);} // tgen

static void Test_S794C6()
{
  extern Class_Descriptor cd_S794C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S794C6, buf);
    S794C6 *dp, &lv = *(dp=new (buf) S794C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S794C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C6)");
    test_class_info(&lv, &cd_S794C6);
    dp->~S794C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C6(Test_S794C6, "S794C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S794C6C1Ev();
extern void _ZN6S794C6D1Ev();
Name_Map name_map_S794C6[] = {
  NSPAIR(_ZN6S794C6C1Ev),
  NSPAIR(_ZN6S794C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S794C6[];
extern void _ZN6S794C6D1Ev();
extern void _ZN6S794C6D0Ev();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
static  VTBL_ENTRY vtc_S794C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C6[0]),
  (VTBL_ENTRY)&_ZN6S794C6D1Ev,
  (VTBL_ENTRY)&_ZN6S794C6D0Ev,
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
};
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
Class_Descriptor cd_S794C6 = {  "S794C6", // class name
  0,0,//no base classes
  &(vtc_S794C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S794C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S794C6),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S794C7  {
  virtual  ~S794C7(); // _ZN6S794C7D1Ev
  virtual void  v24(); // _ZN6S794C73v24Ev
  virtual void  v25(); // _ZN6S794C73v25Ev
  S794C7(); // tgen
};
//SIG(-1 S794C7) C1{ vd v1 v2}


 S794C7 ::~S794C7(){ note_dtor("S794C7", this);}
void  S794C7 ::v24(){vfunc_called(this, "_ZN6S794C73v24Ev");}
void  S794C7 ::v25(){vfunc_called(this, "_ZN6S794C73v25Ev");}
S794C7 ::S794C7(){ note_ctor("S794C7", this);} // tgen

static void Test_S794C7()
{
  extern Class_Descriptor cd_S794C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S794C7, buf);
    S794C7 *dp, &lv = *(dp=new (buf) S794C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S794C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C7)");
    test_class_info(&lv, &cd_S794C7);
    dp->~S794C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C7(Test_S794C7, "S794C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S794C7C1Ev();
extern void _ZN6S794C7D1Ev();
Name_Map name_map_S794C7[] = {
  NSPAIR(_ZN6S794C7C1Ev),
  NSPAIR(_ZN6S794C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S794C7[];
extern void _ZN6S794C7D1Ev();
extern void _ZN6S794C7D0Ev();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C7[0]),
  (VTBL_ENTRY)&_ZN6S794C7D1Ev,
  (VTBL_ENTRY)&_ZN6S794C7D0Ev,
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
Class_Descriptor cd_S794C7 = {  "S794C7", // class name
  0,0,//no base classes
  &(vtc_S794C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S794C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S794C7),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  S794C3  : S794C4 , S794C6 , S794C7 {
  void *s794c3f0;
  ::S793C8_nt s794c3f1;
  void *s794c3f2;
  ::S1868C17 s794c3f3;
  int s794c3f4[2];
  virtual  ~S794C3(); // _ZN6S794C3D1Ev
  virtual void  v26(); // _ZN6S794C33v26Ev
  virtual void  v27(); // _ZN6S794C33v27Ev
  virtual void  v28(); // _ZN6S794C33v28Ev
  virtual void  v29(); // _ZN6S794C33v29Ev
  virtual void  v30(); // _ZN6S794C33v30Ev
  virtual void  v31(); // _ZN6S794C33v31Ev
  virtual void  v32(); // _ZN6S794C33v32Ev
  virtual void  v33(); // _ZN6S794C33v33Ev
  virtual void  v34(); // _ZN6S794C33v34Ev
  virtual void  v35(); // _ZN6S794C33v35Ev
  virtual void  v36(); // _ZN6S794C33v36Ev
  virtual void  v37(); // _ZN6S794C33v37Ev
  virtual void  v38(); // _ZN6S794C33v38Ev
  virtual void  v39(); // _ZN6S794C33v39Ev
  virtual void  v40(); // _ZN6S794C33v40Ev
  virtual void  v41(); // _ZN6S794C33v41Ev
  virtual void  v42(); // _ZN6S794C33v42Ev
  virtual void  v43(); // _ZN6S794C33v43Ev
  virtual void  v44(); // _ZN6S794C33v44Ev
  virtual void  v45(); // _ZN6S794C33v45Ev
  virtual void  v46(); // _ZN6S794C33v46Ev
  virtual void  v47(); // _ZN6S794C33v47Ev
  virtual void  v48(); // _ZN6S794C33v48Ev
  virtual void  v49(); // _ZN6S794C33v49Ev
  S794C3(); // tgen
};
//SIG(-1 S794C3) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S794C3 ::~S794C3(){ note_dtor("S794C3", this);}
void  S794C3 ::v26(){vfunc_called(this, "_ZN6S794C33v26Ev");}
void  S794C3 ::v27(){vfunc_called(this, "_ZN6S794C33v27Ev");}
void  S794C3 ::v28(){vfunc_called(this, "_ZN6S794C33v28Ev");}
void  S794C3 ::v29(){vfunc_called(this, "_ZN6S794C33v29Ev");}
void  S794C3 ::v30(){vfunc_called(this, "_ZN6S794C33v30Ev");}
void  S794C3 ::v31(){vfunc_called(this, "_ZN6S794C33v31Ev");}
void  S794C3 ::v32(){vfunc_called(this, "_ZN6S794C33v32Ev");}
void  S794C3 ::v33(){vfunc_called(this, "_ZN6S794C33v33Ev");}
void  S794C3 ::v34(){vfunc_called(this, "_ZN6S794C33v34Ev");}
void  S794C3 ::v35(){vfunc_called(this, "_ZN6S794C33v35Ev");}
void  S794C3 ::v36(){vfunc_called(this, "_ZN6S794C33v36Ev");}
void  S794C3 ::v37(){vfunc_called(this, "_ZN6S794C33v37Ev");}
void  S794C3 ::v38(){vfunc_called(this, "_ZN6S794C33v38Ev");}
void  S794C3 ::v39(){vfunc_called(this, "_ZN6S794C33v39Ev");}
void  S794C3 ::v40(){vfunc_called(this, "_ZN6S794C33v40Ev");}
void  S794C3 ::v41(){vfunc_called(this, "_ZN6S794C33v41Ev");}
void  S794C3 ::v42(){vfunc_called(this, "_ZN6S794C33v42Ev");}
void  S794C3 ::v43(){vfunc_called(this, "_ZN6S794C33v43Ev");}
void  S794C3 ::v44(){vfunc_called(this, "_ZN6S794C33v44Ev");}
void  S794C3 ::v45(){vfunc_called(this, "_ZN6S794C33v45Ev");}
void  S794C3 ::v46(){vfunc_called(this, "_ZN6S794C33v46Ev");}
void  S794C3 ::v47(){vfunc_called(this, "_ZN6S794C33v47Ev");}
void  S794C3 ::v48(){vfunc_called(this, "_ZN6S794C33v48Ev");}
void  S794C3 ::v49(){vfunc_called(this, "_ZN6S794C33v49Ev");}
S794C3 ::S794C3(){ note_ctor("S794C3", this);} // tgen

static void Test_S794C3()
{
  extern Class_Descriptor cd_S794C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S794C3, buf);
    S794C3 *dp, &lv = *(dp=new (buf) S794C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S794C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C3)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*), 0, "S794C3");
    check_base_class_offset(lv, (S794C4*), 0, "S794C3");
    check_base_class_offset(lv, (S794C6*), ABISELECT(24,12), "S794C3");
    check_base_class_offset(lv, (S794C7*), ABISELECT(32,16), "S794C3");
    check_field_offset(lv, s794c3f0, ABISELECT(40,20), "S794C3.s794c3f0");
    check_field_offset(lv, s794c3f1, ABISELECT(48,24), "S794C3.s794c3f1");
    check_field_offset(lv, s794c3f2, ABISELECT(64,40), "S794C3.s794c3f2");
    check_field_offset(lv, s794c3f3, ABISELECT(72,44), "S794C3.s794c3f3");
    check_field_offset(lv, s794c3f4, ABISELECT(80,48), "S794C3.s794c3f4");
    test_class_info(&lv, &cd_S794C3);
    dp->~S794C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C3(Test_S794C3, "S794C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN6S794C3C1Ev();
extern void _ZN6S794C3D1Ev();
Name_Map name_map_S794C3[] = {
  NSPAIR(_ZN6S794C3C1Ev),
  NSPAIR(_ZN6S794C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
static Base_Class bases_S794C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S794C6,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_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_S794C7,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_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 _ZTI6S794C3[];
extern void _ZN6S794C3D1Ev();
extern void _ZN6S794C3D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void ABISELECT(_ZThn24_N6S794C3D1Ev,_ZThn12_N6S794C3D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C3D0Ev,_ZThn12_N6S794C3D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C3D1Ev,_ZThn16_N6S794C3D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C3D0Ev,_ZThn16_N6S794C3D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&_ZN6S794C3D1Ev,
  (VTBL_ENTRY)&_ZN6S794C3D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C3D1Ev,_ZThn12_N6S794C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C3D0Ev,_ZThn12_N6S794C3D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C3D1Ev,_ZThn16_N6S794C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C3D0Ev,_ZThn16_N6S794C3D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
Class_Descriptor cd_S794C3 = {  "S794C3", // class name
  bases_S794C3, 4,
  &(vtc_S794C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI6S794C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S794C3),57, //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  S794C2  : S794C3 {
  ::S793C11 s794c2f0;
  virtual void  v50(); // _ZN6S794C23v50Ev
  virtual void  v51(); // _ZN6S794C23v51Ev
  virtual void  v52(); // _ZN6S794C23v52Ev
  virtual void  v53(); // _ZN6S794C23v53Ev
  virtual void  v54(); // _ZN6S794C23v54Ev
  ~S794C2(); // tgen
  S794C2(); // tgen
};
//SIG(-1 S794C2) C1{ BC2{ BC3{ BC4{ vd m} vd v6 v7 v8 v9 v10 v11 v12 Fp[2]} BC5{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} BC6{ vd v25 v26} vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 FC10{ m Fc FC7 Fi}}


void  S794C2 ::v50(){vfunc_called(this, "_ZN6S794C23v50Ev");}
void  S794C2 ::v51(){vfunc_called(this, "_ZN6S794C23v51Ev");}
void  S794C2 ::v52(){vfunc_called(this, "_ZN6S794C23v52Ev");}
void  S794C2 ::v53(){vfunc_called(this, "_ZN6S794C23v53Ev");}
void  S794C2 ::v54(){vfunc_called(this, "_ZN6S794C23v54Ev");}
S794C2 ::~S794C2(){ note_dtor("S794C2", this);} // tgen
S794C2 ::S794C2(){ note_ctor("S794C2", this);} // tgen

static void Test_S794C2()
{
  extern Class_Descriptor cd_S794C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S794C2, buf);
    S794C2 *dp, &lv = *(dp=new (buf) S794C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S794C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*)(S794C3*), 0, "S794C2");
    check_base_class_offset(lv, (S794C4*)(S794C3*), 0, "S794C2");
    check_base_class_offset(lv, (S794C6*)(S794C3*), ABISELECT(24,12), "S794C2");
    check_base_class_offset(lv, (S794C7*)(S794C3*), ABISELECT(32,16), "S794C2");
    check_base_class_offset(lv, (S794C3*), 0, "S794C2");
    check_field_offset(lv, s794c2f0, ABISELECT(88,56), "S794C2.s794c2f0");
    test_class_info(&lv, &cd_S794C2);
    dp->~S794C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C2(Test_S794C2, "S794C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S794C2C1Ev();
extern void _ZN6S794C2D1Ev();
Name_Map name_map_S794C2[] = {
  NSPAIR(_ZN6S794C2C1Ev),
  NSPAIR(_ZN6S794C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
extern Class_Descriptor cd_S794C3;
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
static Base_Class bases_S794C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S794C6,    ABISELECT(24,12), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C7,    ABISELECT(32,16), //bcp->offset
    56, //bcp->virtual_function_table_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_S794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S794C2[];
extern void _ZN6S794C2D1Ev();
extern void _ZN6S794C2D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void _ZN6S794C23v50Ev();
extern void _ZN6S794C23v51Ev();
extern void _ZN6S794C23v52Ev();
extern void _ZN6S794C23v53Ev();
extern void _ZN6S794C23v54Ev();
extern void ABISELECT(_ZThn24_N6S794C2D1Ev,_ZThn12_N6S794C2D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C2D0Ev,_ZThn12_N6S794C2D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C2D1Ev,_ZThn16_N6S794C2D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C2D0Ev,_ZThn16_N6S794C2D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&_ZN6S794C2D1Ev,
  (VTBL_ENTRY)&_ZN6S794C2D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  (VTBL_ENTRY)&_ZN6S794C23v50Ev,
  (VTBL_ENTRY)&_ZN6S794C23v51Ev,
  (VTBL_ENTRY)&_ZN6S794C23v52Ev,
  (VTBL_ENTRY)&_ZN6S794C23v53Ev,
  (VTBL_ENTRY)&_ZN6S794C23v54Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C2D1Ev,_ZThn12_N6S794C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C2D0Ev,_ZThn12_N6S794C2D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C2D1Ev,_ZThn16_N6S794C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C2D0Ev,_ZThn16_N6S794C2D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C2[];
extern  VTBL_ENTRY _ZTV6S794C2[];
Class_Descriptor cd_S794C2 = {  "S794C2", // class name
  bases_S794C2, 5,
  &(vtc_S794C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S794C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C2),62, //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  S794C1  : S794C2 {
  virtual void  v1(); // _ZN6S794C12v1Ev
  virtual void  v2(); // _ZN6S794C12v2Ev
  virtual void  v3(); // _ZN6S794C12v3Ev
  virtual void  v4(); // _ZN6S794C12v4Ev
  ~S794C1(); // tgen
  S794C1(); // tgen
};
//SIG(1 S794C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd v5 v6 v7 v8 v9 v10 v11 Fp[2]} BC6{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} BC7{ vd v24 v25} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 Fp FC8{ m FC9{ m FL[2]}} Fp FC10{ m Fp} Fi[2]} v50 v51 v52 v53 v54 FC11{ m Fc FC8 Fi}} v1 v2 v3 v4}


void  S794C1 ::v1(){vfunc_called(this, "_ZN6S794C12v1Ev");}
void  S794C1 ::v2(){vfunc_called(this, "_ZN6S794C12v2Ev");}
void  S794C1 ::v3(){vfunc_called(this, "_ZN6S794C12v3Ev");}
void  S794C1 ::v4(){vfunc_called(this, "_ZN6S794C12v4Ev");}
S794C1 ::~S794C1(){ note_dtor("S794C1", this);} // tgen
S794C1 ::S794C1(){ note_ctor("S794C1", this);} // tgen

static void Test_S794C1()
{
  extern Class_Descriptor cd_S794C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S794C1, buf);
    S794C1 *dp, &lv = *(dp=new (buf) S794C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S794C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S794C4*)(S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C4*)(S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C6*)(S794C3*)(S794C2*), ABISELECT(24,12), "S794C1");
    check_base_class_offset(lv, (S794C7*)(S794C3*)(S794C2*), ABISELECT(32,16), "S794C1");
    check_base_class_offset(lv, (S794C3*)(S794C2*), 0, "S794C1");
    check_base_class_offset(lv, (S794C2*), 0, "S794C1");
    test_class_info(&lv, &cd_S794C1);
    dp->~S794C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS794C1(Test_S794C1, "S794C1", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN6S794C1C1Ev();
extern void _ZN6S794C1D1Ev();
Name_Map name_map_S794C1[] = {
  NSPAIR(_ZN6S794C1C1Ev),
  NSPAIR(_ZN6S794C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S794C4;
extern VTBL_ENTRY _ZTI6S794C4[];
extern  VTBL_ENTRY _ZTV6S794C4[];
extern Class_Descriptor cd_S794C6;
extern VTBL_ENTRY _ZTI6S794C6[];
extern  VTBL_ENTRY _ZTV6S794C6[];
extern Class_Descriptor cd_S794C7;
extern VTBL_ENTRY _ZTI6S794C7[];
extern  VTBL_ENTRY _ZTV6S794C7[];
extern Class_Descriptor cd_S794C3;
extern VTBL_ENTRY _ZTI6S794C3[];
extern  VTBL_ENTRY _ZTV6S794C3[];
extern Class_Descriptor cd_S794C2;
extern VTBL_ENTRY _ZTI6S794C2[];
extern  VTBL_ENTRY _ZTV6S794C2[];
static Base_Class bases_S794C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S794C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S794C6,    ABISELECT(24,12), //bcp->offset
    44, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S794C7,    ABISELECT(32,16), //bcp->offset
    60, //bcp->virtual_function_table_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_S794C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S794C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S794C1[];
extern void _ZN6S794C1D1Ev();
extern void _ZN6S794C1D0Ev();
extern void _ZN6S794C42v5Ev();
extern void _ZN6S794C42v6Ev();
extern void _ZN6S794C42v7Ev();
extern void _ZN6S794C42v8Ev();
extern void _ZN6S794C42v9Ev();
extern void _ZN6S794C43v10Ev();
extern void _ZN6S794C43v11Ev();
extern void _ZN6S794C33v26Ev();
extern void _ZN6S794C33v27Ev();
extern void _ZN6S794C33v28Ev();
extern void _ZN6S794C33v29Ev();
extern void _ZN6S794C33v30Ev();
extern void _ZN6S794C33v31Ev();
extern void _ZN6S794C33v32Ev();
extern void _ZN6S794C33v33Ev();
extern void _ZN6S794C33v34Ev();
extern void _ZN6S794C33v35Ev();
extern void _ZN6S794C33v36Ev();
extern void _ZN6S794C33v37Ev();
extern void _ZN6S794C33v38Ev();
extern void _ZN6S794C33v39Ev();
extern void _ZN6S794C33v40Ev();
extern void _ZN6S794C33v41Ev();
extern void _ZN6S794C33v42Ev();
extern void _ZN6S794C33v43Ev();
extern void _ZN6S794C33v44Ev();
extern void _ZN6S794C33v45Ev();
extern void _ZN6S794C33v46Ev();
extern void _ZN6S794C33v47Ev();
extern void _ZN6S794C33v48Ev();
extern void _ZN6S794C33v49Ev();
extern void _ZN6S794C23v50Ev();
extern void _ZN6S794C23v51Ev();
extern void _ZN6S794C23v52Ev();
extern void _ZN6S794C23v53Ev();
extern void _ZN6S794C23v54Ev();
extern void _ZN6S794C12v1Ev();
extern void _ZN6S794C12v2Ev();
extern void _ZN6S794C12v3Ev();
extern void _ZN6S794C12v4Ev();
extern void ABISELECT(_ZThn24_N6S794C1D1Ev,_ZThn12_N6S794C1D1Ev)();
extern void ABISELECT(_ZThn24_N6S794C1D0Ev,_ZThn12_N6S794C1D0Ev)();
extern void _ZN6S794C63v12Ev();
extern void _ZN6S794C63v13Ev();
extern void _ZN6S794C63v14Ev();
extern void _ZN6S794C63v15Ev();
extern void _ZN6S794C63v16Ev();
extern void _ZN6S794C63v17Ev();
extern void _ZN6S794C63v18Ev();
extern void _ZN6S794C63v19Ev();
extern void _ZN6S794C63v20Ev();
extern void _ZN6S794C63v21Ev();
extern void _ZN6S794C63v22Ev();
extern void _ZN6S794C63v23Ev();
extern void ABISELECT(_ZThn32_N6S794C1D1Ev,_ZThn16_N6S794C1D1Ev)();
extern void ABISELECT(_ZThn32_N6S794C1D0Ev,_ZThn16_N6S794C1D0Ev)();
extern void _ZN6S794C73v24Ev();
extern void _ZN6S794C73v25Ev();
static  VTBL_ENTRY vtc_S794C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&_ZN6S794C1D1Ev,
  (VTBL_ENTRY)&_ZN6S794C1D0Ev,
  (VTBL_ENTRY)&_ZN6S794C42v5Ev,
  (VTBL_ENTRY)&_ZN6S794C42v6Ev,
  (VTBL_ENTRY)&_ZN6S794C42v7Ev,
  (VTBL_ENTRY)&_ZN6S794C42v8Ev,
  (VTBL_ENTRY)&_ZN6S794C42v9Ev,
  (VTBL_ENTRY)&_ZN6S794C43v10Ev,
  (VTBL_ENTRY)&_ZN6S794C43v11Ev,
  (VTBL_ENTRY)&_ZN6S794C33v26Ev,
  (VTBL_ENTRY)&_ZN6S794C33v27Ev,
  (VTBL_ENTRY)&_ZN6S794C33v28Ev,
  (VTBL_ENTRY)&_ZN6S794C33v29Ev,
  (VTBL_ENTRY)&_ZN6S794C33v30Ev,
  (VTBL_ENTRY)&_ZN6S794C33v31Ev,
  (VTBL_ENTRY)&_ZN6S794C33v32Ev,
  (VTBL_ENTRY)&_ZN6S794C33v33Ev,
  (VTBL_ENTRY)&_ZN6S794C33v34Ev,
  (VTBL_ENTRY)&_ZN6S794C33v35Ev,
  (VTBL_ENTRY)&_ZN6S794C33v36Ev,
  (VTBL_ENTRY)&_ZN6S794C33v37Ev,
  (VTBL_ENTRY)&_ZN6S794C33v38Ev,
  (VTBL_ENTRY)&_ZN6S794C33v39Ev,
  (VTBL_ENTRY)&_ZN6S794C33v40Ev,
  (VTBL_ENTRY)&_ZN6S794C33v41Ev,
  (VTBL_ENTRY)&_ZN6S794C33v42Ev,
  (VTBL_ENTRY)&_ZN6S794C33v43Ev,
  (VTBL_ENTRY)&_ZN6S794C33v44Ev,
  (VTBL_ENTRY)&_ZN6S794C33v45Ev,
  (VTBL_ENTRY)&_ZN6S794C33v46Ev,
  (VTBL_ENTRY)&_ZN6S794C33v47Ev,
  (VTBL_ENTRY)&_ZN6S794C33v48Ev,
  (VTBL_ENTRY)&_ZN6S794C33v49Ev,
  (VTBL_ENTRY)&_ZN6S794C23v50Ev,
  (VTBL_ENTRY)&_ZN6S794C23v51Ev,
  (VTBL_ENTRY)&_ZN6S794C23v52Ev,
  (VTBL_ENTRY)&_ZN6S794C23v53Ev,
  (VTBL_ENTRY)&_ZN6S794C23v54Ev,
  (VTBL_ENTRY)&_ZN6S794C12v1Ev,
  (VTBL_ENTRY)&_ZN6S794C12v2Ev,
  (VTBL_ENTRY)&_ZN6S794C12v3Ev,
  (VTBL_ENTRY)&_ZN6S794C12v4Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C1D1Ev,_ZThn12_N6S794C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N6S794C1D0Ev,_ZThn12_N6S794C1D0Ev),
  (VTBL_ENTRY)&_ZN6S794C63v12Ev,
  (VTBL_ENTRY)&_ZN6S794C63v13Ev,
  (VTBL_ENTRY)&_ZN6S794C63v14Ev,
  (VTBL_ENTRY)&_ZN6S794C63v15Ev,
  (VTBL_ENTRY)&_ZN6S794C63v16Ev,
  (VTBL_ENTRY)&_ZN6S794C63v17Ev,
  (VTBL_ENTRY)&_ZN6S794C63v18Ev,
  (VTBL_ENTRY)&_ZN6S794C63v19Ev,
  (VTBL_ENTRY)&_ZN6S794C63v20Ev,
  (VTBL_ENTRY)&_ZN6S794C63v21Ev,
  (VTBL_ENTRY)&_ZN6S794C63v22Ev,
  (VTBL_ENTRY)&_ZN6S794C63v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI6S794C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C1D1Ev,_ZThn16_N6S794C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N6S794C1D0Ev,_ZThn16_N6S794C1D0Ev),
  (VTBL_ENTRY)&_ZN6S794C73v24Ev,
  (VTBL_ENTRY)&_ZN6S794C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S794C1[];
extern  VTBL_ENTRY _ZTV6S794C1[];
Class_Descriptor cd_S794C1 = {  "S794C1", // class name
  bases_S794C1, 6,
  &(vtc_S794C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI6S794C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S794C1),66, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C5  : virtual S7856C12 , S7856C15 , virtual S7856C24 {
  ~S19805C5(); // tgen
  S19805C5(); // tgen
};
//SIG(-1 S19805C5) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19805C5 ::~S19805C5(){ note_dtor("S19805C5", this);} // tgen
S19805C5 ::S19805C5(){ note_ctor("S19805C5", this);} // tgen

static void Test_S19805C5()
{
  extern Class_Descriptor cd_S19805C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19805C5, buf);
    S19805C5 *dp, &lv = *(dp=new (buf) S19805C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19805C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C5)");
    check_base_class_offset(lv, (S7856C12*), 0, "S19805C5");
    check_base_class_offset(lv, (S7856C15*), 0, "S19805C5");
    check_base_class_offset(lv, (S7856C24*), 0, "S19805C5");
    test_class_info(&lv, &cd_S19805C5);
    dp->~S19805C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C5(Test_S19805C5, "S19805C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19805C5C1Ev();
extern void _ZN8S19805C5D1Ev();
Name_Map name_map_S19805C5[] = {
  NSPAIR(_ZN8S19805C5C1Ev),
  NSPAIR(_ZN8S19805C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19805C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19805C5[];
static  VTBL_ENTRY vtc_S19805C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern VTBL_ENTRY _ZTV8S19805C5[];
static  VTT_ENTRY vtt_S19805C5[] = {
  {&(_ZTV8S19805C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
Class_Descriptor cd_S19805C5 = {  "S19805C5", // class name
  bases_S19805C5, 3,
  &(vtc_S19805C5[0]), // expected_vtbl_contents
  &(vtt_S19805C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19805C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C5),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  S19805C3  : S7856C24 , S7856C15 , S19805C5 {
  int s19805c3f0;
  ~S19805C3(); // tgen
  S19805C3(); // tgen
};
//SIG(-1 S19805C3) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S19805C3 ::~S19805C3(){ note_dtor("S19805C3", this);} // tgen
S19805C3 ::S19805C3(){ note_ctor("S19805C3", this);} // tgen

static void Test_S19805C3()
{
  extern Class_Descriptor cd_S19805C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19805C3, buf);
    S19805C3 *dp, &lv = *(dp=new (buf) S19805C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19805C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C3)");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C3");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C3");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C3");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C3");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(12,8), "S19805C3");
    check_base_class_offset(lv, (S19805C5*), 0, "S19805C3");
    check_field_offset(lv, s19805c3f0, ABISELECT(8,4), "S19805C3.s19805c3f0");
    test_class_info(&lv, &cd_S19805C3);
    dp->~S19805C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C3(Test_S19805C3, "S19805C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19805C3C1Ev();
extern void _ZN8S19805C3D1Ev();
Name_Map name_map_S19805C3[] = {
  NSPAIR(_ZN8S19805C3C1Ev),
  NSPAIR(_ZN8S19805C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
static Base_Class bases_S19805C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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, 1},
  {&cd_S19805C5,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C3[];
static  VTBL_ENTRY vtc_S19805C3[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
extern VTBL_ENTRY _ZTV8S19805C3[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C3[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C3[] = {
  {&(_ZTV8S19805C3[4]),  4,4},
  {&(_tg__ZTV8S19805C5__8S19805C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
Class_Descriptor cd_S19805C3 = {  "S19805C3", // class name
  bases_S19805C3, 6,
  &(vtc_S19805C3[0]), // expected_vtbl_contents
  &(vtt_S19805C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19805C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C3),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C3),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  S19805C8  : S7856C12 , virtual S19805C5 , virtual S7856C15 {
  ~S19805C8(); // tgen
  S19805C8(); // tgen
};
//SIG(-1 S19805C8) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19805C8 ::~S19805C8(){ note_dtor("S19805C8", this);} // tgen
S19805C8 ::S19805C8(){ note_ctor("S19805C8", this);} // tgen

static void Test_S19805C8()
{
  extern Class_Descriptor cd_S19805C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19805C8, buf);
    S19805C8 *dp, &lv = *(dp=new (buf) S19805C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19805C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C8)");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C8");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(8,4), "S19805C8");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C8");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C8");
    check_base_class_offset(lv, (S19805C5*), 0, "S19805C8");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C8");
    test_class_info(&lv, &cd_S19805C8);
    dp->~S19805C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C8(Test_S19805C8, "S19805C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19805C8C1Ev();
extern void _ZN8S19805C8D1Ev();
Name_Map name_map_S19805C8[] = {
  NSPAIR(_ZN8S19805C8C1Ev),
  NSPAIR(_ZN8S19805C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19805C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    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},
  {&cd_S7856C15,    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 _ZTI8S19805C8[];
static  VTBL_ENTRY vtc_S19805C8[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern VTBL_ENTRY _ZTV8S19805C8[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C8[] = {
  {&(_ZTV8S19805C8[6]),  6,6},
  {&(_ZTV8S19805C8[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
Class_Descriptor cd_S19805C8 = {  "S19805C8", // class name
  bases_S19805C8, 6,
  &(vtc_S19805C8[0]), // expected_vtbl_contents
  &(vtt_S19805C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19805C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C8),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C8),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  S19805C7  : S7856C15 , virtual S7856C12 , virtual S7856C24 , S19805C5 , virtual S19805C8 {
  virtual  ~S19805C7(); // _ZN8S19805C7D2Ev
  S19805C7(); // tgen
};
//SIG(-1 S19805C7) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19805C7 ::~S19805C7(){ note_dtor("S19805C7", this);}
S19805C7 ::S19805C7(){ note_ctor("S19805C7", this);} // tgen

static void Test_S19805C7()
{
  extern Class_Descriptor cd_S19805C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19805C7, buf);
    S19805C7 *dp, &lv = *(dp=new (buf) S19805C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19805C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C7)");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19805C7");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C7");
    check_base_class_offset(lv, (S7856C24*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*), 0, "S19805C7");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C7");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(16,8), "S19805C7");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(16,8), "S19805C7");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(24,12), "S19805C7");
    check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C7");
    test_class_info(&lv, &cd_S19805C7);
    dp->~S19805C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C7(Test_S19805C7, "S19805C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19805C7C1Ev();
extern void _ZN8S19805C7D2Ev();
Name_Map name_map_S19805C7[] = {
  NSPAIR(_ZN8S19805C7C1Ev),
  NSPAIR(_ZN8S19805C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
static Base_Class bases_S19805C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    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_S7856C12,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C7[];
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY vtc_S19805C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern VTBL_ENTRY _ZTV8S19805C7[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__A__8S19805C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A1__8S19805C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C7[] = {
  {&(_ZTV8S19805C7[7]),  7,15},
  {&(_tg__ZTV8S19805C5__A__8S19805C7[4]),  4,4},
  {&(_ZTV8S19805C7[15]),  15,15},
  {&(_ZTV8S19805C7[15]),  15,15},
  {&(_tg__ZTV8S19805C8__8S19805C7[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A1__8S19805C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
Class_Descriptor cd_S19805C7 = {  "S19805C7", // class name
  bases_S19805C7, 10,
  &(vtc_S19805C7[0]), // expected_vtbl_contents
  &(vtt_S19805C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19805C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19805C7),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C7),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  S19805C10  : virtual S7856C12 , virtual S7856C15 , virtual S19805C8 , S7856C24 , S19805C7 {
  virtual  ~S19805C10(); // _ZN9S19805C10D2Ev
  S19805C10(); // tgen
};
//SIG(-1 S19805C10) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19805C10 ::~S19805C10(){ note_dtor("S19805C10", this);}
S19805C10 ::S19805C10(){ note_ctor("S19805C10", this);} // tgen

static void Test_S19805C10()
{
  extern Class_Descriptor cd_S19805C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19805C10, buf);
    S19805C10 *dp, &lv = *(dp=new (buf) S19805C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19805C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C10)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19805C10");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(9,5), "S19805C10");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(24,12), "S19805C10");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(24,12), "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C10");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(16,8), "S19805C10");
    check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C10");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(16,8), "S19805C10");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(8,4), "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), 0, "S19805C10");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), 0, "S19805C10");
    check_base_class_offset(lv, (S19805C7*), 0, "S19805C10");
    test_class_info(&lv, &cd_S19805C10);
    dp->~S19805C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C10(Test_S19805C10, "S19805C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19805C10C1Ev();
extern void _ZN9S19805C10D2Ev();
Name_Map name_map_S19805C10[] = {
  NSPAIR(_ZN9S19805C10C1Ev),
  NSPAIR(_ZN9S19805C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
static Base_Class bases_S19805C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C10[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY vtc_S19805C10[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern VTBL_ENTRY _ZTV9S19805C10[];
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C10[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A1__9S19805C10[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__9S19805C10[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C10[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C10[] = {
  {&(_ZTV9S19805C10[7]),  7,15},
  {&(_tg__ZTV8S19805C7__9S19805C10[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A1__9S19805C10[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C10[6]),  6,6},
  {&(_ZTV9S19805C10[15]),  15,15},
  {&(_ZTV9S19805C10[15]),  15,15},
  {&(_tg__ZTV8S19805C8__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
Class_Descriptor cd_S19805C10 = {  "S19805C10", // class name
  bases_S19805C10, 12,
  &(vtc_S19805C10[0]), // expected_vtbl_contents
  &(vtt_S19805C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19805C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C10),10, //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  S19805C9  : virtual S19805C10 , virtual S19805C3 , virtual S19805C7 {
  int s19805c9f0[2];
  virtual  ~S19805C9(); // _ZN8S19805C9D2Ev
  S19805C9(); // tgen
};
//SIG(-1 S19805C9) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S19805C9 ::~S19805C9(){ note_dtor("S19805C9", this);}
S19805C9 ::S19805C9(){ note_ctor("S19805C9", this);} // tgen

static void Test_S19805C9()
{
  extern Class_Descriptor cd_S19805C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19805C9, buf);
    S19805C9 *dp, &lv = *(dp=new (buf) S19805C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19805C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C9)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(25,17), "S19805C9");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C9");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), 0, "S19805C9");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), 0, "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), 0, "S19805C9");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(24,16), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(16,12), "S19805C9");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(16,12), "S19805C9");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(40,24), "S19805C9");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C9");
    check_base_class_offset(lv, (S19805C3*), ABISELECT(32,20), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(56,32), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(48,28), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(48,28), "S19805C9");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*), ABISELECT(48,28), "S19805C9");
    check_field_offset(lv, s19805c9f0, ABISELECT(8,4), "S19805C9.s19805c9f0");
    test_class_info(&lv, &cd_S19805C9);
    dp->~S19805C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C9(Test_S19805C9, "S19805C9", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19805C9C1Ev();
extern void _ZN8S19805C9D2Ev();
Name_Map name_map_S19805C9[] = {
  NSPAIR(_ZN8S19805C9C1Ev),
  NSPAIR(_ZN8S19805C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
static Base_Class bases_S19805C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C9[];
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C9[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19805C9[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__8S19805C9[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__8S19805C9[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C9[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__8S19805C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__8S19805C9[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTT_ENTRY vtt_S19805C9[] = {
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[20]),  20,36},
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[10]),  10,36},
  {&(_ZTV8S19805C9[26]),  26,36},
  {&(_ZTV8S19805C9[34]),  34,36},
  {&(_tg__ZTV9S19805C10__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C3__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__8S19805C9[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__8S19805C9[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C9 = {  "S19805C9", // class name
  bases_S19805C9, 22,
  &(vtc_S19805C9[0]), // expected_vtbl_contents
  &(vtt_S19805C9[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19805C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19805C9),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C9),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C13  : virtual S7856C15 {
  ~S19805C13(); // tgen
  S19805C13(); // tgen
};
//SIG(-1 S19805C13) C1{ VBC2{ m}}


S19805C13 ::~S19805C13(){ note_dtor("S19805C13", this);} // tgen
S19805C13 ::S19805C13(){ note_ctor("S19805C13", this);} // tgen

static void Test_S19805C13()
{
  extern Class_Descriptor cd_S19805C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19805C13, buf);
    S19805C13 *dp, &lv = *(dp=new (buf) S19805C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19805C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C13)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19805C13");
    test_class_info(&lv, &cd_S19805C13);
    dp->~S19805C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C13(Test_S19805C13, "S19805C13", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19805C13C1Ev();
extern void _ZN9S19805C13D1Ev();
Name_Map name_map_S19805C13[] = {
  NSPAIR(_ZN9S19805C13C1Ev),
  NSPAIR(_ZN9S19805C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19805C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S19805C13[];
static  VTBL_ENTRY vtc_S19805C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern VTBL_ENTRY _ZTV9S19805C13[];
static  VTT_ENTRY vtt_S19805C13[] = {
  {&(_ZTV9S19805C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
Class_Descriptor cd_S19805C13 = {  "S19805C13", // class name
  bases_S19805C13, 1,
  &(vtc_S19805C13[0]), // expected_vtbl_contents
  &(vtt_S19805C13[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19805C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19805C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C13),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  S19805C12  : virtual S19805C5 , virtual S19805C13 , virtual S19805C3 , S7856C24 , virtual S19805C10 {
  int s19805c12f0;
  virtual  ~S19805C12(); // _ZN9S19805C12D2Ev
  S19805C12(); // tgen
};
//SIG(-1 S19805C12) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S19805C12 ::~S19805C12(){ note_dtor("S19805C12", this);}
S19805C12 ::S19805C12(){ note_ctor("S19805C12", this);} // tgen

static void Test_S19805C12()
{
  extern Class_Descriptor cd_S19805C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19805C12, buf);
    S19805C12 *dp, &lv = *(dp=new (buf) S19805C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19805C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C12)");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C12");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(48,28), "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(12,8), "S19805C12");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(12,8), "S19805C12");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(12,8), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(12,8), "S19805C12");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), 0, "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), 0, "S19805C12");
    /*is_ambiguous_... S19805C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), 0, "S19805C12");
    check_base_class_offset(lv, (S19805C13*), 0, "S19805C12");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(24,16), "S19805C12");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(16,12), "S19805C12");
    check_base_class_offset(lv, (S19805C3*), ABISELECT(16,12), "S19805C12");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19805C12");
    /*is_ambiguous_... S19805C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C12");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C12");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(40,24), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(32,20), "S19805C12");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(32,20), "S19805C12");
    check_field_offset(lv, s19805c12f0, ABISELECT(8,4), "S19805C12.s19805c12f0");
    test_class_info(&lv, &cd_S19805C12);
    dp->~S19805C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C12(Test_S19805C12, "S19805C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19805C12C1Ev();
extern void _ZN9S19805C12D2Ev();
Name_Map name_map_S19805C12[] = {
  NSPAIR(_ZN9S19805C12C1Ev),
  NSPAIR(_ZN9S19805C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
static Base_Class bases_S19805C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C24,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C12[];
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C12D1Ev,_ZThn20_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C12D0Ev,_ZThn20_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern VTBL_ENTRY _ZTV9S19805C12[];
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C12[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A1__9S19805C12[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C12[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTT_ENTRY vtt_S19805C12[] = {
  {&(_ZTV9S19805C12[10]),  10,32},
  {&(_ZTV9S19805C12[32]),  32,32},
  {&(_ZTV9S19805C12[10]),  10,32},
  {&(_ZTV9S19805C12[16]),  16,32},
  {&(_ZTV9S19805C12[24]),  24,32},
  {&(_ZTV9S19805C12[32]),  32,32},
  {&(_tg__ZTV8S19805C5__9S19805C12[4]),  4,4},
  {&(_tg__ZTV9S19805C13__9S19805C12[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A1__9S19805C12[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C12[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C12[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C12[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C12[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C12D0Ev,_ZThn20_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C12D1Ev,_ZThn20_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C12 = {  "S19805C12", // class name
  bases_S19805C12, 20,
  &(vtc_S19805C12[0]), // expected_vtbl_contents
  &(vtt_S19805C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19805C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C12),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C12),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C18  : virtual S19805C7 , S19805C3 , S19805C8 , S7856C24 {
  virtual  ~S19805C18(); // _ZN9S19805C18D2Ev
  S19805C18(); // tgen
};
//SIG(-1 S19805C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S19805C18 ::~S19805C18(){ note_dtor("S19805C18", this);}
S19805C18 ::S19805C18(){ note_ctor("S19805C18", this);} // tgen

static void Test_S19805C18()
{
  extern Class_Descriptor cd_S19805C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19805C18, buf);
    S19805C18 *dp, &lv = *(dp=new (buf) S19805C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19805C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C18)");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(32,16), "S19805C18");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C18");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(33,17), "S19805C18");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(33,17), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(40,20), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(48,24), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(48,24), "S19805C18");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(40,20), "S19805C18");
    check_base_class_offset(lv, (S19805C7*), ABISELECT(24,12), "S19805C18");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), 0, "S19805C18");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(8,4), "S19805C18");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*), 0, "S19805C18");
    check_base_class_offset(lv, (S19805C3*), 0, "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(16,8), "S19805C18");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*), ABISELECT(16,8), "S19805C18");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(24,12), "S19805C18");
    test_class_info(&lv, &cd_S19805C18);
    dp->~S19805C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C18(Test_S19805C18, "S19805C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19805C18C1Ev();
extern void _ZN9S19805C18D2Ev();
Name_Map name_map_S19805C18[] = {
  NSPAIR(_ZN9S19805C18C1Ev),
  NSPAIR(_ZN9S19805C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19805C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19805C7,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19805C3,    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},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C18[];
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C18D1Ev,_ZThn12_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C18D0Ev,_ZThn12_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern VTBL_ENTRY _ZTV9S19805C18[];
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C8__A__9S19805C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__9S19805C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__9S19805C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A1__9S19805C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTT_ENTRY vtt_S19805C18[] = {
  {&(_ZTV9S19805C18[8]),  8,32},
  {&(_tg__ZTV8S19805C3__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C8__A__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C8__A__9S19805C18[4]),  4,4},
  {&(_ZTV9S19805C18[24]),  24,32},
  {&(_ZTV9S19805C18[32]),  32,32},
  {&(_ZTV9S19805C18[32]),  32,32},
  {&(_ZTV9S19805C18[16]),  16,32},
  {&(_tg__ZTV8S19805C7__9S19805C18[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__9S19805C18[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A1__9S19805C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C18D0Ev,_ZThn12_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C18D1Ev,_ZThn12_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C18 = {  "S19805C18", // class name
  bases_S19805C18, 19,
  &(vtc_S19805C18[0]), // expected_vtbl_contents
  &(vtt_S19805C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19805C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19805C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C16  : virtual S19805C9 , virtual S7856C9_nt , virtual S19805C12 , S19805C18 {
  virtual  ~S19805C16(); // _ZN9S19805C16D2Ev
  S19805C16(); // tgen
};
//SIG(-1 S19805C16) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S19805C16 ::~S19805C16(){ note_dtor("S19805C16", this);}
S19805C16 ::S19805C16(){ note_ctor("S19805C16", this);} // tgen

static void Test_S19805C16()
{
  extern Class_Descriptor cd_S19805C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19805C16, buf);
    S19805C16 *dp, &lv = *(dp=new (buf) S19805C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19805C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C16)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C16");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C16");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(57,33), "S19805C16");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*), ABISELECT(57,33), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(32,16), "S19805C16");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(48,28), "S19805C16");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(48,28), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(72,40), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(64,36), "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(64,36), "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(64,36), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(88,48), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(80,44), "S19805C16");
    /*is_ambiguous_... S19805C16::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(80,44), "S19805C16");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(80,44), "S19805C16");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*), ABISELECT(80,44), "S19805C16");
    check_base_class_offset(lv, (S19805C9*), ABISELECT(32,16), "S19805C16");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(96,52), "S19805C16");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(96,52), "S19805C16");
    check_base_class_offset(lv, (S19805C12*), ABISELECT(96,52), "S19805C16");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*), ABISELECT(8,4), "S19805C16");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*), 0, "S19805C16");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*), 0, "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*), ABISELECT(16,8), "S19805C16");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*), ABISELECT(16,8), "S19805C16");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*), ABISELECT(24,12), "S19805C16");
    check_base_class_offset(lv, (S19805C18*), 0, "S19805C16");
    test_class_info(&lv, &cd_S19805C16);
    dp->~S19805C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C16(Test_S19805C16, "S19805C16", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19805C16C1Ev();
extern void _ZN9S19805C16D2Ev();
Name_Map name_map_S19805C16[] = {
  NSPAIR(_ZN9S19805C16C1Ev),
  NSPAIR(_ZN9S19805C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
static Base_Class bases_S19805C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19805C13,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19805C3,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19805C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C16[];
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19805C16D1Ev,_ZThn52_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19805C16D0Ev,_ZThn52_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C16[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C16[];
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C18__9S19805C16[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C18__A1__9S19805C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C18__A4__9S19805C16[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C18__A1__9S19805C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C18D1Ev,_ZThn44_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C18D0Ev,_ZThn44_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C18__9S19805C16[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C18__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C18__9S19805C16[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C16[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C16[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C16[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__9S19805C16[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C16[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C16[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C16[] = {
  {&(_ZTV9S19805C16[14]),  14,72},
  {&(_tg__ZTV9S19805C18__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C18__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C18__A4__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C18__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C18__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C18__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C18__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C18__9S19805C16[6]),  6,6},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[43]),  43,72},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[33]),  33,72},
  {&(_ZTV9S19805C16[49]),  49,72},
  {&(_ZTV9S19805C16[57]),  57,72},
  {&(_ZTV9S19805C16[70]),  70,72},
  {&(_ZTV9S19805C16[70]),  70,72},
  {&(_ZTV9S19805C16[22]),  22,72},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C9__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C16[8]),  8,10},
  {&(_tg__ZTV9S19805C10__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C3__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__9S19805C16[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C16[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C16[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C16[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C16[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D0Ev,_ZThn28_N8S19805C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19805C9D1Ev,_ZThn28_N8S19805C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C18D0Ev,_ZThn44_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C18D1Ev,_ZThn44_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C16D0Ev,_ZThn52_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C16D1Ev,_ZThn52_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C16 = {  "S19805C16", // class name
  bases_S19805C16, 36,
  &(vtc_S19805C16[0]), // expected_vtbl_contents
  &(vtt_S19805C16[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19805C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19805C16),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C16),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C15  : virtual S19805C10 , virtual S19805C16 {
  virtual  ~S19805C15(); // _ZN9S19805C15D2Ev
  S19805C15(); // tgen
};
//SIG(-1 S19805C15) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S19805C15 ::~S19805C15(){ note_dtor("S19805C15", this);}
S19805C15 ::S19805C15(){ note_ctor("S19805C15", this);} // tgen

static void Test_S19805C15()
{
  extern Class_Descriptor cd_S19805C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19805C15, buf);
    S19805C15 *dp, &lv = *(dp=new (buf) S19805C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19805C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C15)");
    /*is_ambiguous_... S19805C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C7::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), ABISELECT(17,9), "S19805C15");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(17,9), "S19805C15");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(17,9), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), 0, "S19805C15");
    check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), 0, "S19805C15");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), 0, "S19805C15");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), 0, "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C8*)(S19805C10*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), 0, "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), 0, "S19805C15");
    /*is_ambiguous_... S19805C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(16,8), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C7::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(8,4), "S19805C15");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(8,4), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(80,44), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(72,40), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(72,40), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(72,40), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(96,52), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(88,48), "S19805C15");
    /*is_ambiguous_... S19805C15::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(88,48), "S19805C15");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(88,48), "S19805C15");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C15");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(56,28), "S19805C15");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C15");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(104,56), "S19805C15");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(104,56), "S19805C15");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(104,56), "S19805C15");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(32,16), "S19805C15");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(40,20), "S19805C15");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(40,20), "S19805C15");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(48,24), "S19805C15");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(24,12), "S19805C15");
    check_base_class_offset(lv, (S19805C16*), ABISELECT(24,12), "S19805C15");
    test_class_info(&lv, &cd_S19805C15);
    dp->~S19805C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C15(Test_S19805C15, "S19805C15", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19805C15C1Ev();
extern void _ZN9S19805C15D2Ev();
Name_Map name_map_S19805C15[] = {
  NSPAIR(_ZN9S19805C15C1Ev),
  NSPAIR(_ZN9S19805C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
static Base_Class bases_S19805C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19805C13,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C15[];
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C15D1Ev,_ZThn56_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C15D0Ev,_ZThn56_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C15[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C15[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C15[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C15[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A4__9S19805C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C15[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C18D1Ev,_ZThn36_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C18D0Ev,_ZThn36_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C15[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C15[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C15[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C15[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19805C9D1Ev,_ZThn20_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19805C9D0Ev,_ZThn20_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A3__9S19805C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C15[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C15[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C15[] = {
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[25]),  25,90},
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[15]),  15,90},
  {&(_ZTV9S19805C15[42]),  42,90},
  {&(_ZTV9S19805C15[61]),  61,90},
  {&(_ZTV9S19805C15[67]),  67,90},
  {&(_ZTV9S19805C15[75]),  75,90},
  {&(_ZTV9S19805C15[88]),  88,90},
  {&(_ZTV9S19805C15[88]),  88,90},
  {&(_ZTV9S19805C15[50]),  50,90},
  {&(_tg__ZTV9S19805C10__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C15[4]),  4,4},
  {&(_tg__ZTV9S19805C16__9S19805C15[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A4__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C15[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C15[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C15[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C3__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A3__9S19805C15[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A1__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C15[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C15[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C15[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C15[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C15[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19805C9D0Ev,_ZThn20_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19805C9D1Ev,_ZThn20_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D0Ev,_ZThn44_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C16D1Ev,_ZThn44_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C18D0Ev,_ZThn36_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C18D1Ev,_ZThn36_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C15D0Ev,_ZThn56_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C15D1Ev,_ZThn56_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C15 = {  "S19805C15", // class name
  bases_S19805C15, 37,
  &(vtc_S19805C15[0]), // expected_vtbl_contents
  &(vtt_S19805C15[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19805C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19805C15),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C15),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C19  : S7856C15 , S19805C13 {
  virtual  ~S19805C19(); // _ZN9S19805C19D2Ev
  S19805C19(); // tgen
};
//SIG(-1 S19805C19) C1{ BC2{ m} BC3{ VBC2} vd}


 S19805C19 ::~S19805C19(){ note_dtor("S19805C19", this);}
S19805C19 ::S19805C19(){ note_ctor("S19805C19", this);} // tgen

static void Test_S19805C19()
{
  extern Class_Descriptor cd_S19805C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19805C19, buf);
    S19805C19 *dp, &lv = *(dp=new (buf) S19805C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19805C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C19)");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19805C19");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(8,4), "S19805C19");
    check_base_class_offset(lv, (S19805C13*), 0, "S19805C19");
    test_class_info(&lv, &cd_S19805C19);
    dp->~S19805C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C19(Test_S19805C19, "S19805C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19805C19C1Ev();
extern void _ZN9S19805C19D2Ev();
Name_Map name_map_S19805C19[] = {
  NSPAIR(_ZN9S19805C19C1Ev),
  NSPAIR(_ZN9S19805C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
static Base_Class bases_S19805C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19805C19[];
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY vtc_S19805C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S19805C19[];
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C19[] = {
  {&(_ZTV9S19805C19[3]),  3,5},
  {&(_tg__ZTV9S19805C13__9S19805C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
Class_Descriptor cd_S19805C19 = {  "S19805C19", // class name
  bases_S19805C19, 3,
  &(vtc_S19805C19[0]), // expected_vtbl_contents
  &(vtt_S19805C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19805C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19805C19),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C19),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  S19805C14  : S19805C10 , virtual S19805C3 , virtual S19805C15 , S19805C19 , S77C13_nt {
  int s19805c14f0;
  ~S19805C14(); // tgen
  S19805C14(); // tgen
};
//SIG(-1 S19805C14) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S19805C14 ::~S19805C14(){ note_dtor("S19805C14", this);} // tgen
S19805C14 ::S19805C14(){ note_ctor("S19805C14", this);} // tgen

static void Test_S19805C14()
{
  extern Class_Descriptor cd_S19805C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19805C14, buf);
    S19805C14 *dp, &lv = *(dp=new (buf) S19805C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19805C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C14)");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C14");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(28,16), "S19805C14");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(28,16), "S19805C14");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(28,16), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C12::S19805C5 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(8,4), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*), 0, "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(40,24), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*), ABISELECT(32,20), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(32,20), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(32,20), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(56,32), "S19805C14");
    check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(56,32), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(128,72), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(120,68), "S19805C14");
    /*is_ambiguous_... S19805C14::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(120,68), "S19805C14");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(120,68), "S19805C14");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(120,68), "S19805C14");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(104,56), "S19805C14");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C14");
    check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(136,76), "S19805C14");
    /*is_ambiguous_... S19805C12::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(136,76), "S19805C14");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(136,76), "S19805C14");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(80,44), "S19805C14");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C14");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C14");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(96,52), "S19805C14");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(72,40), "S19805C14");
    check_base_class_offset(lv, (S19805C15*), ABISELECT(48,28), "S19805C14");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S19805C19*), ABISELECT(16,8), "S19805C14");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19805C14");
    check_field_offset(lv, s19805c14f0, ABISELECT(24,12), "S19805C14.s19805c14f0");
    test_class_info(&lv, &cd_S19805C14);
    dp->~S19805C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C14(Test_S19805C14, "S19805C14", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN9S19805C14C1Ev();
extern void _ZN9S19805C14D1Ev();
Name_Map name_map_S19805C14[] = {
  NSPAIR(_ZN9S19805C14C1Ev),
  NSPAIR(_ZN9S19805C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19805C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19805C7,    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
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C10,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19805C13,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S19805C13,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S19805C14[];
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C14D1Ev,_ZThn32_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C14D0Ev,_ZThn32_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C14[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C14[];
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__A__9S19805C14[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C14[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C14[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C19__A1__9S19805C14[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A2__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C14[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__9S19805C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__9S19805C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__9S19805C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__9S19805C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__9S19805C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A3__9S19805C14[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C14[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C14[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C14[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C14[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C14[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C14[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C14[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C14[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A4__9S19805C14[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__9S19805C14[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__9S19805C14[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__9S19805C14[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C14[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTT_ENTRY vtt_S19805C14[] = {
  {&(_ZTV9S19805C14[16]),  16,114},
  {&(_tg__ZTV9S19805C10__A__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C14[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C19__A1__9S19805C14[3]),  3,3},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[27]),  27,114},
  {&(_ZTV9S19805C14[43]),  43,114},
  {&(_ZTV9S19805C14[53]),  53,114},
  {&(_ZTV9S19805C14[70]),  70,114},
  {&(_ZTV9S19805C14[89]),  89,114},
  {&(_ZTV9S19805C14[99]),  99,114},
  {&(_ZTV9S19805C14[112]),  112,114},
  {&(_ZTV9S19805C14[112]),  112,114},
  {&(_ZTV9S19805C14[78]),  78,114},
  {&(_ZTV9S19805C14[21]),  21,114},
  {&(_tg__ZTV8S19805C8__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C5__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C3__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A2__9S19805C14[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV9S19805C16__9S19805C15__9S19805C14[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C10__A1__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__A1__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A3__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C16__9S19805C14[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C14[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C14[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C14[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C7__A2__9S19805C14[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A4__9S19805C14[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C14[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C12__9S19805C14[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__9S19805C14[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__9S19805C14[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__9S19805C14[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D0Ev,_ZThn48_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn28_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C15D1Ev,_ZThn48_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn28_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D0Ev,_ZThn12_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19805C15D1Ev,_ZThn12_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C14D0Ev,_ZThn32_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C14D1Ev,_ZThn32_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C14 = {  "S19805C14", // class name
  bases_S19805C14, 48,
  &(vtc_S19805C14[0]), // expected_vtbl_contents
  &(vtt_S19805C14[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI9S19805C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19805C14),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C14),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C11  : S19805C12 , S19805C14 , virtual S77C13_nt {
  ~S19805C11(); // tgen
  S19805C11(); // tgen
};
//SIG(-1 S19805C11) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} VBC6{ m}} VBC7{ VBC5} VBC8{ BC6 BC5 BC3 Fi} BC6 VBC9{ VBC4 VBC5 VBC10{ BC4 VBC3 VBC5} BC6 BC11{ BC5 VBC4 VBC6 BC3 VBC10 vd} vd} vd Fi} BC12{ BC9 VBC8 VBC13{ VBC9 VBC14{ VBC15{ VBC9 VBC8 VBC11 vd Fi[2]} VBC16{ m} VBC2 BC17{ VBC11 BC8 BC10 BC6 vd} vd} vd} BC18{ BC5 BC7 vd} BC19{ m} Fi} VBC19}


S19805C11 ::~S19805C11(){ note_dtor("S19805C11", this);} // tgen
S19805C11 ::S19805C11(){ note_ctor("S19805C11", this);} // tgen

static void Test_S19805C11()
{
  extern Class_Descriptor cd_S19805C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,24)];
    init_test(&cd_S19805C11, buf);
    S19805C11 *dp, &lv = *(dp=new (buf) S19805C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,92), "sizeof(S19805C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C11)");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C11");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(44,24), "S19805C11");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(44,24), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), 0, "S19805C11");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*)(S19805C14*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(56,32), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C14*), ABISELECT(48,28), "S19805C11");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(48,28), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(72,40), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(64,36), "S19805C11");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(64,36), "S19805C11");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(64,36), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C12*), 0, "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(24,12), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(144,80), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(136,76), "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(136,76), "S19805C11");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(136,76), "S19805C11");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(136,76), "S19805C11");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(120,64), "S19805C11");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C11");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(152,84), "S19805C11");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(152,84), "S19805C11");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(96,52), "S19805C11");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(104,56), "S19805C11");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(104,56), "S19805C11");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(112,60), "S19805C11");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(88,48), "S19805C11");
    check_base_class_offset(lv, (S19805C15*)(S19805C14*), ABISELECT(80,44), "S19805C11");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S19805C19*)(S19805C14*), ABISELECT(32,16), "S19805C11");
    check_base_class_offset(lv, (S77C13_nt*)(S19805C14*), ABISELECT(16,8), "S19805C11");
    check_base_class_offset(lv, (S19805C14*), ABISELECT(16,8), "S19805C11");
    /*is_ambiguous_... S19805C11::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*), 0, "S19805C11");
    test_class_info(&lv, &cd_S19805C11);
    dp->~S19805C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C11(Test_S19805C11, "S19805C11", ABISELECT(168,92));

#else // __cplusplus

extern void _ZN9S19805C11C1Ev();
extern void _ZN9S19805C11D1Ev();
Name_Map name_map_S19805C11[] = {
  NSPAIR(_ZN9S19805C11C1Ev),
  NSPAIR(_ZN9S19805C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C14;
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19805C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(80,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
    3, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(44,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19805C5,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(48,28), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    ABISELECT(80,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_S19805C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(64,36), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19805C12,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C24,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    24, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    29, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(136,76), //bcp->offset
    110, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(120,64), //bcp->offset
    97, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7856C24,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(152,84), //bcp->offset
    120, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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
    39, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    38, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(104,56), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    43, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(88,48), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(80,44), //bcp->offset
    56, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    48, //immediately_derived
  0, 0},
  {&cd_S19805C13,    ABISELECT(32,16), //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
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(32,16), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    50, //immediately_derived
  0, 0},
  {&cd_S19805C14,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S19805C11[];
extern void _ZN9S19805C11D1Ev();
extern void _ZN9S19805C11D0Ev();
extern void ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn36_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn36_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19805C11D1Ev,_ZThn48_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19805C11D0Ev,_ZThn48_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C11D1Ev,_ZThn76_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C11D0Ev,_ZThn76_N9S19805C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn84_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn84_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C11[] = {
  0,
  ABISELECT(152,84),
  0,
  ABISELECT(136,76),
  ABISELECT(120,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&_ZN9S19805C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev),
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  ABISELECT(-120,-64),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19805C11[];
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A__9S19805C11[] = {
  ABISELECT(80,44),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(44,24),
  0,
  ABISELECT(80,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C12D1Ev,_ZThn36_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C12D0Ev,_ZThn36_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C14__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,76),
  ABISELECT(-16,-8),
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(48,28),
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C109S19805C14__A3__9S19805C11[] = {
  ABISELECT(28,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C14__9S19805C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C199S19805C14__A1__9S19805C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C14__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C14__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C14__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C14__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C14__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C14__9S19805C11[] = {
  ABISELECT(-120,-68),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C14__9S19805C11[] = {
  ABISELECT(-136,-76),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C14__9S19805C11[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C14__9S19805C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__9S19805C11[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A1__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C11[] = {
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  ABISELECT(-32,-16),
  ABISELECT(40,20),
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__9S19805C11[] = {
  ABISELECT(16,8),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__9S19805C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__9S19805C11[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn32_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn32_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__9S19805C11[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15__9S19805C11[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(64,36),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C11[] = {
  ABISELECT(-44,-24),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C11[] = {
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__9S19805C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__9S19805C11[] = {
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C16__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__9S19805C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__9S19805C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16__9S19805C11[] = {
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-24,-12),
  ABISELECT(-60,-32),
  ABISELECT(-104,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C11[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  ABISELECT(-40,-20),
  ABISELECT(-76,-40),
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__9S19805C11[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C9__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__9S19805C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C11[] = {
  ABISELECT(-136,-76),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A4__9S19805C11[] = {
  ABISELECT(-92,-52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__9S19805C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-104,-56),
  ABISELECT(-152,-84),
  ABISELECT(-108,-60),
  ABISELECT(-152,-84),
  ABISELECT(-72,-40),
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[] = {
  ABISELECT(-80,-44),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-80,-44),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12__A1__9S19805C11[] = {
  0,
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A1__9S19805C11[] = {
  -4,
  ABISELECT(-48,-28),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A1__9S19805C11[] = {
  ABISELECT(88,48),
  ABISELECT(-64,-36),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-64,-36),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTT_ENTRY vtt_S19805C11[] = {
  {&(_ZTV9S19805C11[17]),  17,133},
  {&(_tg__ZTV9S19805C12__A__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C12__A__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C109S19805C14__A1__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C109S19805C14__A1__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C109S19805C14__A3__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C14__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C14__9S19805C11[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C199S19805C14__A1__9S19805C11[3]),  3,3},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV8S19805C3__9S19805C14__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C14__9S19805C11[16]),  16,18},
  {&(_tg__ZTV9S19805C10__A1__9S19805C14__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C16__9S19805C14__9S19805C11[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C14__9S19805C11[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C14__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C14__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C14__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C14__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C14__9S19805C11[3]),  3,5},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[17]),  17,133},
  {&(_ZTV9S19805C11[46]),  46,133},
  {&(_ZTV9S19805C11[54]),  54,133},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[35]),  35,133},
  {&(_ZTV9S19805C11[72]),  72,133},
  {&(_ZTV9S19805C11[89]),  89,133},
  {&(_ZTV9S19805C11[108]),  108,133},
  {&(_ZTV9S19805C11[118]),  118,133},
  {&(_ZTV9S19805C11[131]),  131,133},
  {&(_ZTV9S19805C11[97]),  97,133},
  {&(_ZTV9S19805C11[40]),  40,133},
  {&(_tg__ZTV8S19805C5__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C13__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A2__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV9S19805C16__9S19805C15__9S19805C11[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__9S19805C11[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C15__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C16__9S19805C11[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A5__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C3__9S19805C16__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__9S19805C11[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__9S19805C11[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C16__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C11[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C9__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C3__8S19805C9__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C7__A2__9S19805C11[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A4__9S19805C11[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__A2__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A1__9S19805C11[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C12__A1__9S19805C11[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12__A1__9S19805C11[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A1__9S19805C11[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__9S19805C11[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19805C11[];
extern  VTBL_ENTRY _ZTV9S19805C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C11[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D0Ev,_ZThn28_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C16D1Ev,_ZThn28_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D0Ev,_ZThn36_N9S19805C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C16D1Ev,_ZThn36_N9S19805C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D0Ev,_ZThn28_N9S19805C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C18D1Ev,_ZThn28_N9S19805C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D0Ev,_ZThn32_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19805C15D1Ev,_ZThn32_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D0Ev,_ZThn40_N9S19805C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C15D1Ev,_ZThn40_N9S19805C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn76_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn76_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D0Ev,_ZThn40_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19805C14D1Ev,_ZThn40_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D0Ev,_ZThn68_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn28_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C14D1Ev,_ZThn68_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn28_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C12D0Ev,_ZThn36_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C12D1Ev,_ZThn36_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn84_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn84_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C11D0Ev,_ZThn48_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19805C11D1Ev,_ZThn48_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C11D0Ev,_ZThn76_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn36_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C11D1Ev,_ZThn76_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn36_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C11 = {  "S19805C11", // class name
  bases_S19805C11, 52,
  &(vtc_S19805C11[0]), // expected_vtbl_contents
  &(vtt_S19805C11[0]), // expected_vtt_contents
  ABISELECT(168,92), // object size
  NSPAIRA(_ZTI9S19805C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19805C11),133, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19805C11),101, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19805C1  : virtual S7856C24 , S19805C3 , virtual S19805C7 , virtual S19805C9 , S19805C11 {
  ~S19805C1(); // tgen
  S19805C1(); // tgen
};
//SIG(1 S19805C1) C1{ VBC2{ m} BC3{ BC2 BC4{ m} BC5{ VBC6{ m} BC4 VBC2} Fi} VBC7{ BC4 VBC6 VBC2 BC5 VBC8{ BC6 VBC5 VBC4} vd} VBC9{ VBC10{ VBC6 VBC4 VBC8 BC2 BC7 vd} VBC3 VBC7 vd Fi[2]} BC11{ BC12{ VBC5 VBC13{ VBC4} VBC3 BC2 VBC10 vd Fi} BC14{ BC10 VBC3 VBC15{ VBC10 VBC16{ VBC9 VBC17{ m} VBC12 BC18{ VBC7 BC3 BC8 BC2 vd} vd} vd} BC19{ BC4 BC13 vd} BC20{ m} Fi} VBC20}}


S19805C1 ::~S19805C1(){ note_dtor("S19805C1", this);} // tgen
S19805C1 ::S19805C1(){ note_ctor("S19805C1", this);} // tgen

static void Test_S19805C1()
{
  extern Class_Descriptor cd_S19805C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S19805C1, buf);
    S19805C1 *dp, &lv = *(dp=new (buf) S19805C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S19805C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19805C1)");
    /*is_ambiguous_... S19805C1::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(60,32), "S19805C1");
    check_base_class_offset(lv, (S7856C24*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(60,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(8,4), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), 0, "S19805C1");
    check_base_class_offset(lv, (S7856C12*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*), ABISELECT(72,36), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C5 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C12*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C13 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C13*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(73,37), "S19805C1");
    check_base_class_offset(lv, (S7856C15*)(S19805C13*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(73,37), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C9::S19805C7 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C9*), ABISELECT(64,32), "S19805C1");
    check_base_class_offset(lv, (S19805C7*)(S19805C18*)(S19805C16*), ABISELECT(64,32), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*), ABISELECT(104,56), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*), ABISELECT(96,52), "S19805C1");
    check_base_class_offset(lv, (S19805C10*)(S19805C9*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*)(S19805C11*), ABISELECT(96,52), "S19805C1");
    check_base_class_offset(lv, (S19805C10*)(S19805C15*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C12*), ABISELECT(96,52), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*), ABISELECT(120,64), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C3*), ABISELECT(112,60), "S19805C1");
    check_base_class_offset(lv, (S19805C3*)(S19805C9*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*)(S19805C11*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C3 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C14*)(S19805C11*), ABISELECT(112,60), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C3*)(S19805C12*), ABISELECT(112,60), "S19805C1");
    check_base_class_offset(lv, (S19805C9*), ABISELECT(80,40), "S19805C1");
    check_base_class_offset(lv, (S19805C9*)(S19805C16*), ABISELECT(80,40), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C13*)(S19805C12*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C11::S19805C12 */ AMB_check_base_class_offset(lv, (S19805C12*)(S19805C11*), ABISELECT(16,8), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(40,20), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C5*)(S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C7*)(S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C14::S19805C10 */ AMB_check_base_class_offset(lv, (S19805C10*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19805C16*), 0, "S19805C1");
    /*is_ambiguous_... S19805C1::S19805C12 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C12*), ABISELECT(168,88), "S19805C1");
    check_base_class_offset(lv, (S19805C12*)(S19805C16*), ABISELECT(168,88), "S19805C1");
    /*is_ambiguous_... S19805C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    /*is_ambiguous_... S19805C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(144,76), "S19805C1");
    check_base_class_offset(lv, (S7856C15*)(S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C5*)(S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C3*)(S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(152,80), "S19805C1");
    /*is_ambiguous_... S19805C18::S19805C8 */ AMB_check_base_class_offset(lv, (S19805C8*)(S19805C18*)(S19805C16*), ABISELECT(152,80), "S19805C1");
    /*is_ambiguous_... S19805C18::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19805C18*)(S19805C16*), ABISELECT(160,84), "S19805C1");
    check_base_class_offset(lv, (S19805C18*)(S19805C16*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C16*)(S19805C15*), ABISELECT(136,72), "S19805C1");
    check_base_class_offset(lv, (S19805C15*)(S19805C14*)(S19805C11*), ABISELECT(128,68), "S19805C1");
    /*is_ambiguous_... S19805C19::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S19805C13*)(S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S19805C19*)(S19805C14*)(S19805C11*), ABISELECT(48,24), "S19805C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    check_base_class_offset(lv, (S19805C14*)(S19805C11*), ABISELECT(32,16), "S19805C1");
    /*is_ambiguous_... S19805C11::S77C13_nt */ AMB_check_base_class_offset(lv, (S77C13_nt*)(S19805C11*), 0, "S19805C1");
    check_base_class_offset(lv, (S19805C11*), ABISELECT(16,8), "S19805C1");
    test_class_info(&lv, &cd_S19805C1);
    dp->~S19805C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19805C1(Test_S19805C1, "S19805C1", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S19805C1C1Ev();
extern void _ZN8S19805C1D1Ev();
Name_Map name_map_S19805C1[] = {
  NSPAIR(_ZN8S19805C1C1Ev),
  NSPAIR(_ZN8S19805C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S19805C9;
extern VTBL_ENTRY _ZTI8S19805C9[];
extern  VTBL_ENTRY _ZTV8S19805C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C9[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C7;
extern VTBL_ENTRY _ZTI8S19805C7[];
extern  VTBL_ENTRY _ZTV8S19805C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C7[];
extern Class_Descriptor cd_S19805C10;
extern VTBL_ENTRY _ZTI9S19805C10[];
extern  VTBL_ENTRY _ZTV9S19805C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C10[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C12;
extern VTBL_ENTRY _ZTI9S19805C12[];
extern  VTBL_ENTRY _ZTV9S19805C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C5;
extern VTBL_ENTRY _ZTI8S19805C5[];
extern  VTBL_ENTRY _ZTV8S19805C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C5[];
extern Class_Descriptor cd_S19805C3;
extern VTBL_ENTRY _ZTI8S19805C3[];
extern  VTBL_ENTRY _ZTV8S19805C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19805C8;
extern VTBL_ENTRY _ZTI8S19805C8[];
extern  VTBL_ENTRY _ZTV8S19805C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19805C18;
extern VTBL_ENTRY _ZTI9S19805C18[];
extern  VTBL_ENTRY _ZTV9S19805C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C18[];
extern Class_Descriptor cd_S19805C16;
extern VTBL_ENTRY _ZTI9S19805C16[];
extern  VTBL_ENTRY _ZTV9S19805C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C16[];
extern Class_Descriptor cd_S19805C15;
extern VTBL_ENTRY _ZTI9S19805C15[];
extern  VTBL_ENTRY _ZTV9S19805C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19805C13;
extern VTBL_ENTRY _ZTI9S19805C13[];
extern  VTBL_ENTRY _ZTV9S19805C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C13[];
extern Class_Descriptor cd_S19805C19;
extern VTBL_ENTRY _ZTI9S19805C19[];
extern  VTBL_ENTRY _ZTV9S19805C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C19[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C14;
extern VTBL_ENTRY _ZTI9S19805C14[];
extern  VTBL_ENTRY _ZTV9S19805C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C14[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19805C11;
extern VTBL_ENTRY _ZTI9S19805C11[];
extern  VTBL_ENTRY _ZTV9S19805C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19805C11[];
static Base_Class bases_S19805C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19805C5,    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
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19805C3,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(73,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19805C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19805C7,    ABISELECT(64,32), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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_S19805C5,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19805C7,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19805C10,    ABISELECT(96,52), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    25, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(112,60), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19805C9,    ABISELECT(80,40), //bcp->offset
    71, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19805C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    30, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    34, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19805C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19805C10,    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
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7856C24,    ABISELECT(168,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
    39, //immediately_derived
  0, 0},
  {&cd_S19805C12,    ABISELECT(168,88), //bcp->offset
    139, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    43, //immediately_derived
  0, 0},
  {&cd_S19805C5,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19805C3,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,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
    46, //immediately_derived
  0, 0},
  {&cd_S19805C8,    ABISELECT(152,80), //bcp->offset
    133, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(160,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
    48, //immediately_derived
  0, 0},
  {&cd_S19805C18,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19805C16,    ABISELECT(136,72), //bcp->offset
    116, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19805C15,    ABISELECT(128,68), //bcp->offset
    98, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    53, //immediately_derived
  0, 0},
  {&cd_S19805C13,    ABISELECT(48,24), //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
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19805C19,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19805C14,    ABISELECT(32,16), //bcp->offset
    38, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S19805C11,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19805C1[];
extern void _ZN8S19805C1D1Ev();
extern void _ZN8S19805C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19805C1D1Ev,_ZThn8_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C1D0Ev,_ZThn8_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19805C1D1Ev,_ZThn16_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19805C1D0Ev,_ZThn16_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19805C1D1Ev,_ZThn24_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19805C1D0Ev,_ZThn24_N8S19805C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19805C1D1Ev,_ZThn32_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19805C1D0Ev,_ZThn32_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19805C1D1Ev,_ZThn40_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19805C1D0Ev,_ZThn40_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19805C1D1Ev,_ZThn52_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19805C1D0Ev,_ZThn52_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19805C1D1Ev,_ZThn68_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19805C1D0Ev,_ZThn68_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19805C1D1Ev,_ZThn72_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19805C1D0Ev,_ZThn72_N8S19805C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19805C1D1Ev,_ZThn88_N8S19805C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19805C1D0Ev,_ZThn88_N8S19805C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19805C1[] = {
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(136,72),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(112,60),
  ABISELECT(96,52),
  ABISELECT(80,40),
  ABISELECT(73,37),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&_ZN8S19805C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(64,32),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19805C1D1Ev,_ZThn8_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19805C1D0Ev,_ZThn8_N8S19805C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19805C1D1Ev,_ZThn16_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19805C1D0Ev,_ZThn16_N8S19805C1D0Ev),
  ABISELECT(25,13),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19805C1D1Ev,_ZThn24_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19805C1D0Ev,_ZThn24_N8S19805C1D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev),
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev),
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19805C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19805C1[];
static  VTBL_ENTRY _tg__ZTV8S19805C3__A__8S19805C1[] = {
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__8S19805C1[] = {
  ABISELECT(60,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN9S19805C11D1Ev();
extern void _ZN9S19805C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(48,24),
  ABISELECT(64,32),
  ABISELECT(120,64),
  ABISELECT(112,60),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&_ZN9S19805C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C11D0Ev,
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(96,52),
  0,
  ABISELECT(44,24),
  ABISELECT(-16,-8),
  ABISELECT(64,32),
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C12D1Ev,_ZThn44_N9S19805C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C12D0Ev,_ZThn44_N9S19805C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C129S19805C11__8S19805C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
extern void _ZN9S19805C14D1Ev();
extern void _ZN9S19805C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&_ZN9S19805C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C14D0Ev,
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C109S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[] = {
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C109S19805C149S19805C11__A5__8S19805C1[] = {
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
extern void _ZN9S19805C19D1Ev();
extern void _ZN9S19805C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C19[0]),
  (VTBL_ENTRY)&_ZN9S19805C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19805C139S19805C199S19805C149S19805C11__A1__8S19805C1[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn24_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn24_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19805C14D1Ev,_ZThn52_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19805C14D0Ev,_ZThn52_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__A1__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C14D1Ev,_ZThn16_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C14D0Ev,_ZThn16_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn72_N9S19805C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn72_N9S19805C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
};
extern void ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C19__9S19805C149S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D1Ev,_ZThn8_N9S19805C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C14D0Ev,_ZThn8_N9S19805C14D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn32_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn32_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C11__8S19805C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C11__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C11__8S19805C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C14__9S19805C11__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(48,24),
  ABISELECT(104,56),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(41,21),
  ABISELECT(48,24),
  ABISELECT(48,24),
  ABISELECT(28,16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D1Ev,_ZThn8_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19805C11D0Ev,_ZThn8_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19805C11D1Ev,_ZThn60_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19805C11D0Ev,_ZThn60_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C15__9S19805C11__8S19805C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C11__8S19805C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19805C11D1Ev,_ZThn24_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19805C11D0Ev,_ZThn24_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19805C7__A2__9S19805C11__8S19805C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn80_N9S19805C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn80_N9S19805C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__9S19805C11__8S19805C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
};
extern void ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C199S19805C14__9S19805C11__8S19805C1[] = {
  ABISELECT(25,13),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D1Ev,_ZThn16_N9S19805C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19805C11D0Ev,_ZThn16_N9S19805C11D0Ev),
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C7__8S19805C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C7__A1__8S19805C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C7__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__A2__8S19805C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
extern void _ZN8S19805C9D1Ev();
extern void _ZN8S19805C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C9__8S19805C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&_ZN8S19805C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C9D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C9__8S19805C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__8S19805C9__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__8S19805C9__8S19805C1[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19805C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev),
};
extern void _ZN9S19805C10D1Ev();
extern void _ZN9S19805C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C10__8S19805C1[] = {
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
  (VTBL_ENTRY)&_ZN9S19805C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C10D0Ev,
};
extern void _ZN8S19805C7D1Ev();
extern void _ZN8S19805C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19805C79S19805C10__A1__8S19805C1[] = {
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
  (VTBL_ENTRY)&_ZN8S19805C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19805C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C79S19805C10__A3__8S19805C1[] = {
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19805C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C10__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19805C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__A1__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C3__A4__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__8S19805C1[] = {
  ABISELECT(57,29),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C13[0]),
};
extern void _ZN9S19805C15D1Ev();
extern void _ZN9S19805C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C15__8S19805C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  ABISELECT(-68,-36),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&_ZN9S19805C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C15D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C15__8S19805C1[] = {
  ABISELECT(32,16),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C15__8S19805C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C16__9S19805C15__8S19805C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C15__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C15__8S19805C1[] = {
  ABISELECT(64,36),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D1Ev,_ZTv0_n32_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C15D0Ev,_ZTv0_n32_N9S19805C15D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C15__8S19805C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C15__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19805C15[0]),
};
extern void _ZN9S19805C16D1Ev();
extern void _ZN9S19805C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C16__8S19805C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(32,16),
  ABISELECT(-136,-72),
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&_ZN9S19805C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C16D0Ev,
};
extern void _ZN9S19805C18D1Ev();
extern void _ZN9S19805C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-72,-40),
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&_ZN9S19805C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C39S19805C189S19805C16__A2__8S19805C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A6__8S19805C1[] = {
  ABISELECT(-76,-40),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C189S19805C16__A1__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__8S19805C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19805C8[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(72,40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D1Ev,_ZTv0_n32_N9S19805C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C18D0Ev,_ZTv0_n32_N9S19805C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__A__9S19805C189S19805C16__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C9__9S19805C16__8S19805C1[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C16__8S19805C1[] = {
  ABISELECT(40,20),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C16__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19805C7__A1__9S19805C16__8S19805C1[] = {
  ABISELECT(72,40),
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-4,0),
  ABISELECT(-64,-32),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D1Ev,_ZTv0_n32_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C16D0Ev,_ZTv0_n32_N9S19805C16D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19805C12__9S19805C16__8S19805C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C16__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C89S19805C18__A1__9S19805C16__8S19805C1[] = {
  ABISELECT(-79,-43),
  ABISELECT(-72,-40),
  ABISELECT(-92,-48),
  ABISELECT(-152,-80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19805C16[0]),
};
extern void _ZN9S19805C12D1Ev();
extern void _ZN9S19805C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-152,-80),
  ABISELECT(-108,-56),
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  ABISELECT(-95,-51),
  0,
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&_ZN9S19805C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19805C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(-20,-8),
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19805C13__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(57,29),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19805C3__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19805C10__9S19805C12__A1__8S19805C1[] = {
  ABISELECT(72,36),
  ABISELECT(-23,-15),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-36,-20),
  ABISELECT(-96,-52),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19805C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev),
};
static  VTT_ENTRY vtt_S19805C1[] = {
  {&(_ZTV8S19805C1[17]),  17,152},
  {&(_tg__ZTV8S19805C3__A__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C11__8S19805C1[17]),  17,19},
  {&(_tg__ZTV9S19805C129S19805C11__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C129S19805C11__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C3__9S19805C129S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C129S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C129S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C149S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C109S19805C149S19805C11__A1__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C109S19805C149S19805C11__A5__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C109S19805C149S19805C11__A2__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C109S19805C149S19805C11__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C149S19805C11__8S19805C1[3]),  3,5},
  {&(_tg__ZTV9S19805C139S19805C199S19805C149S19805C11__A1__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C149S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C15__9S19805C149S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C10__A1__9S19805C149S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C16__9S19805C149S19805C11__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C149S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C149S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C149S19805C11__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C149S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C19__9S19805C149S19805C11__8S19805C1[3]),  3,5},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C11__8S19805C1[17]),  17,19},
  {&(_tg__ZTV8S19805C3__9S19805C11__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C14__9S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C15__9S19805C11__8S19805C1[16]),  16,18},
  {&(_tg__ZTV9S19805C16__9S19805C11__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C7__A2__9S19805C11__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__A1__9S19805C11__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C11__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C199S19805C14__9S19805C11__8S19805C1[3]),  3,5},
  {&(_ZTV8S19805C1[69]),  69,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[82]),  82,152},
  {&(_ZTV8S19805C1[92]),  92,152},
  {&(_ZTV8S19805C1[98]),  98,152},
  {&(_ZTV8S19805C1[36]),  36,152},
  {&(_ZTV8S19805C1[36]),  36,152},
  {&(_ZTV8S19805C1[54]),  54,152},
  {&(_ZTV8S19805C1[114]),  114,152},
  {&(_ZTV8S19805C1[131]),  131,152},
  {&(_ZTV8S19805C1[150]),  150,152},
  {&(_ZTV8S19805C1[139]),  139,152},
  {&(_ZTV8S19805C1[59]),  59,152},
  {&(_tg__ZTV8S19805C7__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C7__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C7__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C7__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C5__A2__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV9S19805C10__8S19805C9__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C9__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C3__8S19805C9__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__8S19805C9__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C10__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C79S19805C10__A1__8S19805C1[7]),  7,9},
  {&(_tg__ZTV8S19805C58S19805C79S19805C10__A3__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__8S19805C79S19805C10__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C10__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C3__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C3__A4__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C13__8S19805C1[3]),  3,3},
  {&(_tg__ZTV9S19805C15__8S19805C1[15]),  15,17},
  {&(_tg__ZTV9S19805C10__9S19805C15__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C16__9S19805C15__8S19805C1[15]),  15,17},
  {&(_tg__ZTV8S19805C9__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C15__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C15__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C15__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C15__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__9S19805C15__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C16__8S19805C1[14]),  14,16},
  {&(_tg__ZTV9S19805C189S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C39S19805C189S19805C16__A2__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C58S19805C39S19805C189S19805C16__A6__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C89S19805C189S19805C16__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C5__8S19805C89S19805C189S19805C16__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__9S19805C189S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C8__A__9S19805C189S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C10__9S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C9__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV8S19805C3__9S19805C16__8S19805C1[4]),  4,4},
  {&(_tg__ZTV8S19805C7__A1__9S19805C16__8S19805C1[8]),  8,10},
  {&(_tg__ZTV9S19805C12__9S19805C16__8S19805C1[11]),  11,13},
  {&(_tg__ZTV9S19805C13__9S19805C16__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C89S19805C18__A1__9S19805C16__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C12__A1__8S19805C1[10]),  10,12},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[6]),  6,6},
  {&(_tg__ZTV9S19805C13__9S19805C12__A1__8S19805C1[3]),  3,3},
  {&(_tg__ZTV8S19805C3__9S19805C12__A1__8S19805C1[4]),  4,4},
  {&(_tg__ZTV9S19805C10__9S19805C12__A1__8S19805C1[8]),  8,10},
  {&(_tg__ZTV8S19805C8__9S19805C12__A1__8S19805C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S19805C1[];
extern  VTBL_ENTRY _ZTV8S19805C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19805C1[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D0Ev,_ZTv0_n44_N9S19805C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D0Ev,_ZThn16_N9S19805C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C16D1Ev,_ZTv0_n44_N9S19805C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C16D1Ev,_ZThn16_N9S19805C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D0Ev,_ZTv0_n44_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D0Ev,_ZThn20_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C15D1Ev,_ZTv0_n44_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19805C15D1Ev,_ZThn20_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D0Ev,_ZTv0_n60_N9S19805C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D0Ev,_ZThn4_N9S19805C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C15D1Ev,_ZTv0_n60_N9S19805C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19805C15D1Ev,_ZThn4_N9S19805C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D0Ev,_ZTv0_n32_N8S19805C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D0Ev,_ZThn12_N8S19805C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C9D1Ev,_ZTv0_n32_N8S19805C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19805C9D1Ev,_ZThn12_N8S19805C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D0Ev,_ZTv0_n60_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D0Ev,_ZThn64_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C11D1Ev,_ZTv0_n60_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19805C11D1Ev,_ZThn64_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D0Ev,_ZTv0_n64_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19805C11D0Ev,_ZThn60_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C11D1Ev,_ZTv0_n64_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19805C11D1Ev,_ZThn60_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D0Ev,_ZTv0_n32_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C11D0Ev,_ZThn24_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D0Ev,_ZThn44_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C11D1Ev,_ZTv0_n32_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C11D1Ev,_ZThn24_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C11D1Ev,_ZThn44_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D0Ev,_ZTv0_n44_N9S19805C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D0Ev,_ZThn80_N9S19805C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D0Ev,_ZThn32_N9S19805C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C11D1Ev,_ZTv0_n44_N9S19805C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19805C11D1Ev,_ZThn80_N9S19805C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C11D1Ev,_ZThn32_N9S19805C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D0Ev,_ZTv0_n60_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D0Ev,_ZThn56_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19805C14D1Ev,_ZTv0_n60_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19805C14D1Ev,_ZThn56_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D0Ev,_ZTv0_n32_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C14D0Ev,_ZThn16_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D0Ev,_ZThn36_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C14D1Ev,_ZTv0_n32_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19805C14D1Ev,_ZThn16_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19805C14D1Ev,_ZThn36_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D0Ev,_ZTv0_n64_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C14D0Ev,_ZThn52_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S19805C14D1Ev,_ZTv0_n64_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19805C14D1Ev,_ZThn52_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D0Ev,_ZTv0_n44_N9S19805C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D0Ev,_ZThn72_N9S19805C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D0Ev,_ZThn24_N9S19805C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19805C14D1Ev,_ZTv0_n44_N9S19805C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19805C14D1Ev,_ZThn72_N9S19805C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19805C14D1Ev,_ZThn24_N9S19805C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D0Ev,_ZTv0_n32_N9S19805C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C12D0Ev,_ZThn44_N9S19805C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19805C12D1Ev,_ZTv0_n32_N9S19805C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19805C12D1Ev,_ZThn44_N9S19805C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19805C1D0Ev,_ZTv0_n60_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19805C1D0Ev,_ZThn72_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19805C1D1Ev,_ZTv0_n60_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19805C1D1Ev,_ZThn72_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19805C1D0Ev,_ZTv0_n64_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19805C1D0Ev,_ZThn68_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19805C1D1Ev,_ZTv0_n64_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19805C1D1Ev,_ZThn68_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19805C1D0Ev,_ZTv0_n44_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19805C1D0Ev,_ZThn88_N8S19805C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19805C1D0Ev,_ZThn40_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19805C1D1Ev,_ZTv0_n44_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19805C1D1Ev,_ZThn88_N8S19805C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19805C1D1Ev,_ZThn40_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C1D0Ev,_ZTv0_n32_N8S19805C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19805C1D0Ev,_ZThn52_N8S19805C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19805C1D0Ev,_ZThn32_N8S19805C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19805C1D1Ev,_ZTv0_n32_N8S19805C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19805C1D1Ev,_ZThn52_N8S19805C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19805C1D1Ev,_ZThn32_N8S19805C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19805C1 = {  "S19805C1", // class name
  bases_S19805C1, 58,
  &(vtc_S19805C1[0]), // expected_vtbl_contents
  &(vtt_S19805C1[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S19805C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19805C1),152, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19805C1),118, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7488C6  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7488C6(); // tgen
  S7488C6(); // tgen
};
//SIG(-1 S7488C6) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7488C6 ::~S7488C6(){ note_dtor("S7488C6", this);} // tgen
S7488C6 ::S7488C6(){ note_ctor("S7488C6", this);} // tgen

static void Test_S7488C6()
{
  extern Class_Descriptor cd_S7488C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7488C6, buf);
    S7488C6 *dp, &lv = *(dp=new (buf) S7488C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7488C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C6)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7488C6");
    check_base_class_offset(lv, (S7856C15*), 0, "S7488C6");
    check_base_class_offset(lv, (S7856C12*), 0, "S7488C6");
    test_class_info(&lv, &cd_S7488C6);
    dp->~S7488C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C6(Test_S7488C6, "S7488C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7488C6C1Ev();
extern void _ZN7S7488C6D1Ev();
Name_Map name_map_S7488C6[] = {
  NSPAIR(_ZN7S7488C6C1Ev),
  NSPAIR(_ZN7S7488C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7488C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7488C6[];
static  VTBL_ENTRY vtc_S7488C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
extern VTBL_ENTRY _ZTV7S7488C6[];
static  VTT_ENTRY vtt_S7488C6[] = {
  {&(_ZTV7S7488C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
Class_Descriptor cd_S7488C6 = {  "S7488C6", // class name
  bases_S7488C6, 3,
  &(vtc_S7488C6[0]), // expected_vtbl_contents
  &(vtt_S7488C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7488C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7488C6),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C6),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  S7488C5  : S7856C24 , virtual S7488C6 , virtual S7856C15 {
  ~S7488C5(); // tgen
  S7488C5(); // tgen
};
//SIG(-1 S7488C5) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7488C5 ::~S7488C5(){ note_dtor("S7488C5", this);} // tgen
S7488C5 ::S7488C5(){ note_ctor("S7488C5", this);} // tgen

static void Test_S7488C5()
{
  extern Class_Descriptor cd_S7488C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7488C5, buf);
    S7488C5 *dp, &lv = *(dp=new (buf) S7488C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7488C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C5)");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C5");
    check_base_class_offset(lv, (S7856C24*)(S7488C6*), ABISELECT(8,4), "S7488C5");
    check_base_class_offset(lv, (S7856C15*)(S7488C6*), 0, "S7488C5");
    check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C5");
    check_base_class_offset(lv, (S7488C6*), 0, "S7488C5");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7488C5");
    test_class_info(&lv, &cd_S7488C5);
    dp->~S7488C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C5(Test_S7488C5, "S7488C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7488C5C1Ev();
extern void _ZN7S7488C5D1Ev();
Name_Map name_map_S7488C5[] = {
  NSPAIR(_ZN7S7488C5C1Ev),
  NSPAIR(_ZN7S7488C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7488C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7488C6,    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},
  {&cd_S7856C15,    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 _ZTI7S7488C5[];
static  VTBL_ENTRY vtc_S7488C5[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
extern VTBL_ENTRY _ZTV7S7488C5[];
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C5[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C5[] = {
  {&(_ZTV7S7488C5[6]),  6,6},
  {&(_ZTV7S7488C5[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C5[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
Class_Descriptor cd_S7488C5 = {  "S7488C5", // class name
  bases_S7488C5, 6,
  &(vtc_S7488C5[0]), // expected_vtbl_contents
  &(vtt_S7488C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7488C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7488C5),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C5),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  S7488C8  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7488C6 , virtual S7488C5 {
  virtual  ~S7488C8(); // _ZN7S7488C8D2Ev
  S7488C8(); // tgen
};
//SIG(-1 S7488C8) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S7488C8 ::~S7488C8(){ note_dtor("S7488C8", this);}
S7488C8 ::S7488C8(){ note_ctor("S7488C8", this);} // tgen

static void Test_S7488C8()
{
  extern Class_Descriptor cd_S7488C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7488C8, buf);
    S7488C8 *dp, &lv = *(dp=new (buf) S7488C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7488C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C8)");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7488C8");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C8");
    check_base_class_offset(lv, (S7856C12*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*), 0, "S7488C8");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(16,8), "S7488C8");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(16,8), "S7488C8");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(16,8), "S7488C8");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(24,12), "S7488C8");
    check_base_class_offset(lv, (S7488C5*), ABISELECT(16,8), "S7488C8");
    test_class_info(&lv, &cd_S7488C8);
    dp->~S7488C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C8(Test_S7488C8, "S7488C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7488C8C1Ev();
extern void _ZN7S7488C8D2Ev();
Name_Map name_map_S7488C8[] = {
  NSPAIR(_ZN7S7488C8C1Ev),
  NSPAIR(_ZN7S7488C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
static Base_Class bases_S7488C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7488C6,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7488C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C8[];
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY vtc_S7488C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
extern VTBL_ENTRY _ZTV7S7488C8[];
static  VTBL_ENTRY _tg__ZTV7S7488C6__A__7S7488C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C8[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__A1__7S7488C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C8[] = {
  {&(_ZTV7S7488C8[7]),  7,15},
  {&(_tg__ZTV7S7488C6__A__7S7488C8[4]),  4,4},
  {&(_ZTV7S7488C8[15]),  15,15},
  {&(_ZTV7S7488C8[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C8[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C8[6]),  6,6},
  {&(_tg__ZTV7S7488C6__A1__7S7488C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
Class_Descriptor cd_S7488C8 = {  "S7488C8", // class name
  bases_S7488C8, 10,
  &(vtc_S7488C8[0]), // expected_vtbl_contents
  &(vtt_S7488C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7488C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7488C8),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C8),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  S7488C2  : virtual S7856C24 , virtual S7856C15 , virtual S7488C5 , S7856C12 , S7488C8 {
  virtual  ~S7488C2(); // _ZN7S7488C2D2Ev
  S7488C2(); // tgen
};
//SIG(-1 S7488C2) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S7488C2 ::~S7488C2(){ note_dtor("S7488C2", this);}
S7488C2 ::S7488C2(){ note_ctor("S7488C2", this);} // tgen

static void Test_S7488C2()
{
  extern Class_Descriptor cd_S7488C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7488C2, buf);
    S7488C2 *dp, &lv = *(dp=new (buf) S7488C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7488C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C2)");
    /*is_ambiguous_... S7488C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7488C2");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(9,5), "S7488C2");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), ABISELECT(24,12), "S7488C2");
    check_base_class_offset(lv, (S7856C12*)(S7488C8*), ABISELECT(24,12), "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*)(S7488C8*), ABISELECT(24,12), "S7488C2");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(16,8), "S7488C2");
    check_base_class_offset(lv, (S7488C5*), ABISELECT(16,8), "S7488C2");
    check_base_class_offset(lv, (S7488C5*)(S7488C8*), ABISELECT(16,8), "S7488C2");
    /*is_ambiguous_... S7488C2::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C8*), ABISELECT(8,4), "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*)(S7488C8*), 0, "S7488C2");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*)(S7488C8*), 0, "S7488C2");
    check_base_class_offset(lv, (S7488C8*), 0, "S7488C2");
    test_class_info(&lv, &cd_S7488C2);
    dp->~S7488C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C2(Test_S7488C2, "S7488C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7488C2C1Ev();
extern void _ZN7S7488C2D2Ev();
Name_Map name_map_S7488C2[] = {
  NSPAIR(_ZN7S7488C2C1Ev),
  NSPAIR(_ZN7S7488C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C8;
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
static Base_Class bases_S7488C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7488C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7488C6,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7488C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7488C2[];
extern void _ZN7S7488C2D1Ev();
extern void _ZN7S7488C2D0Ev();
static  VTBL_ENTRY vtc_S7488C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
  (VTBL_ENTRY)&_ZN7S7488C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C2D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
};
extern VTBL_ENTRY _ZTV7S7488C2[];
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C8__7S7488C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7488C67S7488C8__A1__7S7488C2[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C8__7S7488C2[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C2[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C2[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C2[] = {
  {&(_ZTV7S7488C2[7]),  7,15},
  {&(_tg__ZTV7S7488C8__7S7488C2[7]),  7,9},
  {&(_tg__ZTV7S7488C67S7488C8__A1__7S7488C2[4]),  4,4},
  {&(_tg__ZTV7S7488C5__7S7488C8__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C8__7S7488C2[6]),  6,6},
  {&(_ZTV7S7488C2[15]),  15,15},
  {&(_ZTV7S7488C2[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C2[];
extern  VTBL_ENTRY _ZTV7S7488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C2[];
Class_Descriptor cd_S7488C2 = {  "S7488C2", // class name
  bases_S7488C2, 12,
  &(vtc_S7488C2[0]), // expected_vtbl_contents
  &(vtt_S7488C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7488C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7488C2),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C2),10, //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  S7488C1  : S7488C2 {
  ::S19805C11 s7488c1f0;
  ~S7488C1(); // tgen
  S7488C1(); // tgen
};
//SIG(1 S7488C1) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} FC9{ BC10{ VBC11{ VBC7 BC4 VBC3} VBC12{ VBC4} VBC13{ BC3 BC4 BC11 Fi} BC3 VBC14{ VBC7 VBC4 VBC15{ BC7 VBC11 VBC4} BC3 BC16{ BC4 VBC7 VBC3 BC11 VBC15 vd} vd} vd Fi} BC17{ BC14 VBC13 VBC18{ VBC14 VBC19{ VBC20{ VBC14 VBC13 VBC16 vd Fi[2]} VBC21{ m} VBC10 BC22{ VBC16 BC13 BC15 BC3 vd} vd} vd} BC23{ BC4 BC12 vd} BC24{ m} Fi} VBC24}}


S7488C1 ::~S7488C1(){ note_dtor("S7488C1", this);} // tgen
S7488C1 ::S7488C1(){ note_ctor("S7488C1", this);} // tgen

static void Test_S7488C1()
{
  extern Class_Descriptor cd_S7488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,29)];
    init_test(&cd_S7488C1, buf);
    S7488C1 *dp, &lv = *(dp=new (buf) S7488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,112), "sizeof(S7488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7488C1)");
    /*is_ambiguous_... S7488C2::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C2::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C2*), ABISELECT(184,100), "S7488C1");
    /*is_ambiguous_... S7488C5::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C5*), ABISELECT(184,100), "S7488C1");
    /*is_ambiguous_... S7488C5::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7488C5*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C1::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*), ABISELECT(200,108), "S7488C1");
    check_base_class_offset(lv, (S7856C12*)(S7488C8*)(S7488C2*), ABISELECT(200,108), "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C6*)(S7488C8*)(S7488C2*), ABISELECT(200,108), "S7488C1");
    check_base_class_offset(lv, (S7488C6*)(S7488C5*), ABISELECT(192,104), "S7488C1");
    check_base_class_offset(lv, (S7488C5*)(S7488C2*), ABISELECT(192,104), "S7488C1");
    check_base_class_offset(lv, (S7488C5*)(S7488C8*)(S7488C2*), ABISELECT(192,104), "S7488C1");
    /*is_ambiguous_... S7488C2::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C8*)(S7488C2*), ABISELECT(8,4), "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    /*is_ambiguous_... S7488C8::S7488C6 */ AMB_check_base_class_offset(lv, (S7488C6*)(S7488C8*)(S7488C2*), 0, "S7488C1");
    check_base_class_offset(lv, (S7488C8*)(S7488C2*), 0, "S7488C1");
    check_base_class_offset(lv, (S7488C2*), 0, "S7488C1");
    check_field_offset(lv, s7488c1f0, ABISELECT(16,8), "S7488C1.s7488c1f0");
    test_class_info(&lv, &cd_S7488C1);
    dp->~S7488C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7488C1(Test_S7488C1, "S7488C1", ABISELECT(208,112));

#else // __cplusplus

extern void _ZN7S7488C1C1Ev();
extern void _ZN7S7488C1D1Ev();
Name_Map name_map_S7488C1[] = {
  NSPAIR(_ZN7S7488C1C1Ev),
  NSPAIR(_ZN7S7488C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C5;
extern VTBL_ENTRY _ZTI7S7488C5[];
extern  VTBL_ENTRY _ZTV7S7488C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C5[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7488C6;
extern VTBL_ENTRY _ZTI7S7488C6[];
extern  VTBL_ENTRY _ZTV7S7488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C6[];
extern Class_Descriptor cd_S7488C8;
extern VTBL_ENTRY _ZTI7S7488C8[];
extern  VTBL_ENTRY _ZTV7S7488C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C8[];
extern Class_Descriptor cd_S7488C2;
extern VTBL_ENTRY _ZTI7S7488C2[];
extern  VTBL_ENTRY _ZTV7S7488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C2[];
static Base_Class bases_S7488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(200,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
    5, //immediately_derived
  0, 1},
  {&cd_S7488C6,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7488C5,    ABISELECT(192,104), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7488C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7488C8,    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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7488C2,    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 _ZTI7S7488C1[];
extern void _ZN7S7488C1D1Ev();
extern void _ZN7S7488C1D0Ev();
static  VTBL_ENTRY vtc_S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C1[0]),
  (VTBL_ENTRY)&_ZN7S7488C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C1D0Ev,
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C1[0]),
};
extern VTBL_ENTRY _ZTV7S7488C1[];
extern void _ZN7S7488C2D1Ev();
extern void _ZN7S7488C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C2__7S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
  (VTBL_ENTRY)&_ZN7S7488C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C2D0Ev,
};
extern void _ZN7S7488C8D1Ev();
extern void _ZN7S7488C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7488C87S7488C2__7S7488C1[] = {
  ABISELECT(184,100),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
  (VTBL_ENTRY)&_ZN7S7488C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7488C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7488C67S7488C87S7488C2__A1__7S7488C1[] = {
  ABISELECT(200,108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C2__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7488C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C5__7S7488C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7488C6__7S7488C1[] = {
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7488C6[0]),
};
static  VTT_ENTRY vtt_S7488C1[] = {
  {&(_ZTV7S7488C1[7]),  7,15},
  {&(_tg__ZTV7S7488C2__7S7488C1[7]),  7,9},
  {&(_tg__ZTV7S7488C87S7488C2__7S7488C1[7]),  7,9},
  {&(_tg__ZTV7S7488C67S7488C87S7488C2__A1__7S7488C1[4]),  4,4},
  {&(_tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C87S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C2__7S7488C1[6]),  6,6},
  {&(_ZTV7S7488C1[15]),  15,15},
  {&(_ZTV7S7488C1[15]),  15,15},
  {&(_tg__ZTV7S7488C5__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C5__7S7488C1[6]),  6,6},
  {&(_tg__ZTV7S7488C6__7S7488C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7488C1[];
extern  VTBL_ENTRY _ZTV7S7488C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7488C1[];
Class_Descriptor cd_S7488C1 = {  "S7488C1", // class name
  bases_S7488C1, 13,
  &(vtc_S7488C1[0]), // expected_vtbl_contents
  &(vtt_S7488C1[0]), // expected_vtt_contents
  ABISELECT(208,112), // object size
  NSPAIRA(_ZTI7S7488C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7488C1),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7488C1),13, //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  S1867C3  : S1868C4_nt {
  void *s1867c3f0[2];
  virtual  ~S1867C3(); // _ZN7S1867C3D1Ev
  virtual void  v9(); // _ZN7S1867C32v9Ev
  virtual void  v10(); // _ZN7S1867C33v10Ev
  virtual void  v11(); // _ZN7S1867C33v11Ev
  virtual void  v12(); // _ZN7S1867C33v12Ev
  virtual void  v13(); // _ZN7S1867C33v13Ev
  virtual void  v14(); // _ZN7S1867C33v14Ev
  virtual void  v15(); // _ZN7S1867C33v15Ev
  S1867C3(); // tgen
};
//SIG(-1 S1867C3) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S1867C3 ::~S1867C3(){ note_dtor("S1867C3", this);}
void  S1867C3 ::v9(){vfunc_called(this, "_ZN7S1867C32v9Ev");}
void  S1867C3 ::v10(){vfunc_called(this, "_ZN7S1867C33v10Ev");}
void  S1867C3 ::v11(){vfunc_called(this, "_ZN7S1867C33v11Ev");}
void  S1867C3 ::v12(){vfunc_called(this, "_ZN7S1867C33v12Ev");}
void  S1867C3 ::v13(){vfunc_called(this, "_ZN7S1867C33v13Ev");}
void  S1867C3 ::v14(){vfunc_called(this, "_ZN7S1867C33v14Ev");}
void  S1867C3 ::v15(){vfunc_called(this, "_ZN7S1867C33v15Ev");}
S1867C3 ::S1867C3(){ note_ctor("S1867C3", this);} // tgen

static void Test_S1867C3()
{
  extern Class_Descriptor cd_S1867C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1867C3, buf);
    S1867C3 *dp, &lv = *(dp=new (buf) S1867C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1867C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1867C3");
    check_field_offset(lv, s1867c3f0, ABISELECT(8,4), "S1867C3.s1867c3f0");
    test_class_info(&lv, &cd_S1867C3);
    dp->~S1867C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C3(Test_S1867C3, "S1867C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1867C3C1Ev();
extern void _ZN7S1867C3D1Ev();
Name_Map name_map_S1867C3[] = {
  NSPAIR(_ZN7S1867C3C1Ev),
  NSPAIR(_ZN7S1867C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1867C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1867C3[];
extern void _ZN7S1867C3D1Ev();
extern void _ZN7S1867C3D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
static  VTBL_ENTRY vtc_S1867C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C3[0]),
  (VTBL_ENTRY)&_ZN7S1867C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
Class_Descriptor cd_S1867C3 = {  "S1867C3", // class name
  bases_S1867C3, 1,
  &(vtc_S1867C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1867C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1867C3),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  S1867C5  {
  virtual  ~S1867C5(); // _ZN7S1867C5D1Ev
  virtual void  v16(); // _ZN7S1867C53v16Ev
  virtual void  v17(); // _ZN7S1867C53v17Ev
  virtual void  v18(); // _ZN7S1867C53v18Ev
  virtual void  v19(); // _ZN7S1867C53v19Ev
  virtual void  v20(); // _ZN7S1867C53v20Ev
  virtual void  v21(); // _ZN7S1867C53v21Ev
  virtual void  v22(); // _ZN7S1867C53v22Ev
  virtual void  v23(); // _ZN7S1867C53v23Ev
  virtual void  v24(); // _ZN7S1867C53v24Ev
  virtual void  v25(); // _ZN7S1867C53v25Ev
  virtual void  v26(); // _ZN7S1867C53v26Ev
  virtual void  v27(); // _ZN7S1867C53v27Ev
  S1867C5(); // tgen
};
//SIG(-1 S1867C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S1867C5 ::~S1867C5(){ note_dtor("S1867C5", this);}
void  S1867C5 ::v16(){vfunc_called(this, "_ZN7S1867C53v16Ev");}
void  S1867C5 ::v17(){vfunc_called(this, "_ZN7S1867C53v17Ev");}
void  S1867C5 ::v18(){vfunc_called(this, "_ZN7S1867C53v18Ev");}
void  S1867C5 ::v19(){vfunc_called(this, "_ZN7S1867C53v19Ev");}
void  S1867C5 ::v20(){vfunc_called(this, "_ZN7S1867C53v20Ev");}
void  S1867C5 ::v21(){vfunc_called(this, "_ZN7S1867C53v21Ev");}
void  S1867C5 ::v22(){vfunc_called(this, "_ZN7S1867C53v22Ev");}
void  S1867C5 ::v23(){vfunc_called(this, "_ZN7S1867C53v23Ev");}
void  S1867C5 ::v24(){vfunc_called(this, "_ZN7S1867C53v24Ev");}
void  S1867C5 ::v25(){vfunc_called(this, "_ZN7S1867C53v25Ev");}
void  S1867C5 ::v26(){vfunc_called(this, "_ZN7S1867C53v26Ev");}
void  S1867C5 ::v27(){vfunc_called(this, "_ZN7S1867C53v27Ev");}
S1867C5 ::S1867C5(){ note_ctor("S1867C5", this);} // tgen

static void Test_S1867C5()
{
  extern Class_Descriptor cd_S1867C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1867C5, buf);
    S1867C5 *dp, &lv = *(dp=new (buf) S1867C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1867C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C5)");
    test_class_info(&lv, &cd_S1867C5);
    dp->~S1867C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C5(Test_S1867C5, "S1867C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1867C5C1Ev();
extern void _ZN7S1867C5D1Ev();
Name_Map name_map_S1867C5[] = {
  NSPAIR(_ZN7S1867C5C1Ev),
  NSPAIR(_ZN7S1867C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1867C5[];
extern void _ZN7S1867C5D1Ev();
extern void _ZN7S1867C5D0Ev();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
static  VTBL_ENTRY vtc_S1867C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C5[0]),
  (VTBL_ENTRY)&_ZN7S1867C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
Class_Descriptor cd_S1867C5 = {  "S1867C5", // class name
  0,0,//no base classes
  &(vtc_S1867C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1867C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1867C5),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1867C6  {
  virtual  ~S1867C6(); // _ZN7S1867C6D1Ev
  virtual void  v28(); // _ZN7S1867C63v28Ev
  virtual void  v29(); // _ZN7S1867C63v29Ev
  S1867C6(); // tgen
};
//SIG(-1 S1867C6) C1{ vd v1 v2}


 S1867C6 ::~S1867C6(){ note_dtor("S1867C6", this);}
void  S1867C6 ::v28(){vfunc_called(this, "_ZN7S1867C63v28Ev");}
void  S1867C6 ::v29(){vfunc_called(this, "_ZN7S1867C63v29Ev");}
S1867C6 ::S1867C6(){ note_ctor("S1867C6", this);} // tgen

static void Test_S1867C6()
{
  extern Class_Descriptor cd_S1867C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1867C6, buf);
    S1867C6 *dp, &lv = *(dp=new (buf) S1867C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1867C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C6)");
    test_class_info(&lv, &cd_S1867C6);
    dp->~S1867C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C6(Test_S1867C6, "S1867C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1867C6C1Ev();
extern void _ZN7S1867C6D1Ev();
Name_Map name_map_S1867C6[] = {
  NSPAIR(_ZN7S1867C6C1Ev),
  NSPAIR(_ZN7S1867C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1867C6[];
extern void _ZN7S1867C6D1Ev();
extern void _ZN7S1867C6D0Ev();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C6[0]),
  (VTBL_ENTRY)&_ZN7S1867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
Class_Descriptor cd_S1867C6 = {  "S1867C6", // class name
  0,0,//no base classes
  &(vtc_S1867C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1867C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1867C6),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  S1867C2  : S1867C3 , S1867C5 , S1867C6 {
  void *s1867c2f0;
  ::S793C8_nt s1867c2f1;
  void *s1867c2f2;
  ::S1868C17 s1867c2f3;
  int s1867c2f4[2];
  virtual  ~S1867C2(); // _ZN7S1867C2D1Ev
  virtual void  v30(); // _ZN7S1867C23v30Ev
  virtual void  v31(); // _ZN7S1867C23v31Ev
  virtual void  v32(); // _ZN7S1867C23v32Ev
  virtual void  v33(); // _ZN7S1867C23v33Ev
  virtual void  v34(); // _ZN7S1867C23v34Ev
  virtual void  v35(); // _ZN7S1867C23v35Ev
  virtual void  v36(); // _ZN7S1867C23v36Ev
  virtual void  v37(); // _ZN7S1867C23v37Ev
  virtual void  v38(); // _ZN7S1867C23v38Ev
  virtual void  v39(); // _ZN7S1867C23v39Ev
  virtual void  v40(); // _ZN7S1867C23v40Ev
  virtual void  v41(); // _ZN7S1867C23v41Ev
  virtual void  v42(); // _ZN7S1867C23v42Ev
  virtual void  v43(); // _ZN7S1867C23v43Ev
  virtual void  v44(); // _ZN7S1867C23v44Ev
  virtual void  v45(); // _ZN7S1867C23v45Ev
  virtual void  v46(); // _ZN7S1867C23v46Ev
  virtual void  v47(); // _ZN7S1867C23v47Ev
  virtual void  v48(); // _ZN7S1867C23v48Ev
  virtual void  v49(); // _ZN7S1867C23v49Ev
  virtual void  v50(); // _ZN7S1867C23v50Ev
  virtual void  v51(); // _ZN7S1867C23v51Ev
  virtual void  v52(); // _ZN7S1867C23v52Ev
  virtual void  v53(); // _ZN7S1867C23v53Ev
  S1867C2(); // tgen
};
//SIG(-1 S1867C2) C1{ BC2{ BC3{ vd m} vd v25 v26 v27 v28 v29 v30 v31 Fp[2]} BC4{ vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43} BC5{ vd v44 v45} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ m FC7{ m FL[2]}} Fp FC8{ m Fp} Fi[2]}


 S1867C2 ::~S1867C2(){ note_dtor("S1867C2", this);}
void  S1867C2 ::v30(){vfunc_called(this, "_ZN7S1867C23v30Ev");}
void  S1867C2 ::v31(){vfunc_called(this, "_ZN7S1867C23v31Ev");}
void  S1867C2 ::v32(){vfunc_called(this, "_ZN7S1867C23v32Ev");}
void  S1867C2 ::v33(){vfunc_called(this, "_ZN7S1867C23v33Ev");}
void  S1867C2 ::v34(){vfunc_called(this, "_ZN7S1867C23v34Ev");}
void  S1867C2 ::v35(){vfunc_called(this, "_ZN7S1867C23v35Ev");}
void  S1867C2 ::v36(){vfunc_called(this, "_ZN7S1867C23v36Ev");}
void  S1867C2 ::v37(){vfunc_called(this, "_ZN7S1867C23v37Ev");}
void  S1867C2 ::v38(){vfunc_called(this, "_ZN7S1867C23v38Ev");}
void  S1867C2 ::v39(){vfunc_called(this, "_ZN7S1867C23v39Ev");}
void  S1867C2 ::v40(){vfunc_called(this, "_ZN7S1867C23v40Ev");}
void  S1867C2 ::v41(){vfunc_called(this, "_ZN7S1867C23v41Ev");}
void  S1867C2 ::v42(){vfunc_called(this, "_ZN7S1867C23v42Ev");}
void  S1867C2 ::v43(){vfunc_called(this, "_ZN7S1867C23v43Ev");}
void  S1867C2 ::v44(){vfunc_called(this, "_ZN7S1867C23v44Ev");}
void  S1867C2 ::v45(){vfunc_called(this, "_ZN7S1867C23v45Ev");}
void  S1867C2 ::v46(){vfunc_called(this, "_ZN7S1867C23v46Ev");}
void  S1867C2 ::v47(){vfunc_called(this, "_ZN7S1867C23v47Ev");}
void  S1867C2 ::v48(){vfunc_called(this, "_ZN7S1867C23v48Ev");}
void  S1867C2 ::v49(){vfunc_called(this, "_ZN7S1867C23v49Ev");}
void  S1867C2 ::v50(){vfunc_called(this, "_ZN7S1867C23v50Ev");}
void  S1867C2 ::v51(){vfunc_called(this, "_ZN7S1867C23v51Ev");}
void  S1867C2 ::v52(){vfunc_called(this, "_ZN7S1867C23v52Ev");}
void  S1867C2 ::v53(){vfunc_called(this, "_ZN7S1867C23v53Ev");}
S1867C2 ::S1867C2(){ note_ctor("S1867C2", this);} // tgen

static void Test_S1867C2()
{
  extern Class_Descriptor cd_S1867C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S1867C2, buf);
    S1867C2 *dp, &lv = *(dp=new (buf) S1867C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S1867C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1867C3*), 0, "S1867C2");
    check_base_class_offset(lv, (S1867C3*), 0, "S1867C2");
    check_base_class_offset(lv, (S1867C5*), ABISELECT(24,12), "S1867C2");
    check_base_class_offset(lv, (S1867C6*), ABISELECT(32,16), "S1867C2");
    check_field_offset(lv, s1867c2f0, ABISELECT(40,20), "S1867C2.s1867c2f0");
    check_field_offset(lv, s1867c2f1, ABISELECT(48,24), "S1867C2.s1867c2f1");
    check_field_offset(lv, s1867c2f2, ABISELECT(64,40), "S1867C2.s1867c2f2");
    check_field_offset(lv, s1867c2f3, ABISELECT(72,44), "S1867C2.s1867c2f3");
    check_field_offset(lv, s1867c2f4, ABISELECT(80,48), "S1867C2.s1867c2f4");
    test_class_info(&lv, &cd_S1867C2);
    dp->~S1867C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C2(Test_S1867C2, "S1867C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S1867C2C1Ev();
extern void _ZN7S1867C2D1Ev();
Name_Map name_map_S1867C2[] = {
  NSPAIR(_ZN7S1867C2C1Ev),
  NSPAIR(_ZN7S1867C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1867C3;
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
extern Class_Descriptor cd_S1867C5;
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
extern Class_Descriptor cd_S1867C6;
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
static Base_Class bases_S1867C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1867C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1867C5,    ABISELECT(24,12), //bcp->offset
    35, //bcp->virtual_function_table_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_S1867C6,    ABISELECT(32,16), //bcp->offset
    51, //bcp->virtual_function_table_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 _ZTI7S1867C2[];
extern void _ZN7S1867C2D1Ev();
extern void _ZN7S1867C2D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
extern void _ZN7S1867C23v30Ev();
extern void _ZN7S1867C23v31Ev();
extern void _ZN7S1867C23v32Ev();
extern void _ZN7S1867C23v33Ev();
extern void _ZN7S1867C23v34Ev();
extern void _ZN7S1867C23v35Ev();
extern void _ZN7S1867C23v36Ev();
extern void _ZN7S1867C23v37Ev();
extern void _ZN7S1867C23v38Ev();
extern void _ZN7S1867C23v39Ev();
extern void _ZN7S1867C23v40Ev();
extern void _ZN7S1867C23v41Ev();
extern void _ZN7S1867C23v42Ev();
extern void _ZN7S1867C23v43Ev();
extern void _ZN7S1867C23v44Ev();
extern void _ZN7S1867C23v45Ev();
extern void _ZN7S1867C23v46Ev();
extern void _ZN7S1867C23v47Ev();
extern void _ZN7S1867C23v48Ev();
extern void _ZN7S1867C23v49Ev();
extern void _ZN7S1867C23v50Ev();
extern void _ZN7S1867C23v51Ev();
extern void _ZN7S1867C23v52Ev();
extern void _ZN7S1867C23v53Ev();
extern void ABISELECT(_ZThn24_N7S1867C2D1Ev,_ZThn12_N7S1867C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S1867C2D0Ev,_ZThn12_N7S1867C2D0Ev)();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
extern void ABISELECT(_ZThn32_N7S1867C2D1Ev,_ZThn16_N7S1867C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S1867C2D0Ev,_ZThn16_N7S1867C2D0Ev)();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&_ZN7S1867C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v53Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C2D1Ev,_ZThn12_N7S1867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C2D0Ev,_ZThn12_N7S1867C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C2D1Ev,_ZThn16_N7S1867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C2D0Ev,_ZThn16_N7S1867C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C2[];
extern  VTBL_ENTRY _ZTV7S1867C2[];
Class_Descriptor cd_S1867C2 = {  "S1867C2", // class name
  bases_S1867C2, 4,
  &(vtc_S1867C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S1867C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1867C2),57, //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  S1867C1  : S1867C2 {
  void *s1867c1f0;
  int s1867c1f1;
  virtual void  v1(); // _ZN7S1867C12v1Ev
  virtual void  v2(); // _ZN7S1867C12v2Ev
  virtual void  v3(); // _ZN7S1867C12v3Ev
  virtual void  v4(); // _ZN7S1867C12v4Ev
  virtual void  v5(); // _ZN7S1867C12v5Ev
  virtual void  v6(); // _ZN7S1867C12v6Ev
  virtual void  v7(); // _ZN7S1867C12v7Ev
  virtual void  v8(); // _ZN7S1867C12v8Ev
  ~S1867C1(); // tgen
  S1867C1(); // tgen
};
//SIG(1 S1867C1) C1{ BC2{ BC3{ BC4{ vd m} vd v9 v10 v11 v12 v13 v14 v15 Fp[2]} BC5{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27} BC6{ vd v28 v29} vd v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 Fp FC7{ m FC8{ m FL[2]}} Fp FC9{ m Fp} Fi[2]} v1 v2 v3 v4 v5 v6 v7 v8 Fp Fi}


void  S1867C1 ::v1(){vfunc_called(this, "_ZN7S1867C12v1Ev");}
void  S1867C1 ::v2(){vfunc_called(this, "_ZN7S1867C12v2Ev");}
void  S1867C1 ::v3(){vfunc_called(this, "_ZN7S1867C12v3Ev");}
void  S1867C1 ::v4(){vfunc_called(this, "_ZN7S1867C12v4Ev");}
void  S1867C1 ::v5(){vfunc_called(this, "_ZN7S1867C12v5Ev");}
void  S1867C1 ::v6(){vfunc_called(this, "_ZN7S1867C12v6Ev");}
void  S1867C1 ::v7(){vfunc_called(this, "_ZN7S1867C12v7Ev");}
void  S1867C1 ::v8(){vfunc_called(this, "_ZN7S1867C12v8Ev");}
S1867C1 ::~S1867C1(){ note_dtor("S1867C1", this);} // tgen
S1867C1 ::S1867C1(){ note_ctor("S1867C1", this);} // tgen

static void Test_S1867C1()
{
  extern Class_Descriptor cd_S1867C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S1867C1, buf);
    S1867C1 *dp, &lv = *(dp=new (buf) S1867C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S1867C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1867C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1867C3*)(S1867C2*), 0, "S1867C1");
    check_base_class_offset(lv, (S1867C3*)(S1867C2*), 0, "S1867C1");
    check_base_class_offset(lv, (S1867C5*)(S1867C2*), ABISELECT(24,12), "S1867C1");
    check_base_class_offset(lv, (S1867C6*)(S1867C2*), ABISELECT(32,16), "S1867C1");
    check_base_class_offset(lv, (S1867C2*), 0, "S1867C1");
    check_field_offset(lv, s1867c1f0, ABISELECT(88,56), "S1867C1.s1867c1f0");
    check_field_offset(lv, s1867c1f1, ABISELECT(96,60), "S1867C1.s1867c1f1");
    test_class_info(&lv, &cd_S1867C1);
    dp->~S1867C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1867C1(Test_S1867C1, "S1867C1", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN7S1867C1C1Ev();
extern void _ZN7S1867C1D1Ev();
Name_Map name_map_S1867C1[] = {
  NSPAIR(_ZN7S1867C1C1Ev),
  NSPAIR(_ZN7S1867C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1867C3;
extern VTBL_ENTRY _ZTI7S1867C3[];
extern  VTBL_ENTRY _ZTV7S1867C3[];
extern Class_Descriptor cd_S1867C5;
extern VTBL_ENTRY _ZTI7S1867C5[];
extern  VTBL_ENTRY _ZTV7S1867C5[];
extern Class_Descriptor cd_S1867C6;
extern VTBL_ENTRY _ZTI7S1867C6[];
extern  VTBL_ENTRY _ZTV7S1867C6[];
extern Class_Descriptor cd_S1867C2;
extern VTBL_ENTRY _ZTI7S1867C2[];
extern  VTBL_ENTRY _ZTV7S1867C2[];
static Base_Class bases_S1867C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1867C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1867C5,    ABISELECT(24,12), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1867C6,    ABISELECT(32,16), //bcp->offset
    59, //bcp->virtual_function_table_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_S1867C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1867C1[];
extern void _ZN7S1867C1D1Ev();
extern void _ZN7S1867C1D0Ev();
extern void _ZN7S1867C32v9Ev();
extern void _ZN7S1867C33v10Ev();
extern void _ZN7S1867C33v11Ev();
extern void _ZN7S1867C33v12Ev();
extern void _ZN7S1867C33v13Ev();
extern void _ZN7S1867C33v14Ev();
extern void _ZN7S1867C33v15Ev();
extern void _ZN7S1867C23v30Ev();
extern void _ZN7S1867C23v31Ev();
extern void _ZN7S1867C23v32Ev();
extern void _ZN7S1867C23v33Ev();
extern void _ZN7S1867C23v34Ev();
extern void _ZN7S1867C23v35Ev();
extern void _ZN7S1867C23v36Ev();
extern void _ZN7S1867C23v37Ev();
extern void _ZN7S1867C23v38Ev();
extern void _ZN7S1867C23v39Ev();
extern void _ZN7S1867C23v40Ev();
extern void _ZN7S1867C23v41Ev();
extern void _ZN7S1867C23v42Ev();
extern void _ZN7S1867C23v43Ev();
extern void _ZN7S1867C23v44Ev();
extern void _ZN7S1867C23v45Ev();
extern void _ZN7S1867C23v46Ev();
extern void _ZN7S1867C23v47Ev();
extern void _ZN7S1867C23v48Ev();
extern void _ZN7S1867C23v49Ev();
extern void _ZN7S1867C23v50Ev();
extern void _ZN7S1867C23v51Ev();
extern void _ZN7S1867C23v52Ev();
extern void _ZN7S1867C23v53Ev();
extern void _ZN7S1867C12v1Ev();
extern void _ZN7S1867C12v2Ev();
extern void _ZN7S1867C12v3Ev();
extern void _ZN7S1867C12v4Ev();
extern void _ZN7S1867C12v5Ev();
extern void _ZN7S1867C12v6Ev();
extern void _ZN7S1867C12v7Ev();
extern void _ZN7S1867C12v8Ev();
extern void ABISELECT(_ZThn24_N7S1867C1D1Ev,_ZThn12_N7S1867C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S1867C1D0Ev,_ZThn12_N7S1867C1D0Ev)();
extern void _ZN7S1867C53v16Ev();
extern void _ZN7S1867C53v17Ev();
extern void _ZN7S1867C53v18Ev();
extern void _ZN7S1867C53v19Ev();
extern void _ZN7S1867C53v20Ev();
extern void _ZN7S1867C53v21Ev();
extern void _ZN7S1867C53v22Ev();
extern void _ZN7S1867C53v23Ev();
extern void _ZN7S1867C53v24Ev();
extern void _ZN7S1867C53v25Ev();
extern void _ZN7S1867C53v26Ev();
extern void _ZN7S1867C53v27Ev();
extern void ABISELECT(_ZThn32_N7S1867C1D1Ev,_ZThn16_N7S1867C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S1867C1D0Ev,_ZThn16_N7S1867C1D0Ev)();
extern void _ZN7S1867C63v28Ev();
extern void _ZN7S1867C63v29Ev();
static  VTBL_ENTRY vtc_S1867C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&_ZN7S1867C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1867C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1867C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1867C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1867C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1867C12v8Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C1D1Ev,_ZThn12_N7S1867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S1867C1D0Ev,_ZThn12_N7S1867C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C53v16Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v22Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v23Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v24Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v25Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v26Ev,
  (VTBL_ENTRY)&_ZN7S1867C53v27Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C1D1Ev,_ZThn16_N7S1867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S1867C1D0Ev,_ZThn16_N7S1867C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1867C63v28Ev,
  (VTBL_ENTRY)&_ZN7S1867C63v29Ev,
};
extern VTBL_ENTRY _ZTI7S1867C1[];
extern  VTBL_ENTRY _ZTV7S1867C1[];
Class_Descriptor cd_S1867C1 = {  "S1867C1", // class name
  bases_S1867C1, 5,
  &(vtc_S1867C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI7S1867C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1867C1),65, //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  S7471C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7471C2(); // tgen
  S7471C2(); // tgen
};
//SIG(-1 S7471C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7471C2 ::~S7471C2(){ note_dtor("S7471C2", this);} // tgen
S7471C2 ::S7471C2(){ note_ctor("S7471C2", this);} // tgen

static void Test_S7471C2()
{
  extern Class_Descriptor cd_S7471C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7471C2, buf);
    S7471C2 *dp, &lv = *(dp=new (buf) S7471C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7471C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7471C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7471C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7471C2");
    test_class_info(&lv, &cd_S7471C2);
    dp->~S7471C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C2(Test_S7471C2, "S7471C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7471C2C1Ev();
extern void _ZN7S7471C2D1Ev();
Name_Map name_map_S7471C2[] = {
  NSPAIR(_ZN7S7471C2C1Ev),
  NSPAIR(_ZN7S7471C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7471C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7471C2[];
static  VTBL_ENTRY vtc_S7471C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern VTBL_ENTRY _ZTV7S7471C2[];
static  VTT_ENTRY vtt_S7471C2[] = {
  {&(_ZTV7S7471C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
Class_Descriptor cd_S7471C2 = {  "S7471C2", // class name
  bases_S7471C2, 3,
  &(vtc_S7471C2[0]), // expected_vtbl_contents
  &(vtt_S7471C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7471C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7471C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C2),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  S7471C8  : virtual S7856C15 {
  ~S7471C8(); // tgen
  S7471C8(); // tgen
};
//SIG(-1 S7471C8) C1{ VBC2{ m}}


S7471C8 ::~S7471C8(){ note_dtor("S7471C8", this);} // tgen
S7471C8 ::S7471C8(){ note_ctor("S7471C8", this);} // tgen

static void Test_S7471C8()
{
  extern Class_Descriptor cd_S7471C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7471C8, buf);
    S7471C8 *dp, &lv = *(dp=new (buf) S7471C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7471C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C8)");
    check_base_class_offset(lv, (S7856C15*), 0, "S7471C8");
    test_class_info(&lv, &cd_S7471C8);
    dp->~S7471C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C8(Test_S7471C8, "S7471C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7471C8C1Ev();
extern void _ZN7S7471C8D1Ev();
Name_Map name_map_S7471C8[] = {
  NSPAIR(_ZN7S7471C8C1Ev),
  NSPAIR(_ZN7S7471C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7471C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7471C8[];
static  VTBL_ENTRY vtc_S7471C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern VTBL_ENTRY _ZTV7S7471C8[];
static  VTT_ENTRY vtt_S7471C8[] = {
  {&(_ZTV7S7471C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
Class_Descriptor cd_S7471C8 = {  "S7471C8", // class name
  bases_S7471C8, 1,
  &(vtc_S7471C8[0]), // expected_vtbl_contents
  &(vtt_S7471C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7471C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7471C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C8),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  S7471C7  : S7856C15 , S7471C8 {
  virtual  ~S7471C7(); // _ZN7S7471C7D2Ev
  S7471C7(); // tgen
};
//SIG(-1 S7471C7) C1{ BC2{ m} BC3{ VBC2} vd}


 S7471C7 ::~S7471C7(){ note_dtor("S7471C7", this);}
S7471C7 ::S7471C7(){ note_ctor("S7471C7", this);} // tgen

static void Test_S7471C7()
{
  extern Class_Descriptor cd_S7471C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7471C7, buf);
    S7471C7 *dp, &lv = *(dp=new (buf) S7471C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7471C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C7)");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S7471C7");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(8,4), "S7471C7");
    check_base_class_offset(lv, (S7471C8*), 0, "S7471C7");
    test_class_info(&lv, &cd_S7471C7);
    dp->~S7471C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C7(Test_S7471C7, "S7471C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7471C7C1Ev();
extern void _ZN7S7471C7D2Ev();
Name_Map name_map_S7471C7[] = {
  NSPAIR(_ZN7S7471C7C1Ev),
  NSPAIR(_ZN7S7471C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
static Base_Class bases_S7471C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C7[];
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY vtc_S7471C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S7471C7[];
static  VTBL_ENTRY _tg__ZTV7S7471C8__7S7471C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C7[] = {
  {&(_ZTV7S7471C7[3]),  3,5},
  {&(_tg__ZTV7S7471C8__7S7471C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
Class_Descriptor cd_S7471C7 = {  "S7471C7", // class name
  bases_S7471C7, 3,
  &(vtc_S7471C7[0]), // expected_vtbl_contents
  &(vtt_S7471C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7471C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7471C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C7),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  S7471C10  : S7856C24 , virtual S7471C2 , virtual S7856C15 {
  ~S7471C10(); // tgen
  S7471C10(); // tgen
};
//SIG(-1 S7471C10) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7471C10 ::~S7471C10(){ note_dtor("S7471C10", this);} // tgen
S7471C10 ::S7471C10(){ note_ctor("S7471C10", this);} // tgen

static void Test_S7471C10()
{
  extern Class_Descriptor cd_S7471C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7471C10, buf);
    S7471C10 *dp, &lv = *(dp=new (buf) S7471C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7471C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C10)");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C10");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*), ABISELECT(8,4), "S7471C10");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C10");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C10");
    check_base_class_offset(lv, (S7471C2*), 0, "S7471C10");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C10");
    test_class_info(&lv, &cd_S7471C10);
    dp->~S7471C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C10(Test_S7471C10, "S7471C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7471C10C1Ev();
extern void _ZN8S7471C10D1Ev();
Name_Map name_map_S7471C10[] = {
  NSPAIR(_ZN8S7471C10C1Ev),
  NSPAIR(_ZN8S7471C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7471C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    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},
  {&cd_S7856C15,    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 _ZTI8S7471C10[];
static  VTBL_ENTRY vtc_S7471C10[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern VTBL_ENTRY _ZTV8S7471C10[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C10[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C10[] = {
  {&(_ZTV8S7471C10[6]),  6,6},
  {&(_ZTV8S7471C10[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
Class_Descriptor cd_S7471C10 = {  "S7471C10", // class name
  bases_S7471C10, 6,
  &(vtc_S7471C10[0]), // expected_vtbl_contents
  &(vtt_S7471C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7471C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C10),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C10),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  S7471C11  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S7471C2 , virtual S7471C10 {
  virtual  ~S7471C11(); // _ZN8S7471C11D2Ev
  S7471C11(); // tgen
};
//SIG(-1 S7471C11) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S7471C11 ::~S7471C11(){ note_dtor("S7471C11", this);}
S7471C11 ::S7471C11(){ note_ctor("S7471C11", this);} // tgen

static void Test_S7471C11()
{
  extern Class_Descriptor cd_S7471C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7471C11, buf);
    S7471C11 *dp, &lv = *(dp=new (buf) S7471C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7471C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C11)");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C11");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C11");
    check_base_class_offset(lv, (S7856C12*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), 0, "S7471C11");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C11");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(16,8), "S7471C11");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(16,8), "S7471C11");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(24,12), "S7471C11");
    check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C11");
    test_class_info(&lv, &cd_S7471C11);
    dp->~S7471C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C11(Test_S7471C11, "S7471C11", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7471C11C1Ev();
extern void _ZN8S7471C11D2Ev();
Name_Map name_map_S7471C11[] = {
  NSPAIR(_ZN8S7471C11C1Ev),
  NSPAIR(_ZN8S7471C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
static Base_Class bases_S7471C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C11[];
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY vtc_S7471C11[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern VTBL_ENTRY _ZTV8S7471C11[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__A__8S7471C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__8S7471C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C11[] = {
  {&(_ZTV8S7471C11[7]),  7,15},
  {&(_tg__ZTV7S7471C2__A__8S7471C11[4]),  4,4},
  {&(_ZTV8S7471C11[15]),  15,15},
  {&(_ZTV8S7471C11[15]),  15,15},
  {&(_tg__ZTV8S7471C10__8S7471C11[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__8S7471C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
Class_Descriptor cd_S7471C11 = {  "S7471C11", // class name
  bases_S7471C11, 10,
  &(vtc_S7471C11[0]), // expected_vtbl_contents
  &(vtt_S7471C11[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7471C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7471C11),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C11),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  S7471C9  : virtual S7856C24 , virtual S7856C15 , virtual S7471C10 , S7856C12 , S7471C11 {
  virtual  ~S7471C9(); // _ZN7S7471C9D2Ev
  S7471C9(); // tgen
};
//SIG(-1 S7471C9) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S7471C9 ::~S7471C9(){ note_dtor("S7471C9", this);}
S7471C9 ::S7471C9(){ note_ctor("S7471C9", this);} // tgen

static void Test_S7471C9()
{
  extern Class_Descriptor cd_S7471C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7471C9, buf);
    S7471C9 *dp, &lv = *(dp=new (buf) S7471C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7471C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C9)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S7471C9");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(9,5), "S7471C9");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(24,12), "S7471C9");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(24,12), "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C9");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(16,8), "S7471C9");
    check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C9");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(16,8), "S7471C9");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(8,4), "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), 0, "S7471C9");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), 0, "S7471C9");
    check_base_class_offset(lv, (S7471C11*), 0, "S7471C9");
    test_class_info(&lv, &cd_S7471C9);
    dp->~S7471C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C9(Test_S7471C9, "S7471C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7471C9C1Ev();
extern void _ZN7S7471C9D2Ev();
Name_Map name_map_S7471C9[] = {
  NSPAIR(_ZN7S7471C9C1Ev),
  NSPAIR(_ZN7S7471C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
static Base_Class bases_S7471C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C9[];
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY vtc_S7471C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
extern VTBL_ENTRY _ZTV7S7471C9[];
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__7S7471C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A1__7S7471C9[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__7S7471C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__7S7471C9[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C9[] = {
  {&(_ZTV7S7471C9[7]),  7,15},
  {&(_tg__ZTV8S7471C11__7S7471C9[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A1__7S7471C9[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__7S7471C9[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__7S7471C9[6]),  6,6},
  {&(_ZTV7S7471C9[15]),  15,15},
  {&(_ZTV7S7471C9[15]),  15,15},
  {&(_tg__ZTV8S7471C10__7S7471C9[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9[6]),  6,6},
  {&(_tg__ZTV7S7471C2__7S7471C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
Class_Descriptor cd_S7471C9 = {  "S7471C9", // class name
  bases_S7471C9, 12,
  &(vtc_S7471C9[0]), // expected_vtbl_contents
  &(vtt_S7471C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7471C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7471C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C9),10, //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  S7471C15  : S7856C12 , S7856C15 , S7471C2 {
  int s7471c15f0;
  ~S7471C15(); // tgen
  S7471C15(); // tgen
};
//SIG(-1 S7471C15) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S7471C15 ::~S7471C15(){ note_dtor("S7471C15", this);} // tgen
S7471C15 ::S7471C15(){ note_ctor("S7471C15", this);} // tgen

static void Test_S7471C15()
{
  extern Class_Descriptor cd_S7471C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7471C15, buf);
    S7471C15 *dp, &lv = *(dp=new (buf) S7471C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7471C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C15)");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C15");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7471C15");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C15");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C15");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(12,8), "S7471C15");
    check_base_class_offset(lv, (S7471C2*), 0, "S7471C15");
    check_field_offset(lv, s7471c15f0, ABISELECT(8,4), "S7471C15.s7471c15f0");
    test_class_info(&lv, &cd_S7471C15);
    dp->~S7471C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C15(Test_S7471C15, "S7471C15", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7471C15C1Ev();
extern void _ZN8S7471C15D1Ev();
Name_Map name_map_S7471C15[] = {
  NSPAIR(_ZN8S7471C15C1Ev),
  NSPAIR(_ZN8S7471C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
static Base_Class bases_S7471C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S7471C2,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C15[];
static  VTBL_ENTRY vtc_S7471C15[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
extern VTBL_ENTRY _ZTV8S7471C15[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C15[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C15[] = {
  {&(_ZTV8S7471C15[4]),  4,4},
  {&(_tg__ZTV7S7471C2__8S7471C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
Class_Descriptor cd_S7471C15 = {  "S7471C15", // class name
  bases_S7471C15, 6,
  &(vtc_S7471C15[0]), // expected_vtbl_contents
  &(vtt_S7471C15[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7471C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C15),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  S7471C14  : virtual S7471C9 , virtual S7471C15 , virtual S7471C11 {
  int s7471c14f0[2];
  virtual  ~S7471C14(); // _ZN8S7471C14D2Ev
  S7471C14(); // tgen
};
//SIG(-1 S7471C14) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S7471C14 ::~S7471C14(){ note_dtor("S7471C14", this);}
S7471C14 ::S7471C14(){ note_ctor("S7471C14", this);} // tgen

static void Test_S7471C14()
{
  extern Class_Descriptor cd_S7471C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7471C14, buf);
    S7471C14 *dp, &lv = *(dp=new (buf) S7471C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7471C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C14)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(25,17), "S7471C14");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C14");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), 0, "S7471C14");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), 0, "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), 0, "S7471C14");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(24,16), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(16,12), "S7471C14");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(16,12), "S7471C14");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(40,24), "S7471C14");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(32,20), "S7471C14");
    check_base_class_offset(lv, (S7471C15*), ABISELECT(32,20), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(56,32), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(48,28), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(48,28), "S7471C14");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*), ABISELECT(48,28), "S7471C14");
    check_field_offset(lv, s7471c14f0, ABISELECT(8,4), "S7471C14.s7471c14f0");
    test_class_info(&lv, &cd_S7471C14);
    dp->~S7471C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C14(Test_S7471C14, "S7471C14", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7471C14C1Ev();
extern void _ZN8S7471C14D2Ev();
Name_Map name_map_S7471C14[] = {
  NSPAIR(_ZN8S7471C14C1Ev),
  NSPAIR(_ZN8S7471C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
static Base_Class bases_S7471C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C14[];
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C14[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C14[];
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C14[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C14[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C14[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTT_ENTRY vtt_S7471C14[] = {
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[20]),  20,36},
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[10]),  10,36},
  {&(_ZTV8S7471C14[26]),  26,36},
  {&(_ZTV8S7471C14[34]),  34,36},
  {&(_tg__ZTV7S7471C9__8S7471C14[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C14[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C14[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C14[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C14[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C14[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C14 = {  "S7471C14", // class name
  bases_S7471C14, 22,
  &(vtc_S7471C14[0]), // expected_vtbl_contents
  &(vtt_S7471C14[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7471C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7471C14),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C14),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7471C17  : virtual S7471C2 , virtual S7471C8 , virtual S7471C15 , S7856C12 , virtual S7471C9 {
  int s7471c17f0;
  virtual  ~S7471C17(); // _ZN8S7471C17D2Ev
  S7471C17(); // tgen
};
//SIG(-1 S7471C17) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S7471C17 ::~S7471C17(){ note_dtor("S7471C17", this);}
S7471C17 ::S7471C17(){ note_ctor("S7471C17", this);} // tgen

static void Test_S7471C17()
{
  extern Class_Descriptor cd_S7471C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7471C17, buf);
    S7471C17 *dp, &lv = *(dp=new (buf) S7471C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7471C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C17)");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C17");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(48,28), "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(12,8), "S7471C17");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(12,8), "S7471C17");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), ABISELECT(12,8), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(12,8), "S7471C17");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C17");
    /*is_ambiguous_... S7471C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C17");
    check_base_class_offset(lv, (S7471C8*), 0, "S7471C17");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(24,16), "S7471C17");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(16,12), "S7471C17");
    check_base_class_offset(lv, (S7471C15*), ABISELECT(16,12), "S7471C17");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C17");
    /*is_ambiguous_... S7471C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(48,28), "S7471C17");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C17");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(40,24), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(32,20), "S7471C17");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(32,20), "S7471C17");
    check_field_offset(lv, s7471c17f0, ABISELECT(8,4), "S7471C17.s7471c17f0");
    test_class_info(&lv, &cd_S7471C17);
    dp->~S7471C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C17(Test_S7471C17, "S7471C17", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7471C17C1Ev();
extern void _ZN8S7471C17D2Ev();
Name_Map name_map_S7471C17[] = {
  NSPAIR(_ZN8S7471C17C1Ev),
  NSPAIR(_ZN8S7471C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
static Base_Class bases_S7471C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C17[];
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn20_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn20_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C17[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern VTBL_ENTRY _ZTV8S7471C17[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C17[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A1__8S7471C17[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C17[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A2__8S7471C17[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTT_ENTRY vtt_S7471C17[] = {
  {&(_ZTV8S7471C17[10]),  10,32},
  {&(_ZTV8S7471C17[32]),  32,32},
  {&(_ZTV8S7471C17[10]),  10,32},
  {&(_ZTV8S7471C17[16]),  16,32},
  {&(_ZTV8S7471C17[24]),  24,32},
  {&(_ZTV8S7471C17[32]),  32,32},
  {&(_tg__ZTV7S7471C2__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C8__8S7471C17[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A1__8S7471C17[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C17[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A2__8S7471C17[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C17[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C17[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn20_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn20_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C17 = {  "S7471C17", // class name
  bases_S7471C17, 20,
  &(vtc_S7471C17[0]), // expected_vtbl_contents
  &(vtt_S7471C17[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7471C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7471C17),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C17),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7471C18  : virtual S7471C11 , S7471C15 , S7471C10 , S7856C12 {
  virtual  ~S7471C18(); // _ZN8S7471C18D2Ev
  S7471C18(); // tgen
};
//SIG(-1 S7471C18) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S7471C18 ::~S7471C18(){ note_dtor("S7471C18", this);}
S7471C18 ::S7471C18(){ note_ctor("S7471C18", this);} // tgen

static void Test_S7471C18()
{
  extern Class_Descriptor cd_S7471C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7471C18, buf);
    S7471C18 *dp, &lv = *(dp=new (buf) S7471C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7471C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C18)");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(32,16), "S7471C18");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C18");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(33,17), "S7471C18");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(33,17), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(40,20), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(48,24), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(48,24), "S7471C18");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(40,20), "S7471C18");
    check_base_class_offset(lv, (S7471C11*), ABISELECT(24,12), "S7471C18");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), 0, "S7471C18");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(8,4), "S7471C18");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*), 0, "S7471C18");
    check_base_class_offset(lv, (S7471C15*), 0, "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(16,8), "S7471C18");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*), ABISELECT(16,8), "S7471C18");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S7471C18");
    test_class_info(&lv, &cd_S7471C18);
    dp->~S7471C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C18(Test_S7471C18, "S7471C18", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S7471C18C1Ev();
extern void _ZN8S7471C18D2Ev();
Name_Map name_map_S7471C18[] = {
  NSPAIR(_ZN8S7471C18C1Ev),
  NSPAIR(_ZN8S7471C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7471C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7471C11,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C15,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C18[];
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7471C18D1Ev,_ZThn12_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7471C18D0Ev,_ZThn12_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C18[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern VTBL_ENTRY _ZTV8S7471C18[];
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C18[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C10__A__8S7471C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__8S7471C18[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__8S7471C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__8S7471C18[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTT_ENTRY vtt_S7471C18[] = {
  {&(_ZTV8S7471C18[8]),  8,32},
  {&(_tg__ZTV8S7471C15__8S7471C18[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C18[4]),  4,4},
  {&(_tg__ZTV8S7471C10__A__8S7471C18[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C10__A__8S7471C18[4]),  4,4},
  {&(_ZTV8S7471C18[24]),  24,32},
  {&(_ZTV8S7471C18[32]),  32,32},
  {&(_ZTV8S7471C18[32]),  32,32},
  {&(_ZTV8S7471C18[16]),  16,32},
  {&(_tg__ZTV8S7471C11__8S7471C18[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__8S7471C18[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__8S7471C18[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C18D0Ev,_ZThn12_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C18D1Ev,_ZThn12_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C18 = {  "S7471C18", // class name
  bases_S7471C18, 19,
  &(vtc_S7471C18[0]), // expected_vtbl_contents
  &(vtt_S7471C18[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S7471C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C18),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C18),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7471C13  : virtual S7471C14 , virtual S7856C9_nt , virtual S7471C17 , S7471C18 {
  virtual  ~S7471C13(); // _ZN8S7471C13D2Ev
  S7471C13(); // tgen
};
//SIG(-1 S7471C13) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S7471C13 ::~S7471C13(){ note_dtor("S7471C13", this);}
S7471C13 ::S7471C13(){ note_ctor("S7471C13", this);} // tgen

static void Test_S7471C13()
{
  extern Class_Descriptor cd_S7471C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7471C13, buf);
    S7471C13 *dp, &lv = *(dp=new (buf) S7471C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7471C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C13)");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C13");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C13");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), ABISELECT(57,33), "S7471C13");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(57,33), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(32,16), "S7471C13");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(56,32), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(48,28), "S7471C13");
    check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(48,28), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(72,40), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(64,36), "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(64,36), "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(64,36), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(88,48), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(80,44), "S7471C13");
    /*is_ambiguous_... S7471C13::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(80,44), "S7471C13");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(80,44), "S7471C13");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*), ABISELECT(80,44), "S7471C13");
    check_base_class_offset(lv, (S7471C14*), ABISELECT(32,16), "S7471C13");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(96,52), "S7471C13");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(96,52), "S7471C13");
    check_base_class_offset(lv, (S7471C17*), ABISELECT(96,52), "S7471C13");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*), ABISELECT(8,4), "S7471C13");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C13");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*), 0, "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*), ABISELECT(16,8), "S7471C13");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*), ABISELECT(16,8), "S7471C13");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*), ABISELECT(24,12), "S7471C13");
    check_base_class_offset(lv, (S7471C18*), 0, "S7471C13");
    test_class_info(&lv, &cd_S7471C13);
    dp->~S7471C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C13(Test_S7471C13, "S7471C13", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S7471C13C1Ev();
extern void _ZN8S7471C13D2Ev();
Name_Map name_map_S7471C13[] = {
  NSPAIR(_ZN8S7471C13C1Ev),
  NSPAIR(_ZN8S7471C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
static Base_Class bases_S7471C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7471C2,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7471C11,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7471C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7471C15,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7471C18,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C13[];
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C13D1Ev,_ZThn16_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C13D0Ev,_ZThn16_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C13D1Ev,_ZThn28_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C13D0Ev,_ZThn28_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7471C13D1Ev,_ZThn44_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7471C13D0Ev,_ZThn44_N8S7471C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C13[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C13[];
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C18__8S7471C13[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C18__A1__8S7471C13[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C18__A4__8S7471C13[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C13[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C18__A1__8S7471C13[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn80_N8S7471C18D1Ev,_ZThn44_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn80_N8S7471C18D0Ev,_ZThn44_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18__8S7471C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18__8S7471C13[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__8S7471C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__8S7471C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C13[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C13[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C13[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__8S7471C13[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__8S7471C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__8S7471C13[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C13[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C13[] = {
  {&(_ZTV8S7471C13[14]),  14,72},
  {&(_tg__ZTV8S7471C18__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C18__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C18__A4__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C18__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C18__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C18__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C18__8S7471C13[6]),  6,6},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[43]),  43,72},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[33]),  33,72},
  {&(_ZTV8S7471C13[49]),  49,72},
  {&(_ZTV8S7471C13[57]),  57,72},
  {&(_ZTV8S7471C13[70]),  70,72},
  {&(_ZTV8S7471C13[70]),  70,72},
  {&(_ZTV8S7471C13[22]),  22,72},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C14__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__8S7471C13[8]),  8,10},
  {&(_tg__ZTV7S7471C9__8S7471C13[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C13[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C13[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C13[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C13[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C13[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__8S7471C13[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__8S7471C13[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C13[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C18D0Ev,_ZThn44_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C18D1Ev,_ZThn44_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C13D0Ev,_ZThn44_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C13D0Ev,_ZThn28_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7471C13D1Ev,_ZThn44_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C13D1Ev,_ZThn28_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C13D0Ev,_ZThn16_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C13D1Ev,_ZThn16_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C13 = {  "S7471C13", // class name
  bases_S7471C13, 36,
  &(vtc_S7471C13[0]), // expected_vtbl_contents
  &(vtt_S7471C13[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S7471C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C13),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C13),48, //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  S7471C12  : S7471C8 , virtual S7856C12 , S7471C13 , S7471C7 {
  virtual  ~S7471C12(); // _ZN8S7471C12D2Ev
  S7471C12(); // tgen
};
//SIG(-1 S7471C12) C1{ BC2{ VBC3{ m}} VBC4{ m} BC5{ VBC6{ VBC7{ VBC8{ m} VBC3 VBC9{ BC8 VBC10{ VBC8 BC3 VBC4} VBC3} BC4 BC11{ BC3 VBC8 VBC4 BC10 VBC9 vd} vd} VBC12{ BC4 BC3 BC10 Fi} VBC11 vd Fi[2]} VBC13{ m} VBC14{ VBC10 VBC2 VBC12 BC4 VBC7 vd Fi} BC15{ VBC11 BC12 BC9 BC4 vd} vd} BC16{ BC3 BC2 vd} vd}


 S7471C12 ::~S7471C12(){ note_dtor("S7471C12", this);}
S7471C12 ::S7471C12(){ note_ctor("S7471C12", this);} // tgen

static void Test_S7471C12()
{
  extern Class_Descriptor cd_S7471C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7471C12, buf);
    S7471C12 *dp, &lv = *(dp=new (buf) S7471C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7471C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C12)");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C12");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), 0, "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C17::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(48,24), "S7471C12");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(72,40), "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(64,36), "S7471C12");
    check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(64,36), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(88,48), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(80,44), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(80,44), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(80,44), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(104,56), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(96,52), "S7471C12");
    /*is_ambiguous_... S7471C12::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(96,52), "S7471C12");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(96,52), "S7471C12");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*), ABISELECT(96,52), "S7471C12");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*), ABISELECT(48,24), "S7471C12");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*), 0, "S7471C12");
    check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(112,60), "S7471C12");
    /*is_ambiguous_... S7471C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(112,60), "S7471C12");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*), ABISELECT(112,60), "S7471C12");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(16,8), "S7471C12");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(24,12), "S7471C12");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*), ABISELECT(24,12), "S7471C12");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*), ABISELECT(32,16), "S7471C12");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*), ABISELECT(8,4), "S7471C12");
    check_base_class_offset(lv, (S7471C13*), ABISELECT(8,4), "S7471C12");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(40,20), "S7471C12");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(40,20), "S7471C12");
    check_base_class_offset(lv, (S7471C7*), ABISELECT(40,20), "S7471C12");
    test_class_info(&lv, &cd_S7471C12);
    dp->~S7471C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C12(Test_S7471C12, "S7471C12", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S7471C12C1Ev();
extern void _ZN8S7471C12D2Ev();
Name_Map name_map_S7471C12[] = {
  NSPAIR(_ZN8S7471C12C1Ev),
  NSPAIR(_ZN8S7471C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
static Base_Class bases_S7471C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7471C8,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(64,36), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(80,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(96,52), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(48,24), //bcp->offset
    43, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S7471C8,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(112,60), //bcp->offset
    80, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    34, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(24,12), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    40, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7471C12[];
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C12D1Ev,_ZThn24_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C12D0Ev,_ZThn24_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7471C12D1Ev,_ZThn36_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7471C12D0Ev,_ZThn36_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C12[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7471C12[];
static  VTBL_ENTRY _tg__ZTV7S7471C8__A__8S7471C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C12[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  ABISELECT(-8,-4),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C13__A4__8S7471C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C13__A1__8S7471C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn88_N8S7471C18D1Ev,_ZThn48_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn88_N8S7471C18D0Ev,_ZThn48_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C13__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C13D1Ev,_ZThn20_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn40_N8S7471C13D0Ev,_ZThn20_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C13__8S7471C12[] = {
  ABISELECT(-40,-20),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7471C13D1Ev,_ZThn32_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7471C13D0Ev,_ZThn32_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C13__8S7471C12[] = {
  ABISELECT(-56,-32),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C13__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn88_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn88_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C13__8S7471C12[] = {
  ABISELECT(-88,-48),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C13__8S7471C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C13__8S7471C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C12[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__A2__8S7471C12[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__8S7471C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__8S7471C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C12[] = {
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__8S7471C12[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__8S7471C12[] = {
  ABISELECT(-48,-24),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__8S7471C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__8S7471C12[] = {
  ABISELECT(48,24),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A1__8S7471C12[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C12[] = {
  {&(_ZTV8S7471C12[14]),  14,93},
  {&(_tg__ZTV7S7471C8__A__8S7471C12[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C12[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C13__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C13__A4__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C13__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C13__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C13__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C13__8S7471C12[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C13__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C12[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__A2__8S7471C12[3]),  3,3},
  {&(_ZTV8S7471C12[30]),  30,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[64]),  64,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[54]),  54,93},
  {&(_ZTV8S7471C12[70]),  70,93},
  {&(_ZTV8S7471C12[78]),  78,93},
  {&(_ZTV8S7471C12[91]),  91,93},
  {&(_ZTV8S7471C12[91]),  91,93},
  {&(_ZTV8S7471C12[38]),  38,93},
  {&(_ZTV8S7471C12[41]),  41,93},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C14__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__8S7471C12[8]),  8,10},
  {&(_tg__ZTV7S7471C9__8S7471C12[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__8S7471C12[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C15__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C12[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__8S7471C12[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C12[6]),  6,6},
  {&(_tg__ZTV8S7471C17__8S7471C12[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__8S7471C12[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__8S7471C12[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__8S7471C12[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A1__8S7471C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D0Ev,_ZThn28_N8S7471C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D0Ev,_ZThn12_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C14D1Ev,_ZThn28_N8S7471C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7471C14D1Ev,_ZThn12_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7471C13D0Ev,_ZThn32_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7471C13D1Ev,_ZThn32_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7471C13D0Ev,_ZThn20_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7471C13D1Ev,_ZThn20_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C18D0Ev,_ZThn48_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7471C18D1Ev,_ZThn48_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7471C12D0Ev,_ZThn36_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7471C12D1Ev,_ZThn36_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C12D0Ev,_ZThn24_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7471C12D1Ev,_ZThn24_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C12 = {  "S7471C12", // class name
  bases_S7471C12, 41,
  &(vtc_S7471C12[0]), // expected_vtbl_contents
  &(vtt_S7471C12[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S7471C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7471C12),93, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7471C12),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7471C6  : virtual S7471C7 , virtual S7471C9 , S7471C12 , S7471C18 , S7471C17 {
  virtual  ~S7471C6(); // _ZN7S7471C6D2Ev
  S7471C6(); // tgen
};
//SIG(-1 S7471C6) C1{ VBC2{ BC3{ m} BC4{ VBC3} vd} VBC5{ VBC6{ m} VBC3 VBC7{ BC6 VBC8{ VBC6 BC3 VBC9{ m}} VBC3} BC9 BC10{ BC3 VBC6 VBC9 BC8 VBC7 vd} vd} BC11{ BC4 VBC9 BC12{ VBC13{ VBC5 VBC14{ BC9 BC3 BC8 Fi} VBC10 vd Fi[2]} VBC15{ m} VBC16{ VBC8 VBC4 VBC14 BC9 VBC5 vd Fi} BC17{ VBC10 BC14 BC7 BC9 vd} vd} BC2 vd} BC17 BC16 vd}


 S7471C6 ::~S7471C6(){ note_dtor("S7471C6", this);}
S7471C6 ::S7471C6(){ note_ctor("S7471C6", this);} // tgen

static void Test_S7471C6()
{
  extern Class_Descriptor cd_S7471C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S7471C6, buf);
    S7471C6 *dp, &lv = *(dp=new (buf) S7471C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S7471C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C6)");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), 0, "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), 0, "S7471C6");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), 0, "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C7*), ABISELECT(96,48), "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C6");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C6");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(120,60), "S7471C6");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(112,56), "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C9*), ABISELECT(104,52), "S7471C6");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(104,52), "S7471C6");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(144,76), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(136,72), "S7471C6");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(136,72), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(160,84), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(152,80), "S7471C6");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(152,80), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C18*), ABISELECT(152,80), "S7471C6");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*)(S7471C12*), ABISELECT(120,60), "S7471C6");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*)(S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(168,88), "S7471C6");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*)(S7471C12*), ABISELECT(168,88), "S7471C6");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(16,8), "S7471C6");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(24,12), "S7471C6");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(24,12), "S7471C6");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(32,16), "S7471C6");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    check_base_class_offset(lv, (S7471C13*)(S7471C12*), ABISELECT(8,4), "S7471C6");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C7*)(S7471C12*), ABISELECT(40,20), "S7471C6");
    check_base_class_offset(lv, (S7471C12*), 0, "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*), ABISELECT(56,28), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*), ABISELECT(64,32), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*), ABISELECT(64,32), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*), ABISELECT(72,36), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C18*), ABISELECT(48,24), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(80,40), "S7471C6");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C17*), ABISELECT(80,40), "S7471C6");
    test_class_info(&lv, &cd_S7471C6);
    dp->~S7471C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C6(Test_S7471C6, "S7471C6", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN7S7471C6C1Ev();
extern void _ZN7S7471C6D2Ev();
Name_Map name_map_S7471C6[] = {
  NSPAIR(_ZN7S7471C6C1Ev),
  NSPAIR(_ZN7S7471C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7471C12;
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
static Base_Class bases_S7471C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C8,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(96,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(104,52), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(136,72), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(160,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
    25, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,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
    24, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(152,80), //bcp->offset
    105, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(120,60), //bcp->offset
    88, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(168,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
    30, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(168,88), //bcp->offset
    115, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    34, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    43, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(40,20), //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
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7471C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    49, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    48, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(80,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C6[];
extern void _ZN7S7471C6D1Ev();
extern void _ZN7S7471C6D0Ev();
extern void ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7471C6D1Ev,_ZThn52_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7471C6D0Ev,_ZThn52_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn120_N7S7471C6D1Ev,_ZThn60_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn120_N7S7471C6D0Ev,_ZThn60_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S7471C6D1Ev,_ZThn80_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S7471C6D0Ev,_ZThn80_N7S7471C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S7471C6D1Ev,_ZThn88_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S7471C6D0Ev,_ZThn88_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C6[] = {
  ABISELECT(96,48),
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&_ZN7S7471C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C6D0Ev,
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7471C6[];
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C12__7S7471C6[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  0,
  ABISELECT(152,80),
  ABISELECT(136,72),
  ABISELECT(120,60),
  ABISELECT(120,60),
  0,
  ABISELECT(104,52),
  ABISELECT(120,60),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C88S7471C12__A1__7S7471C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C12__A4__7S7471C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S7471C18D1Ev,_ZThn76_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S7471C18D0Ev,_ZThn76_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-96,-48),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7471C13D1Ev,_ZThn76_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7471C13D0Ev,_ZThn76_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-144,-76),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S7471C13D1Ev,_ZThn84_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S7471C13D0Ev,_ZThn84_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C12__A1__7S7471C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C78S7471C12__A3__7S7471C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C12__7S7471C6[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(96,48),
  ABISELECT(112,56),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(112,56),
  ABISELECT(144,76),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C12__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C12__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C12__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C12D1Ev,_ZThn80_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C12D0Ev,_ZThn80_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C12__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S7471C12D1Ev,_ZThn88_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S7471C12D0Ev,_ZThn88_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C12__7S7471C6[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(96,48),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C12__7S7471C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(104,56),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C18__A2__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C18__A5__7S7471C6[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A2__7S7471C6[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C18__A2__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C18D1Ev,_ZThn56_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C18D0Ev,_ZThn56_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-104,-56),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C18__A1__7S7471C6[] = {
  ABISELECT(-64,-32),
  ABISELECT(56,28),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__A__7S7471C6[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(56,32),
  ABISELECT(88,48),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(40,20),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-168,-88),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7471C17D1Ev,_ZThn12_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7471C17D0Ev,_ZThn12_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__A__7S7471C6[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C6[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__7S7471C6[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A1__7S7471C6[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__7S7471C6[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C6[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__7S7471C6[] = {
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__7S7471C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A2__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A3__7S7471C6[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C6[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__7S7471C6[] = {
  ABISELECT(-120,-60),
  0,
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__7S7471C6[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__7S7471C6[] = {
  ABISELECT(64,36),
  ABISELECT(-104,-52),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A2__7S7471C6[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C6[] = {
  {&(_ZTV7S7471C6[15]),  15,128},
  {&(_tg__ZTV8S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV7S7471C88S7471C12__A1__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C138S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C138S7471C12__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C12__A4__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C138S7471C12__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C138S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C12__A1__7S7471C6[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C78S7471C12__A3__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C12__7S7471C6[14]),  14,16},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C12__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C12__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C12__7S7471C6[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C12__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C12__7S7471C6[3]),  3,5},
  {&(_tg__ZTV8S7471C18__A1__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C18__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C18__A5__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C18__A2__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C18__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C18__A1__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C18__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__A__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C17__A__7S7471C6[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C17__A__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__A__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__A__7S7471C6[6]),  6,6},
  {&(_ZTV7S7471C6[76]),  76,128},
  {&(_ZTV7S7471C6[86]),  86,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[31]),  31,128},
  {&(_ZTV7S7471C6[99]),  99,128},
  {&(_ZTV7S7471C6[105]),  105,128},
  {&(_ZTV7S7471C6[113]),  113,128},
  {&(_ZTV7S7471C6[126]),  126,128},
  {&(_ZTV7S7471C6[126]),  126,128},
  {&(_ZTV7S7471C6[39]),  39,128},
  {&(_ZTV7S7471C6[42]),  42,128},
  {&(_ZTV7S7471C6[52]),  52,128},
  {&(_ZTV7S7471C6[60]),  60,128},
  {&(_ZTV7S7471C6[70]),  70,128},
  {&(_tg__ZTV7S7471C7__7S7471C6[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__7S7471C6[3]),  3,3},
  {&(_tg__ZTV7S7471C9__7S7471C6[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__7S7471C6[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A1__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C14__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C15__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A2__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C6[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A3__7S7471C6[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C6[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C6[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__7S7471C6[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__7S7471C6[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C6[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A2__7S7471C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C6[];
extern  VTBL_ENTRY _ZTV7S7471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C6[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C17D0Ev,_ZThn12_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7471C17D1Ev,_ZThn12_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C12D0Ev,_ZThn80_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C12D0Ev,_ZThn52_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C12D1Ev,_ZThn80_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C12D1Ev,_ZThn52_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C12D0Ev,_ZThn88_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C12D0Ev,_ZThn60_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C12D1Ev,_ZThn88_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C12D1Ev,_ZThn60_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C13D0Ev,_ZThn76_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D0Ev,_ZThn48_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C13D1Ev,_ZThn76_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7471C13D1Ev,_ZThn48_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C13D0Ev,_ZThn84_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C13D0Ev,_ZThn56_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C13D1Ev,_ZThn84_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C13D1Ev,_ZThn56_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C18D0Ev,_ZThn56_N8S7471C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C18D0Ev,_ZThn76_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C18D1Ev,_ZThn56_N8S7471C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7471C18D1Ev,_ZThn76_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C6D0Ev,_ZThn88_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C6D0Ev,_ZThn60_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C6D1Ev,_ZThn88_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C6D1Ev,_ZThn60_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7471C6D0Ev,_ZThn80_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C6D0Ev,_ZThn52_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7471C6D1Ev,_ZThn80_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C6D1Ev,_ZThn52_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C6 = {  "S7471C6", // class name
  bases_S7471C6, 56,
  &(vtc_S7471C6[0]), // expected_vtbl_contents
  &(vtt_S7471C6[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI7S7471C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7471C6),128, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C6),96, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7471C1  : S7471C2 , S7471C6 {
  ~S7471C1(); // tgen
  S7471C1(); // tgen
};
//SIG(1 S7471C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ VBC7{ BC4 BC8{ VBC4} vd} VBC9{ VBC3 VBC4 VBC10{ BC3 VBC2 VBC4} BC5 BC11{ BC4 VBC3 VBC5 BC2 VBC10 vd} vd} BC12{ BC8 VBC5 BC13{ VBC14{ VBC9 VBC15{ BC5 BC4 BC2 Fi} VBC11 vd Fi[2]} VBC16{ m} VBC17{ VBC2 VBC8 VBC15 BC5 VBC9 vd Fi} BC18{ VBC11 BC15 BC10 BC5 vd} vd} BC7 vd} BC18 BC17 vd}}


S7471C1 ::~S7471C1(){ note_dtor("S7471C1", this);} // tgen
S7471C1 ::S7471C1(){ note_ctor("S7471C1", this);} // tgen

static void Test_S7471C1()
{
  extern Class_Descriptor cd_S7471C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S7471C1, buf);
    S7471C1 *dp, &lv = *(dp=new (buf) S7471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S7471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7471C1)");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C11*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C11*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C12*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*)(S7471C9*), 0, "S7471C1");
    /*is_ambiguous_... S7471C12::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C11*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C11*), 0, "S7471C1");
    check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C9*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C8*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    check_base_class_offset(lv, (S7856C15*)(S7471C8*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(112,56), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C7*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C7 */ AMB_check_base_class_offset(lv, (S7471C7*)(S7471C6*), ABISELECT(104,52), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C17*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7471C10*)(S7471C9*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7471C10*)(S7471C11*)(S7471C9*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C11*), ABISELECT(136,68), "S7471C1");
    /*is_ambiguous_... S7471C9::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*)(S7471C9*), ABISELECT(128,64), "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C11::S7471C2 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C11*)(S7471C9*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C9*)(S7471C6*), ABISELECT(120,60), "S7471C1");
    check_base_class_offset(lv, (S7471C9*)(S7471C14*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C9*)(S7471C17*)(S7471C6*), ABISELECT(120,60), "S7471C1");
    /*is_ambiguous_... S7471C12::S7471C8 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C12*)(S7471C6*), ABISELECT(8,4), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*), ABISELECT(160,84), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C15 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*), ABISELECT(152,80), "S7471C1");
    check_base_class_offset(lv, (S7471C15*)(S7471C14*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C17*)(S7471C6*), ABISELECT(152,80), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C11*), ABISELECT(176,92), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C11*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C11*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C14::S7471C11 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C14*), ABISELECT(168,88), "S7471C1");
    check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(168,88), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C11*)(S7471C18*)(S7471C6*), ABISELECT(168,88), "S7471C1");
    check_base_class_offset(lv, (S7471C14*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(136,68), "S7471C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S7471C13*)(S7471C12*)(S7471C6*), 0, "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C8*)(S7471C17*)(S7471C6*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C1::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*), ABISELECT(184,96), "S7471C1");
    check_base_class_offset(lv, (S7471C17*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(184,96), "S7471C1");
    /*is_ambiguous_... S7471C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C15::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(24,12), "S7471C1");
    check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(32,16), "S7471C1");
    /*is_ambiguous_... S7471C18::S7471C10 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(32,16), "S7471C1");
    /*is_ambiguous_... S7471C18::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(40,20), "S7471C1");
    check_base_class_offset(lv, (S7471C18*)(S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    check_base_class_offset(lv, (S7471C13*)(S7471C12*)(S7471C6*), ABISELECT(16,8), "S7471C1");
    /*is_ambiguous_... S7471C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C8*)(S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C7*)(S7471C12*)(S7471C6*), ABISELECT(48,24), "S7471C1");
    check_base_class_offset(lv, (S7471C12*)(S7471C6*), ABISELECT(8,4), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(64,32), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C2*)(S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C15*)(S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(72,36), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C10*)(S7471C18*)(S7471C6*), ABISELECT(72,36), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C18*)(S7471C6*), ABISELECT(80,40), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C18 */ AMB_check_base_class_offset(lv, (S7471C18*)(S7471C6*), ABISELECT(56,28), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7471C17*)(S7471C6*), ABISELECT(88,44), "S7471C1");
    /*is_ambiguous_... S7471C6::S7471C17 */ AMB_check_base_class_offset(lv, (S7471C17*)(S7471C6*), ABISELECT(88,44), "S7471C1");
    check_base_class_offset(lv, (S7471C6*), ABISELECT(8,4), "S7471C1");
    test_class_info(&lv, &cd_S7471C1);
    dp->~S7471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7471C1(Test_S7471C1, "S7471C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S7471C1C1Ev();
extern void _ZN7S7471C1D1Ev();
Name_Map name_map_S7471C1[] = {
  NSPAIR(_ZN7S7471C1C1Ev),
  NSPAIR(_ZN7S7471C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C9;
extern VTBL_ENTRY _ZTI7S7471C9[];
extern  VTBL_ENTRY _ZTV7S7471C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C9[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C11;
extern VTBL_ENTRY _ZTI8S7471C11[];
extern  VTBL_ENTRY _ZTV8S7471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C11[];
extern Class_Descriptor cd_S7471C14;
extern VTBL_ENTRY _ZTI8S7471C14[];
extern  VTBL_ENTRY _ZTV8S7471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C14[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7471C13;
extern VTBL_ENTRY _ZTI8S7471C13[];
extern  VTBL_ENTRY _ZTV8S7471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C13[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C8;
extern VTBL_ENTRY _ZTI7S7471C8[];
extern  VTBL_ENTRY _ZTV7S7471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C8[];
extern Class_Descriptor cd_S7471C7;
extern VTBL_ENTRY _ZTI7S7471C7[];
extern  VTBL_ENTRY _ZTV7S7471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C7[];
extern Class_Descriptor cd_S7471C12;
extern VTBL_ENTRY _ZTI8S7471C12[];
extern  VTBL_ENTRY _ZTV8S7471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7471C2;
extern VTBL_ENTRY _ZTI7S7471C2[];
extern  VTBL_ENTRY _ZTV7S7471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C2[];
extern Class_Descriptor cd_S7471C15;
extern VTBL_ENTRY _ZTI8S7471C15[];
extern  VTBL_ENTRY _ZTV8S7471C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7471C10;
extern VTBL_ENTRY _ZTI8S7471C10[];
extern  VTBL_ENTRY _ZTV8S7471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C18;
extern VTBL_ENTRY _ZTI8S7471C18[];
extern  VTBL_ENTRY _ZTV8S7471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C18[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7471C17;
extern VTBL_ENTRY _ZTI8S7471C17[];
extern  VTBL_ENTRY _ZTV8S7471C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7471C17[];
extern Class_Descriptor cd_S7471C6;
extern VTBL_ENTRY _ZTI7S7471C6[];
extern  VTBL_ENTRY _ZTV7S7471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C6[];
static Base_Class bases_S7471C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7471C2,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(104,52), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7471C10,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7471C9,    ABISELECT(120,60), //bcp->offset
    95, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7471C8,    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
    16, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(152,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(160,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
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(152,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
    22, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(152,80), //bcp->offset
    118, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7471C11,    ABISELECT(168,88), //bcp->offset
    122, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7471C14,    ABISELECT(136,68), //bcp->offset
    105, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7471C8,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(184,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
    32, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(184,96), //bcp->offset
    132, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(32,16), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    41, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7471C13,    ABISELECT(16,8), //bcp->offset
    34, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    45, //immediately_derived
  0, 0},
  {&cd_S7471C8,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7471C7,    ABISELECT(48,24), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7471C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    50, //immediately_derived
  0, 0},
  {&cd_S7471C2,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S7471C15,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C24,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7471C10,    ABISELECT(72,36), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7471C18,    ABISELECT(56,28), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    57, //immediately_derived
  0, 0},
  {&cd_S7471C17,    ABISELECT(88,44), //bcp->offset
    77, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S7471C6,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7471C1[];
extern void _ZN7S7471C1D1Ev();
extern void _ZN7S7471C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7471C1D1Ev,_ZThn4_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C1D0Ev,_ZThn4_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7471C1D1Ev,_ZThn8_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7471C1D0Ev,_ZThn8_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7471C1D1Ev,_ZThn24_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C1D0Ev,_ZThn24_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7471C1D1Ev,_ZThn28_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7471C1D0Ev,_ZThn28_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S7471C1D1Ev,_ZThn44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S7471C1D0Ev,_ZThn44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7471C1D1Ev,_ZThn52_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7471C1D0Ev,_ZThn52_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7471C1D1Ev,_ZThn60_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7471C1D0Ev,_ZThn60_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S7471C1D1Ev,_ZThn68_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S7471C1D0Ev,_ZThn68_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S7471C1D1Ev,_ZThn88_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S7471C1D0Ev,_ZThn88_N7S7471C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S7471C1D1Ev,_ZThn96_N7S7471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S7471C1D0Ev,_ZThn96_N7S7471C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7471C1[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  0,
  ABISELECT(168,88),
  ABISELECT(152,80),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(136,68),
  ABISELECT(120,60),
  ABISELECT(112,56),
  ABISELECT(104,52),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&_ZN7S7471C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C1D0Ev,
  ABISELECT(96,48),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C1D1Ev,_ZThn4_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C1D0Ev,_ZThn4_N7S7471C1D0Ev),
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7471C1D1Ev,_ZThn8_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7471C1D0Ev,_ZThn8_N7S7471C1D0Ev),
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(64,32),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C1D1Ev,_ZThn24_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C1D0Ev,_ZThn24_N7S7471C1D0Ev),
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7471C1D1Ev,_ZThn28_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7471C1D0Ev,_ZThn28_N7S7471C1D0Ev),
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S7471C1D1Ev,_ZThn44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S7471C1D0Ev,_ZThn44_N7S7471C1D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(8,4),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev),
  ABISELECT(-136,-68),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  ABISELECT(-168,-88),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7471C1[];
static  VTBL_ENTRY _tg__ZTV7S7471C2__A__7S7471C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN7S7471C6D1Ev();
extern void _ZN7S7471C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C6__7S7471C1[] = {
  ABISELECT(96,48),
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&_ZN7S7471C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C6D0Ev,
};
extern void _ZN8S7471C12D1Ev();
extern void _ZN8S7471C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  ABISELECT(-8,-4),
  ABISELECT(160,84),
  ABISELECT(144,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(112,56),
  ABISELECT(128,64),
  ABISELECT(-8,-4),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&_ZN8S7471C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C88S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN8S7471C13D1Ev();
extern void _ZN8S7471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&_ZN8S7471C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C13D0Ev,
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C127S7471C6__A5__7S7471C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C18D1Ev,_ZThn80_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C18D0Ev,_ZThn80_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S7471C13D1Ev,_ZThn60_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn120_N8S7471C13D0Ev,_ZThn60_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S7471C13D1Ev,_ZThn80_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S7471C13D0Ev,_ZThn80_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S7471C13D1Ev,_ZThn88_N8S7471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S7471C13D0Ev,_ZThn88_N8S7471C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C13[0]),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C127S7471C6__A1__7S7471C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C78S7471C127S7471C6__A3__7S7471C1[] = {
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C13__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D1Ev,_ZThn4_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S7471C12D0Ev,_ZThn4_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7471C12D1Ev,_ZThn64_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7471C12D0Ev,_ZThn64_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn56_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn56_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7471C12D1Ev,_ZThn84_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7471C12D0Ev,_ZThn84_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7471C12D1Ev,_ZThn92_N8S7471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7471C12D0Ev,_ZThn92_N8S7471C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
};
extern void ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C7__8S7471C127S7471C6__7S7471C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D1Ev,_ZThn20_N8S7471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7471C12D0Ev,_ZThn20_N8S7471C12D0Ev),
};
extern void _ZN8S7471C18D1Ev();
extern void _ZN8S7471C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&_ZN8S7471C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C158S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C158S7471C187S7471C6__A6__7S7471C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__8S7471C108S7471C187S7471C6__A2__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S7471C18D1Ev,_ZThn60_N8S7471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev)();
extern void ABISELECT(_ZThn112_N8S7471C18D0Ev,_ZThn60_N8S7471C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__A__8S7471C187S7471C6__A1__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C18[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn16_N8S7471C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn16_N8S7471C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C177S7471C6__A1__7S7471C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C6__7S7471C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(8,4),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7471C6D1Ev,_ZThn56_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7471C6D0Ev,_ZThn56_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C6__7S7471C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S7471C6D1Ev,_ZThn64_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S7471C6D0Ev,_ZThn64_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C6__7S7471C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C138S7471C12__7S7471C6__7S7471C1[] = {
  ABISELECT(168,88),
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(136,72),
  ABISELECT(104,52),
  ABISELECT(120,60),
  ABISELECT(96,48),
  ABISELECT(120,60),
  ABISELECT(120,60),
  ABISELECT(152,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D1Ev,_ZThn4_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7471C6D0Ev,_ZThn4_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C6__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7471C6D1Ev,_ZThn84_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7471C6D0Ev,_ZThn84_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7471C6D1Ev,_ZThn92_N7S7471C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7471C6D0Ev,_ZThn92_N7S7471C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C6__7S7471C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(80,40),
  ABISELECT(104,52),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C78S7471C12__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(64,32),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D1Ev,_ZThn20_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7471C6D0Ev,_ZThn20_N7S7471C6D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C18__A1__7S7471C6__7S7471C1[] = {
  ABISELECT(56,28),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(112,60),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D1Ev,_ZThn24_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7471C6D0Ev,_ZThn24_N7S7471C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C108S7471C18__A2__7S7471C6__7S7471C1[] = {
  ABISELECT(40,20),
  ABISELECT(64,32),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
};
extern void ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7471C17__A__7S7471C6__7S7471C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(64,36),
  ABISELECT(96,52),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7471C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D1Ev,_ZThn40_N7S7471C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7471C6D0Ev,_ZThn40_N7S7471C6D0Ev),
};
extern void _ZN7S7471C7D1Ev();
extern void _ZN7S7471C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C7__7S7471C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C7[0]),
  (VTBL_ENTRY)&_ZN7S7471C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C87S7471C7__7S7471C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
extern void _ZN7S7471C9D1Ev();
extern void _ZN7S7471C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7471C9__7S7471C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
  (VTBL_ENTRY)&_ZN7S7471C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7471C9D0Ev,
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C117S7471C9__7S7471C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C117S7471C9__A2__7S7471C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C9__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7471C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C2__A1__7S7471C1[] = {
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C14D1Ev();
extern void _ZN8S7471C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C14__7S7471C1[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&_ZN8S7471C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C14D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C14__7S7471C1[] = {
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C14__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__8S7471C14__7S7471C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7471C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C15__A3__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
extern void _ZN8S7471C11D1Ev();
extern void _ZN8S7471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C11__A1__7S7471C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
  (VTBL_ENTRY)&_ZN8S7471C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7471C28S7471C11__A4__7S7471C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7471C11[0]),
};
extern void _ZN8S7471C17D1Ev();
extern void _ZN8S7471C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7471C17__7S7471C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-184,-96),
  ABISELECT(-184,-96),
  ABISELECT(-48,-28),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&_ZN8S7471C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7471C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7471C10__8S7471C17__7S7471C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-136,-68),
  ABISELECT(-136,-68),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7471C15__8S7471C17__7S7471C1[] = {
  ABISELECT(-152,-80),
  ABISELECT(-152,-80),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7471C9__8S7471C17__7S7471C1[] = {
  ABISELECT(64,36),
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7471C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7471C8__A2__7S7471C1[] = {
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7471C8[0]),
};
static  VTT_ENTRY vtt_S7471C1[] = {
  {&(_ZTV7S7471C1[15]),  15,145},
  {&(_tg__ZTV7S7471C2__A__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C6__7S7471C1[15]),  15,17},
  {&(_tg__ZTV8S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV7S7471C88S7471C127S7471C6__A1__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C138S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C188S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C188S7471C138S7471C127S7471C6__A5__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C188S7471C138S7471C127S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C188S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C138S7471C127S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C138S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C138S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C18__A1__8S7471C138S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C127S7471C6__A1__7S7471C1[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C78S7471C127S7471C6__A3__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C13__8S7471C127S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV7S7471C9__8S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__8S7471C127S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C127S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__8S7471C127S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C13__A1__8S7471C127S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C7__8S7471C127S7471C6__7S7471C1[3]),  3,5},
  {&(_tg__ZTV8S7471C187S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C158S7471C187S7471C6__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C158S7471C187S7471C6__A6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C108S7471C187S7471C6__A2__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__8S7471C108S7471C187S7471C6__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__8S7471C187S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__A__8S7471C187S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C177S7471C6__A1__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C8__8S7471C177S7471C6__A1__7S7471C1[3]),  3,3},
  {&(_tg__ZTV8S7471C15__8S7471C177S7471C6__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C177S7471C6__A1__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C177S7471C6__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C7__7S7471C6__7S7471C1[4]),  4,6},
  {&(_tg__ZTV7S7471C9__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C138S7471C12__7S7471C6__7S7471C1[14]),  14,16},
  {&(_tg__ZTV8S7471C14__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C15__7S7471C6__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C17__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C17__7S7471C6__7S7471C1[11]),  11,13},
  {&(_tg__ZTV8S7471C108S7471C188S7471C138S7471C12__A1__7S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C78S7471C12__A1__7S7471C6__7S7471C1[3]),  3,5},
  {&(_tg__ZTV8S7471C18__A1__7S7471C6__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C108S7471C18__A2__7S7471C6__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__A__7S7471C6__7S7471C1[10]),  10,12},
  {&(_ZTV7S7471C1[32]),  32,145},
  {&(_ZTV7S7471C1[93]),  93,145},
  {&(_ZTV7S7471C1[103]),  103,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[48]),  48,145},
  {&(_ZTV7S7471C1[116]),  116,145},
  {&(_ZTV7S7471C1[122]),  122,145},
  {&(_ZTV7S7471C1[130]),  130,145},
  {&(_ZTV7S7471C1[143]),  143,145},
  {&(_ZTV7S7471C1[143]),  143,145},
  {&(_ZTV7S7471C1[56]),  56,145},
  {&(_ZTV7S7471C1[59]),  59,145},
  {&(_ZTV7S7471C1[69]),  69,145},
  {&(_ZTV7S7471C1[77]),  77,145},
  {&(_ZTV7S7471C1[87]),  87,145},
  {&(_tg__ZTV7S7471C7__7S7471C1[3]),  3,5},
  {&(_tg__ZTV7S7471C87S7471C7__7S7471C1[3]),  3,3},
  {&(_tg__ZTV7S7471C9__7S7471C1[7]),  7,9},
  {&(_tg__ZTV8S7471C117S7471C9__7S7471C1[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C117S7471C9__A2__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C117S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C9__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C2__A1__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV7S7471C9__8S7471C14__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C14__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C14__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__8S7471C14__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C15__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C28S7471C15__A3__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C11__A1__7S7471C1[7]),  7,9},
  {&(_tg__ZTV7S7471C28S7471C11__A4__7S7471C1[4]),  4,4},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C10__8S7471C11__A1__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C1[6]),  6,6},
  {&(_tg__ZTV8S7471C17__7S7471C1[10]),  10,12},
  {&(_tg__ZTV8S7471C15__8S7471C17__7S7471C1[4]),  4,4},
  {&(_tg__ZTV7S7471C9__8S7471C17__7S7471C1[8]),  8,10},
  {&(_tg__ZTV8S7471C10__8S7471C17__7S7471C1[6]),  6,6},
  {&(_tg__ZTV7S7471C8__A2__7S7471C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7471C1[];
extern  VTBL_ENTRY _ZTV7S7471C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7471C1[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D0Ev,_ZTv0_n32_N8S7471C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D0Ev,_ZThn20_N8S7471C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C14D1Ev,_ZTv0_n32_N8S7471C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C14D1Ev,_ZThn20_N8S7471C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D0Ev,_ZTv0_n44_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7471C6D0Ev,_ZThn92_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7471C6D0Ev,_ZThn64_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C6D1Ev,_ZTv0_n44_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7471C6D1Ev,_ZThn92_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7471C6D1Ev,_ZThn64_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D0Ev,_ZTv0_n32_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7471C6D0Ev,_ZThn84_N7S7471C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7471C6D0Ev,_ZThn56_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C6D1Ev,_ZTv0_n32_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7471C6D1Ev,_ZThn84_N7S7471C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7471C6D1Ev,_ZThn56_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D0Ev,_ZTv0_n16_N7S7471C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D0Ev,_ZThn48_N7S7471C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C6D1Ev,_ZTv0_n16_N7S7471C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7471C6D1Ev,_ZThn48_N7S7471C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D0Ev,_ZTv0_n32_N8S7471C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D0Ev,_ZThn16_N8S7471C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C17D1Ev,_ZTv0_n32_N8S7471C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7471C17D1Ev,_ZThn16_N8S7471C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D0Ev,_ZTv0_n32_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C12D0Ev,_ZThn84_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D0Ev,_ZThn56_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C12D1Ev,_ZTv0_n32_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7471C12D1Ev,_ZThn84_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C12D1Ev,_ZThn56_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D0Ev,_ZTv0_n44_N8S7471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7471C12D0Ev,_ZThn92_N8S7471C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7471C12D0Ev,_ZThn64_N8S7471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C12D1Ev,_ZTv0_n44_N8S7471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7471C12D1Ev,_ZThn92_N8S7471C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7471C12D1Ev,_ZThn64_N8S7471C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D0Ev,_ZTv0_n32_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C13D0Ev,_ZThn80_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D0Ev,_ZThn52_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C13D1Ev,_ZTv0_n32_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C13D1Ev,_ZThn80_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7471C13D1Ev,_ZThn52_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D0Ev,_ZTv0_n44_N8S7471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C13D0Ev,_ZThn88_N8S7471C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C13D0Ev,_ZThn60_N8S7471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7471C13D1Ev,_ZTv0_n44_N8S7471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S7471C13D1Ev,_ZThn88_N8S7471C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7471C13D1Ev,_ZThn60_N8S7471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D0Ev,_ZTv0_n32_N8S7471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C18D0Ev,_ZThn60_N8S7471C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C18D0Ev,_ZThn80_N8S7471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7471C18D1Ev,_ZTv0_n32_N8S7471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7471C18D1Ev,_ZThn60_N8S7471C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7471C18D1Ev,_ZThn80_N8S7471C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C1D0Ev,_ZTv0_n44_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7471C1D0Ev,_ZThn96_N7S7471C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7471C1D0Ev,_ZThn68_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7471C1D1Ev,_ZTv0_n44_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7471C1D1Ev,_ZThn96_N7S7471C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7471C1D1Ev,_ZThn68_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C1D0Ev,_ZTv0_n32_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C1D0Ev,_ZThn88_N7S7471C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C1D0Ev,_ZThn60_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7471C1D1Ev,_ZTv0_n32_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7471C1D1Ev,_ZThn88_N7S7471C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7471C1D1Ev,_ZThn60_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C1D0Ev,_ZTv0_n16_N7S7471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C1D0Ev,_ZThn52_N7S7471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7471C1D1Ev,_ZTv0_n16_N7S7471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7471C1D1Ev,_ZThn52_N7S7471C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7471C1 = {  "S7471C1", // class name
  bases_S7471C1, 59,
  &(vtc_S7471C1[0]), // expected_vtbl_contents
  &(vtt_S7471C1[0]), // expected_vtt_contents
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S7471C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7471C1),145, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7471C1),114, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C5  : S8033C7 {
  void *s19603c5f0;
  ::S20291C14_nt s19603c5f1;
  void *s19603c5f2;
  long double s19603c5f3;
  ~S19603C5(); // tgen
  S19603C5(); // tgen
};
//SIG(-1 S19603C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19603C5 ::~S19603C5(){ note_dtor("S19603C5", this);} // tgen
S19603C5 ::S19603C5(){ note_ctor("S19603C5", this);} // tgen

static void Test_S19603C5()
{
  extern Class_Descriptor cd_S19603C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19603C5, buf);
    S19603C5 *dp, &lv = *(dp=new (buf) S19603C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19603C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19603C5");
    check_field_offset(lv, s19603c5f0, ABISELECT(96,52), "S19603C5.s19603c5f0");
    check_field_offset(lv, s19603c5f1, ABISELECT(104,56), "S19603C5.s19603c5f1");
    check_field_offset(lv, s19603c5f2, ABISELECT(112,60), "S19603C5.s19603c5f2");
    check_field_offset(lv, s19603c5f3, ABISELECT(128,64), "S19603C5.s19603c5f3");
    test_class_info(&lv, &cd_S19603C5);
    dp->~S19603C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C5(Test_S19603C5, "S19603C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19603C5C1Ev();
extern void _ZN8S19603C5D1Ev();
Name_Map name_map_S19603C5[] = {
  NSPAIR(_ZN8S19603C5C1Ev),
  NSPAIR(_ZN8S19603C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19603C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19603C5[];
extern void _ZN8S19603C5D1Ev();
extern void _ZN8S19603C5D0Ev();
static  VTBL_ENTRY vtc_S19603C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C5[0]),
  (VTBL_ENTRY)&_ZN8S19603C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
Class_Descriptor cd_S19603C5 = {  "S19603C5", // class name
  bases_S19603C5, 1,
  &(vtc_S19603C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19603C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19603C5),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  S19603C7  : S19603C5 , virtual S8033C7 {
  ::S8033C7 s19603c7f0;
  void *s19603c7f1;
  virtual  ~S19603C7(); // _ZN8S19603C7D2Ev
  S19603C7(); // tgen
};
//SIG(-1 S19603C7) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19603C7 ::~S19603C7(){ note_dtor("S19603C7", this);}
S19603C7 ::S19603C7(){ note_ctor("S19603C7", this);} // tgen

static void Test_S19603C7()
{
  extern Class_Descriptor cd_S19603C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19603C7, buf);
    S19603C7 *dp, &lv = *(dp=new (buf) S19603C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19603C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C7)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), 0, "S19603C7");
    check_base_class_offset(lv, (S19603C5*), 0, "S19603C7");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19603C7");
    check_field_offset(lv, s19603c7f0, ABISELECT(144,76), "S19603C7.s19603c7f0");
    check_field_offset(lv, s19603c7f1, ABISELECT(240,128), "S19603C7.s19603c7f1");
    test_class_info(&lv, &cd_S19603C7);
    dp->~S19603C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C7(Test_S19603C7, "S19603C7", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19603C7C1Ev();
extern void _ZN8S19603C7D2Ev();
Name_Map name_map_S19603C7[] = {
  NSPAIR(_ZN8S19603C7C1Ev),
  NSPAIR(_ZN8S19603C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19603C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19603C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19603C7[];
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C7[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C7[];
static  VTT_ENTRY vtt_S19603C7[] = {
  {&(_ZTV8S19603C7[3]),  3,10},
  {&(_ZTV8S19603C7[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C7 = {  "S19603C7", // class name
  bases_S19603C7, 3,
  &(vtc_S19603C7[0]), // expected_vtbl_contents
  &(vtt_S19603C7[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19603C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C7),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C7),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C4  : S8033C7 , virtual S19603C5 {
  int s19603c4f0;
  char s19603c4f1;
  void *s19603c4f2;
  int s19603c4f3;
  void *s19603c4f4[2];
  ::S19603C7 s19603c4f5;
  virtual  ~S19603C4(); // _ZN8S19603C4D2Ev
  virtual void  v2(); // _ZN8S19603C42v2Ev
  S19603C4(); // tgen
};
//SIG(-1 S19603C4) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19603C4 ::~S19603C4(){ note_dtor("S19603C4", this);}
void  S19603C4 ::v2(){vfunc_called(this, "_ZN8S19603C42v2Ev");}
S19603C4 ::S19603C4(){ note_ctor("S19603C4", this);} // tgen

static void Test_S19603C4()
{
  extern Class_Descriptor cd_S19603C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19603C4, buf);
    S19603C4 *dp, &lv = *(dp=new (buf) S19603C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19603C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C4)");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19603C4");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(496,260), "S19603C4");
    check_base_class_offset(lv, (S19603C5*), ABISELECT(496,260), "S19603C4");
    check_field_offset(lv, s19603c4f0, ABISELECT(96,52), "S19603C4.s19603c4f0");
    check_field_offset(lv, s19603c4f1, ABISELECT(100,56), "S19603C4.s19603c4f1");
    check_field_offset(lv, s19603c4f2, ABISELECT(104,60), "S19603C4.s19603c4f2");
    check_field_offset(lv, s19603c4f3, ABISELECT(112,64), "S19603C4.s19603c4f3");
    check_field_offset(lv, s19603c4f4, ABISELECT(120,68), "S19603C4.s19603c4f4");
    check_field_offset(lv, s19603c4f5, ABISELECT(144,76), "S19603C4.s19603c4f5");
    test_class_info(&lv, &cd_S19603C4);
    dp->~S19603C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C4(Test_S19603C4, "S19603C4", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19603C4C1Ev();
extern void _ZN8S19603C4D2Ev();
Name_Map name_map_S19603C4[] = {
  NSPAIR(_ZN8S19603C4C1Ev),
  NSPAIR(_ZN8S19603C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
static Base_Class bases_S19603C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C4[];
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C4[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C4[];
static  VTT_ENTRY vtt_S19603C4[] = {
  {&(_ZTV8S19603C4[3]),  3,11},
  {&(_ZTV8S19603C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C4 = {  "S19603C4", // class name
  bases_S19603C4, 3,
  &(vtc_S19603C4[0]), // expected_vtbl_contents
  &(vtt_S19603C4[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19603C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C2  : S8033C7 , virtual S19603C4 {
  void *s19603c2f0;
  __tsi64 s19603c2f1;
  long s19603c2f2;
  char s19603c2f3;
  void *s19603c2f4;
  int s19603c2f5;
  virtual  ~S19603C2(); // _ZN8S19603C2D2Ev
  S19603C2(); // tgen
};
//SIG(-1 S19603C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S19603C2 ::~S19603C2(){ note_dtor("S19603C2", this);}
S19603C2 ::S19603C2(){ note_ctor("S19603C2", this);} // tgen

static void Test_S19603C2()
{
  extern Class_Descriptor cd_S19603C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19603C2, buf);
    S19603C2 *dp, &lv = *(dp=new (buf) S19603C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19603C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C2)");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19603C2");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(144,80), "S19603C2");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(640,340), "S19603C2");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(640,340), "S19603C2");
    check_base_class_offset(lv, (S19603C4*), ABISELECT(144,80), "S19603C2");
    check_field_offset(lv, s19603c2f0, ABISELECT(96,52), "S19603C2.s19603c2f0");
    check_field_offset(lv, s19603c2f1, ABISELECT(104,56), "S19603C2.s19603c2f1");
    check_field_offset(lv, s19603c2f2, ABISELECT(112,64), "S19603C2.s19603c2f2");
    check_field_offset(lv, s19603c2f3, ABISELECT(120,68), "S19603C2.s19603c2f3");
    check_field_offset(lv, s19603c2f4, ABISELECT(128,72), "S19603C2.s19603c2f4");
    check_field_offset(lv, s19603c2f5, ABISELECT(136,76), "S19603C2.s19603c2f5");
    test_class_info(&lv, &cd_S19603C2);
    dp->~S19603C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C2(Test_S19603C2, "S19603C2", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN8S19603C2C1Ev();
extern void _ZN8S19603C2D2Ev();
Name_Map name_map_S19603C2[] = {
  NSPAIR(_ZN8S19603C2C1Ev),
  NSPAIR(_ZN8S19603C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
static Base_Class bases_S19603C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,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
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S19603C2[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C2[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C2[];
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
static  VTT_ENTRY vtt_S19603C2[] = {
  {&(_ZTV8S19603C2[4]),  4,19},
  {&(_ZTV8S19603C2[11]),  11,19},
  {&(_ZTV8S19603C2[17]),  17,19},
  {&(_tg__ZTV8S19603C4__8S19603C2[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C2 = {  "S19603C2", // class name
  bases_S19603C2, 5,
  &(vtc_S19603C2[0]), // expected_vtbl_contents
  &(vtt_S19603C2[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI8S19603C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C10  : virtual S19603C5 {
  char s19603c10f0;
  short s19603c10f1;
  long double s19603c10f2;
  void *s19603c10f3[2];
  virtual void  v3(); // _ZN9S19603C102v3Ev
  ~S19603C10(); // tgen
  S19603C10(); // tgen
};
//SIG(-1 S19603C10) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19603C10 ::v3(){vfunc_called(this, "_ZN9S19603C102v3Ev");}
S19603C10 ::~S19603C10(){ note_dtor("S19603C10", this);} // tgen
S19603C10 ::S19603C10(){ note_ctor("S19603C10", this);} // tgen

static void Test_S19603C10()
{
  extern Class_Descriptor cd_S19603C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19603C10, buf);
    S19603C10 *dp, &lv = *(dp=new (buf) S19603C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19603C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C10)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(48,28), "S19603C10");
    check_base_class_offset(lv, (S19603C5*), ABISELECT(48,28), "S19603C10");
    check_field_offset(lv, s19603c10f0, ABISELECT(8,4), "S19603C10.s19603c10f0");
    check_field_offset(lv, s19603c10f1, ABISELECT(10,6), "S19603C10.s19603c10f1");
    check_field_offset(lv, s19603c10f2, ABISELECT(16,8), "S19603C10.s19603c10f2");
    check_field_offset(lv, s19603c10f3, ABISELECT(32,20), "S19603C10.s19603c10f3");
    test_class_info(&lv, &cd_S19603C10);
    dp->~S19603C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C10(Test_S19603C10, "S19603C10", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19603C10C1Ev();
extern void _ZN9S19603C10D1Ev();
Name_Map name_map_S19603C10[] = {
  NSPAIR(_ZN9S19603C10C1Ev),
  NSPAIR(_ZN9S19603C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
static Base_Class bases_S19603C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19603C10[];
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19603C10D1Ev,_ZThn28_N9S19603C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19603C10D0Ev,_ZThn28_N9S19603C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C10[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19603C10[];
static  VTT_ENTRY vtt_S19603C10[] = {
  {&(_ZTV9S19603C10[3]),  3,11},
  {&(_ZTV9S19603C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19603C10D0Ev,_ZThn28_N9S19603C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19603C10D1Ev,_ZThn28_N9S19603C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C10 = {  "S19603C10", // class name
  bases_S19603C10, 2,
  &(vtc_S19603C10[0]), // expected_vtbl_contents
  &(vtt_S19603C10[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19603C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19603C10),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19603C10),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C9  : S19603C2 , virtual S19603C10 {
  char s19603c9f0;
  __tsi64 s19603c9f1:35;
  virtual  ~S19603C9(); // _ZN8S19603C9D2Ev
  S19603C9(); // tgen
};
//SIG(-1 S19603C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S19603C9 ::~S19603C9(){ note_dtor("S19603C9", this);}
S19603C9 ::S19603C9(){ note_ctor("S19603C9", this);} // tgen

static void Test_S19603C9()
{
  extern Class_Descriptor cd_S19603C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19603C9, buf);
    S19603C9 *dp, &lv = *(dp=new (buf) S19603C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19603C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C9)");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*), 0, "S19603C9");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(160,88), "S19603C9");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(656,348), "S19603C9");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*), ABISELECT(160,88), "S19603C9");
    check_base_class_offset(lv, (S19603C2*), 0, "S19603C9");
    check_base_class_offset(lv, (S19603C10*), ABISELECT(800,424), "S19603C9");
    check_field_offset(lv, s19603c9f0, ABISELECT(140,80), "S19603C9.s19603c9f0");
    set_bf_and_test(lv, s19603c9f1, ABISELECT(144,81), 0, 35, 1, "S19603C9");
    set_bf_and_test(lv, s19603c9f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19603C9");
    test_class_info(&lv, &cd_S19603C9);
    dp->~S19603C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C9(Test_S19603C9, "S19603C9", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19603C9C1Ev();
extern void _ZN8S19603C9D2Ev();
Name_Map name_map_S19603C9[] = {
  NSPAIR(_ZN8S19603C9C1Ev),
  NSPAIR(_ZN8S19603C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
static Base_Class bases_S19603C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(656,348), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19603C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19603C10,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C9[];
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19603C9D1Ev,_ZThn348_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19603C9D0Ev,_ZThn348_N8S19603C9D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C9D1Ev,_ZThn424_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C9D0Ev,_ZThn424_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19603C9[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19603C9[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C2__8S19603C9[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C2D1Ev,_ZThn88_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C2D0Ev,_ZThn88_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2__8S19603C9[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19603C2D1Ev,_ZThn348_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19603C2D0Ev,_ZThn348_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C2__8S19603C9[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C9[] = {
  {&(_ZTV8S19603C9[5]),  5,28},
  {&(_tg__ZTV8S19603C2__8S19603C9[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C2__8S19603C9[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C2__8S19603C9[3]),  3,5},
  {&(_ZTV8S19603C9[12]),  12,28},
  {&(_ZTV8S19603C9[18]),  18,28},
  {&(_ZTV8S19603C9[25]),  25,28},
  {&(_tg__ZTV8S19603C4__8S19603C9[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C9[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C2D0Ev,_ZThn348_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C2D1Ev,_ZThn348_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C2D0Ev,_ZThn88_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C2D1Ev,_ZThn88_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C9D0Ev,_ZThn424_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C9D1Ev,_ZThn424_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C9D0Ev,_ZThn348_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19603C9D1Ev,_ZThn348_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C9 = {  "S19603C9", // class name
  bases_S19603C9, 7,
  &(vtc_S19603C9[0]), // expected_vtbl_contents
  &(vtt_S19603C9[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19603C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19603C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C12  {
  long double s19603c12f0;
  void *s19603c12f1;
  ::S8033C7 s19603c12f2;
  __tsi64 s19603c12f3;
  long double s19603c12f4;
  int s19603c12f5;
  virtual void  v4(); // _ZN9S19603C122v4Ev
  ~S19603C12(); // tgen
  S19603C12(); // tgen
};
//SIG(-1 S19603C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19603C12 ::v4(){vfunc_called(this, "_ZN9S19603C122v4Ev");}
S19603C12 ::~S19603C12(){ note_dtor("S19603C12", this);} // tgen
S19603C12 ::S19603C12(){ note_ctor("S19603C12", this);} // tgen

static void Test_S19603C12()
{
  extern Class_Descriptor cd_S19603C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19603C12, buf);
    S19603C12 *dp, &lv = *(dp=new (buf) S19603C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19603C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C12)");
    check_field_offset(lv, s19603c12f0, ABISELECT(16,4), "S19603C12.s19603c12f0");
    check_field_offset(lv, s19603c12f1, ABISELECT(32,16), "S19603C12.s19603c12f1");
    check_field_offset(lv, s19603c12f2, ABISELECT(48,20), "S19603C12.s19603c12f2");
    check_field_offset(lv, s19603c12f3, ABISELECT(144,72), "S19603C12.s19603c12f3");
    check_field_offset(lv, s19603c12f4, ABISELECT(160,80), "S19603C12.s19603c12f4");
    check_field_offset(lv, s19603c12f5, ABISELECT(176,92), "S19603C12.s19603c12f5");
    test_class_info(&lv, &cd_S19603C12);
    dp->~S19603C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C12(Test_S19603C12, "S19603C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19603C12C1Ev();
extern void _ZN9S19603C12D1Ev();
Name_Map name_map_S19603C12[] = {
  NSPAIR(_ZN9S19603C12C1Ev),
  NSPAIR(_ZN9S19603C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19603C12[];
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C12[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
Class_Descriptor cd_S19603C12 = {  "S19603C12", // class name
  0,0,//no base classes
  &(vtc_S19603C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19603C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19603C12),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  S19603C8  : virtual S19603C7 , virtual S19603C4 , virtual S19603C9 , virtual S8033C4 , virtual S19603C12 {
  void *s19603c8f0;
  ::S19603C12 s19603c8f1[3];
  ::S19603C12 s19603c8f2;
  char s19603c8f3;
  virtual  ~S19603C8(); // _ZN8S19603C8D2Ev
  S19603C8(); // tgen
};
//SIG(-1 S19603C8) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19603C8 ::~S19603C8(){ note_dtor("S19603C8", this);}
S19603C8 ::S19603C8(){ note_ctor("S19603C8", this);} // tgen

static void Test_S19603C8()
{
  extern Class_Descriptor cd_S19603C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19603C8, buf);
    S19603C8 *dp, &lv = *(dp=new (buf) S19603C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19603C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C8)");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*)(S19603C7*), ABISELECT(800,396), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C7*), ABISELECT(800,396), "S19603C8");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C7*), ABISELECT(1056,528), "S19603C8");
    check_base_class_offset(lv, (S19603C7*), ABISELECT(800,396), "S19603C8");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(1152,580), "S19603C8");
    /*is_ambiguous_... S19603C8::S19603C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(1648,840), "S19603C8");
    check_base_class_offset(lv, (S19603C4*), ABISELECT(1152,580), "S19603C8");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*)(S19603C9*), ABISELECT(1152,580), "S19603C8");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*)(S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S19603C2*)(S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S19603C10*)(S19603C9*), ABISELECT(1952,1004), "S19603C8");
    check_base_class_offset(lv, (S19603C9*), ABISELECT(1792,916), "S19603C8");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19603C8");
    check_base_class_offset(lv, (S19603C12*), ABISELECT(2096,1108), "S19603C8");
    check_field_offset(lv, s19603c8f0, ABISELECT(8,4), "S19603C8.s19603c8f0");
    check_field_offset(lv, s19603c8f1, ABISELECT(16,8), "S19603C8.s19603c8f1");
    check_field_offset(lv, s19603c8f2, ABISELECT(592,296), "S19603C8.s19603c8f2");
    check_field_offset(lv, s19603c8f3, ABISELECT(784,392), "S19603C8.s19603c8f3");
    test_class_info(&lv, &cd_S19603C8);
    dp->~S19603C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C8(Test_S19603C8, "S19603C8", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S19603C8C1Ev();
extern void _ZN8S19603C8D2Ev();
Name_Map name_map_S19603C8[] = {
  NSPAIR(_ZN8S19603C8C1Ev),
  NSPAIR(_ZN8S19603C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C7;
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
extern Class_Descriptor cd_S19603C9;
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
static Base_Class bases_S19603C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19603C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19603C7,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19603C5,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19603C2,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19603C10,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19603C9,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19603C12,    ABISELECT(2096,1108), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C8[];
extern void _ZN8S19603C8D1Ev();
extern void _ZN8S19603C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19603C8D1Ev,_ZThn840_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19603C8D0Ev,_ZThn840_N8S19603C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19603C8D1Ev,_ZThn916_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19603C8D0Ev,_ZThn916_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19603C8D1Ev,_ZThn1004_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19603C8D0Ev,_ZThn1004_N8S19603C8D0Ev)() __attribute__((weak));
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C8[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN8S19603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C8D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19603C8[];
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C7__8S19603C8[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C8[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C8[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
};
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C28S19603C9__8S19603C8[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C28S19603C9__8S19603C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C28S19603C9__8S19603C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9__8S19603C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C9__8S19603C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9__8S19603C8[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C8[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C8[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C8[] = {
  {&(_ZTV8S19603C8[10]),  10,56},
  {&(_ZTV8S19603C8[16]),  16,56},
  {&(_ZTV8S19603C8[21]),  21,56},
  {&(_ZTV8S19603C8[28]),  28,56},
  {&(_ZTV8S19603C8[34]),  34,56},
  {&(_ZTV8S19603C8[42]),  42,56},
  {&(_ZTV8S19603C8[49]),  49,56},
  {&(_ZTV8S19603C8[55]),  55,56},
  {&(_tg__ZTV8S19603C7__8S19603C8[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19603C7__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C8[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C8[5]),  5,7},
  {&(_tg__ZTV8S19603C28S19603C9__8S19603C8[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C28S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C28S19603C9__8S19603C8[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C9__8S19603C8[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9__8S19603C8[5]),  5,8},
  {&(_tg__ZTV9S19603C10__8S19603C8[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C8[];
extern  VTBL_ENTRY _ZTV8S19603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C8[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19603C8D0Ev,_ZThn1004_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19603C8D1Ev,_ZThn1004_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19603C8D0Ev,_ZThn916_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19603C8D1Ev,_ZThn916_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19603C8D0Ev,_ZThn840_N8S19603C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19603C8D1Ev,_ZThn840_N8S19603C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C8 = {  "S19603C8", // class name
  bases_S19603C8, 14,
  &(vtc_S19603C8[0]), // expected_vtbl_contents
  &(vtt_S19603C8[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S19603C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19603C8),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C8),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19603C1  : virtual S19603C2 , virtual S19603C8 , S19603C12 {
  int s19603c1f0;
  long s19603c1f1;
  virtual  ~S19603C1(); // _ZN8S19603C1D2Ev
  virtual void  v1(); // _ZN8S19603C12v1Ev
  S19603C1(); // tgen
};
//SIG(1 S19603C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC7 VBC4 VBC9{ BC2 VBC10{ VBC5 v3 Fc Fs FD Fp[2]} vd Fc FL:35} VBC11{ m Fp[3] FL[8]} VBC12{ v4 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC12 vd v1 Fi Fl}


 S19603C1 ::~S19603C1(){ note_dtor("S19603C1", this);}
void  S19603C1 ::v1(){vfunc_called(this, "_ZN8S19603C12v1Ev");}
S19603C1 ::S19603C1(){ note_ctor("S19603C1", this);} // tgen

static void Test_S19603C1()
{
  extern Class_Descriptor cd_S19603C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,348)];
    init_test(&cd_S19603C1, buf);
    S19603C1 *dp, &lv = *(dp=new (buf) S19603C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1388), "sizeof(S19603C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19603C1)");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*), ABISELECT(192,104), "S19603C1");
    /*is_ambiguous_... S19603C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C4*), ABISELECT(336,184), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C5*), ABISELECT(832,444), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C4*), ABISELECT(832,444), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C10*), ABISELECT(832,444), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S19603C4*)(S19603C2*), ABISELECT(336,184), "S19603C1");
    check_base_class_offset(lv, (S19603C4*)(S19603C8*), ABISELECT(336,184), "S19603C1");
    check_base_class_offset(lv, (S19603C4*)(S19603C2*)(S19603C9*), ABISELECT(336,184), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C2 */ AMB_check_base_class_offset(lv, (S19603C2*), ABISELECT(192,104), "S19603C1");
    check_base_class_offset(lv, (S8033C7*)(S19603C5*)(S19603C7*), ABISELECT(1776,916), "S19603C1");
    check_base_class_offset(lv, (S19603C5*)(S19603C7*), ABISELECT(1776,916), "S19603C1");
    /*is_ambiguous_... S19603C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C7*), ABISELECT(2032,1048), "S19603C1");
    check_base_class_offset(lv, (S19603C7*)(S19603C8*), ABISELECT(1776,916), "S19603C1");
    /*is_ambiguous_... S19603C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19603C2*)(S19603C9*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S19603C2*)(S19603C9*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S19603C10*)(S19603C9*), ABISELECT(2288,1188), "S19603C1");
    check_base_class_offset(lv, (S19603C9*)(S19603C8*), ABISELECT(2128,1100), "S19603C1");
    check_base_class_offset(lv, (S8033C4*)(S19603C8*), ABISELECT(2336,1216), "S19603C1");
    check_base_class_offset(lv, (S19603C12*)(S19603C8*), ABISELECT(2432,1292), "S19603C1");
    check_base_class_offset(lv, (S19603C8*), ABISELECT(976,520), "S19603C1");
    /*is_ambiguous_... S19603C1::S19603C12 */ AMB_check_base_class_offset(lv, (S19603C12*), 0, "S19603C1");
    check_field_offset(lv, s19603c1f0, ABISELECT(180,96), "S19603C1.s19603c1f0");
    check_field_offset(lv, s19603c1f1, ABISELECT(184,100), "S19603C1.s19603c1f1");
    test_class_info(&lv, &cd_S19603C1);
    dp->~S19603C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19603C1(Test_S19603C1, "S19603C1", ABISELECT(2624,1388));

#else // __cplusplus

extern void _ZN8S19603C1C1Ev();
extern void _ZN8S19603C1D2Ev();
Name_Map name_map_S19603C1[] = {
  NSPAIR(_ZN8S19603C1C1Ev),
  NSPAIR(_ZN8S19603C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S19603C4;
extern VTBL_ENTRY _ZTI8S19603C4[];
extern  VTBL_ENTRY _ZTV8S19603C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C4[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C5;
extern VTBL_ENTRY _ZTI8S19603C5[];
extern  VTBL_ENTRY _ZTV8S19603C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C7;
extern VTBL_ENTRY _ZTI8S19603C7[];
extern  VTBL_ENTRY _ZTV8S19603C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19603C2;
extern VTBL_ENTRY _ZTI8S19603C2[];
extern  VTBL_ENTRY _ZTV8S19603C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C2[];
extern Class_Descriptor cd_S19603C10;
extern VTBL_ENTRY _ZTI9S19603C10[];
extern  VTBL_ENTRY _ZTV9S19603C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19603C10[];
extern Class_Descriptor cd_S19603C9;
extern VTBL_ENTRY _ZTI8S19603C9[];
extern  VTBL_ENTRY _ZTV8S19603C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
extern Class_Descriptor cd_S19603C8;
extern VTBL_ENTRY _ZTI8S19603C8[];
extern  VTBL_ENTRY _ZTV8S19603C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C8[];
extern Class_Descriptor cd_S19603C12;
extern VTBL_ENTRY _ZTI9S19603C12[];
extern  VTBL_ENTRY _ZTV9S19603C12[];
static Base_Class bases_S19603C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(336,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(832,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(832,444), //bcp->offset
    31, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19603C4,    ABISELECT(336,184), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19603C2,    ABISELECT(192,104), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1776,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19603C5,    ABISELECT(1776,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(2032,1048), //bcp->offset
    55, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19603C7,    ABISELECT(1776,916), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2128,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19603C2,    ABISELECT(2128,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19603C10,    ABISELECT(2288,1188), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19603C9,    ABISELECT(2128,1100), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2336,1216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19603C12,    ABISELECT(2432,1292), //bcp->offset
    76, //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
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19603C8,    ABISELECT(976,520), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19603C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19603C1[];
extern void _ZN9S19603C122v4Ev();
extern void _ZN8S19603C1D1Ev();
extern void _ZN8S19603C1D0Ev();
extern void _ZN8S19603C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19603C1D1Ev,_ZThn104_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19603C1D0Ev,_ZThn104_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19603C1D1Ev,_ZThn184_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19603C1D0Ev,_ZThn184_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S19603C1D1Ev,_ZThn444_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S19603C1D0Ev,_ZThn444_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn976_N8S19603C1D1Ev,_ZThn520_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn976_N8S19603C1D0Ev,_ZThn520_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn1776_N8S19603C1D1Ev,_ZThn916_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn1776_N8S19603C1D0Ev,_ZThn916_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2032_N8S19603C1D1Ev,_ZThn1048_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2032_N8S19603C1D0Ev,_ZThn1048_N8S19603C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19603C1D1Ev,_ZThn1100_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2128_N8S19603C1D0Ev,_ZThn1100_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev)();
extern void ABISELECT(_ZThn2288_N8S19603C1D1Ev,_ZThn1188_N8S19603C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev)();
extern void ABISELECT(_ZThn2288_N8S19603C1D0Ev,_ZThn1188_N8S19603C1D0Ev)() __attribute__((weak));
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY vtc_S19603C1[] = {
  ABISELECT(2432,1292),
  ABISELECT(2336,1216),
  ABISELECT(2288,1188),
  ABISELECT(2128,1100),
  ABISELECT(2032,1048),
  ABISELECT(1776,916),
  ABISELECT(976,520),
  ABISELECT(832,444),
  ABISELECT(336,184),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
  (VTBL_ENTRY)&_ZN8S19603C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C12v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(640,340),
  ABISELECT(144,80),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev),
  0,
  ABISELECT(-336,-184),
  ABISELECT(496,260),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
  ABISELECT(-832,-444),
  ABISELECT(-832,-444),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev),
  ABISELECT(-976,-520),
  ABISELECT(1456,772),
  ABISELECT(1360,696),
  ABISELECT(1312,668),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  ABISELECT(-976,-520),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev),
  ABISELECT(-1776,-916),
  ABISELECT(256,132),
  ABISELECT(-1776,-916),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev),
  ABISELECT(-2032,-1048),
  ABISELECT(-2032,-1048),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev),
  ABISELECT(-2128,-1100),
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-2128,-1100),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev),
  ABISELECT(-2288,-1188),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-2288,-1188),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev),
  0,
  ABISELECT(-2432,-1292),
  (VTBL_ENTRY)&(_ZTI8S19603C1[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19603C1[];
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C2__8S19603C1[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev)() __attribute__((weak));
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C2__8S19603C1[] = {
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C2__8S19603C1[] = {
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void _ZN8S19603C4D1Ev();
extern void _ZN8S19603C4D0Ev();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&_ZN8S19603C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C4__8S19603C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19603C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev),
};
extern void _ZN8S19603C8D1Ev();
extern void _ZN8S19603C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C8__8S19603C1[] = {
  ABISELECT(1456,772),
  ABISELECT(1360,696),
  ABISELECT(1312,668),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN8S19603C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C8__8S19603C1[] = {
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C8__8S19603C1[] = {
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C8__8S19603C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__A1__8S19603C8__8S19603C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C8__8S19603C1[] = {
  ABISELECT(-1152,-580),
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19603C8D1Ev,_ZThn668_N8S19603C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19603C8D0Ev,_ZThn668_N8S19603C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C8__8S19603C1[] = {
  ABISELECT(-1312,-668),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-1312,-668),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev),
};
extern void _ZN9S19603C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C12__8S19603C8__8S19603C1[] = {
  0,
  ABISELECT(-1456,-772),
  (VTBL_ENTRY)&(_ZTI8S19603C8[0]),
  (VTBL_ENTRY)&_ZN9S19603C122v4Ev,
};
extern void _ZN8S19603C7D1Ev();
extern void _ZN8S19603C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C7__8S19603C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&_ZN8S19603C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19603C7__8S19603C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19603C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev),
};
extern void _ZN8S19603C9D1Ev();
extern void _ZN8S19603C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C9__8S19603C1[] = {
  ABISELECT(160,88),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN8S19603C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C9D0Ev,
};
extern void _ZN8S19603C2D1Ev();
extern void _ZN8S19603C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C28S19603C9__A1__8S19603C1[] = {
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&_ZN8S19603C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19603C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C28S19603C9__A1__8S19603C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C28S19603C9__A1__8S19603C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19603C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev)();
extern void _ZN8S19603C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19603C4__8S19603C9__8S19603C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D1Ev,_ZTv0_n16_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19603C9D0Ev,_ZTv0_n16_N8S19603C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19603C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__8S19603C9__8S19603C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D1Ev,_ZTv0_n12_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19603C9D0Ev,_ZTv0_n12_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C9__8S19603C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-1456,-744),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19603C9[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev),
};
extern void _ZN9S19603C102v3Ev();
extern void _ZN9S19603C10D1Ev();
extern void _ZN9S19603C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19603C10__8S19603C1[] = {
  ABISELECT(-1456,-744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&_ZN9S19603C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19603C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19603C5__9S19603C10__8S19603C1[] = {
  ABISELECT(1456,744),
  ABISELECT(1456,744),
  (VTBL_ENTRY)&(_ZTI9S19603C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D1Ev,_ZTv0_n12_N9S19603C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19603C10D0Ev,_ZTv0_n12_N9S19603C10D0Ev),
};
static  VTT_ENTRY vtt_S19603C1[] = {
  {&(_ZTV8S19603C1[12]),  12,80},
  {&(_ZTV8S19603C1[21]),  21,80},
  {&(_ZTV8S19603C1[28]),  28,80},
  {&(_ZTV8S19603C1[34]),  34,80},
  {&(_ZTV8S19603C1[47]),  47,80},
  {&(_ZTV8S19603C1[53]),  53,80},
  {&(_ZTV8S19603C1[58]),  58,80},
  {&(_ZTV8S19603C1[66]),  66,80},
  {&(_ZTV8S19603C1[73]),  73,80},
  {&(_ZTV8S19603C1[79]),  79,80},
  {&(_tg__ZTV8S19603C2__8S19603C1[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C2__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C2__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C1[3]),  3,6},
  {&(_tg__ZTV8S19603C5__8S19603C4__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C8__8S19603C1[10]),  10,12},
  {&(_tg__ZTV8S19603C7__8S19603C8__8S19603C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19603C8__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C8__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__A1__8S19603C8__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C8__8S19603C1[6]),  6,8},
  {&(_tg__ZTV9S19603C10__8S19603C8__8S19603C1[5]),  5,8},
  {&(_tg__ZTV9S19603C12__8S19603C8__8S19603C1[3]),  3,4},
  {&(_tg__ZTV8S19603C7__8S19603C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19603C7__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C9__8S19603C1[5]),  5,7},
  {&(_tg__ZTV8S19603C28S19603C9__A1__8S19603C1[4]),  4,6},
  {&(_tg__ZTV8S19603C4__8S19603C28S19603C9__A1__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C28S19603C9__A1__8S19603C1[3]),  3,5},
  {&(_tg__ZTV8S19603C4__8S19603C9__8S19603C1[5]),  5,8},
  {&(_tg__ZTV8S19603C5__8S19603C9__8S19603C1[3]),  3,5},
  {&(_tg__ZTV9S19603C10__8S19603C9__8S19603C1[5]),  5,8},
  {&(_tg__ZTV9S19603C10__8S19603C1[3]),  3,6},
  {&(_tg__ZTV8S19603C5__9S19603C10__8S19603C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19603C1[];
extern  VTBL_ENTRY _ZTV8S19603C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19603C1[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D0Ev,_ZTv0_n20_N8S19603C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D0Ev,_ZThn88_N8S19603C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C9D1Ev,_ZTv0_n20_N8S19603C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19603C9D1Ev,_ZThn88_N8S19603C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D0Ev,_ZTv0_n12_N8S19603C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D0Ev,_ZThn132_N8S19603C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C7D1Ev,_ZTv0_n12_N8S19603C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19603C7D1Ev,_ZThn132_N8S19603C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D0Ev,_ZTv0_n20_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19603C8D0Ev,_ZThn668_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C8D1Ev,_ZTv0_n20_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19603C8D1Ev,_ZThn668_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D0Ev,_ZTv0_n24_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D0Ev,_ZThn580_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C8D1Ev,_ZTv0_n24_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19603C8D1Ev,_ZThn580_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D0Ev,_ZTv0_n12_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D0Ev,_ZThn528_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C8D1Ev,_ZTv0_n12_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19603C8D1Ev,_ZThn528_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D0Ev,_ZTv0_n16_N8S19603C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D0Ev,_ZThn396_N8S19603C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C8D1Ev,_ZTv0_n16_N8S19603C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19603C8D1Ev,_ZThn396_N8S19603C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D0Ev,_ZTv0_n12_N8S19603C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D0Ev,_ZThn260_N8S19603C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C4D1Ev,_ZTv0_n12_N8S19603C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19603C4D1Ev,_ZThn260_N8S19603C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D0Ev,_ZTv0_n12_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D0Ev,_ZThn340_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C2D1Ev,_ZTv0_n12_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19603C2D1Ev,_ZThn340_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D0Ev,_ZTv0_n16_N8S19603C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D0Ev,_ZThn80_N8S19603C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C2D1Ev,_ZTv0_n16_N8S19603C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19603C2D1Ev,_ZThn80_N8S19603C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C1D0Ev,_ZTv0_n24_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19603C1D0Ev,_ZThn1100_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19603C1D1Ev,_ZTv0_n24_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19603C1D1Ev,_ZThn1100_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19603C1D0Ev,_ZTv0_n44_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19603C1D0Ev,_ZThn520_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19603C1D1Ev,_ZTv0_n44_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19603C1D1Ev,_ZThn520_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C1D0Ev,_ZTv0_n12_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19603C1D0Ev,_ZThn1048_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19603C1D0Ev,_ZThn444_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19603C1D1Ev,_ZTv0_n12_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19603C1D1Ev,_ZThn1048_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19603C1D1Ev,_ZThn444_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C1D0Ev,_ZTv0_n16_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19603C1D0Ev,_ZThn916_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19603C1D0Ev,_ZThn184_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19603C1D1Ev,_ZTv0_n16_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19603C1D1Ev,_ZThn916_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19603C1D1Ev,_ZThn184_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C1D0Ev,_ZTv0_n20_N8S19603C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19603C1D0Ev,_ZThn1188_N8S19603C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19603C1D0Ev,_ZThn104_N8S19603C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19603C1D1Ev,_ZTv0_n20_N8S19603C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19603C1D1Ev,_ZThn1188_N8S19603C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19603C1D1Ev,_ZThn104_N8S19603C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19603C1 = {  "S19603C1", // class name
  bases_S19603C1, 18,
  &(vtc_S19603C1[0]), // expected_vtbl_contents
  &(vtt_S19603C1[0]), // expected_vtt_contents
  ABISELECT(2624,1388), // object size
  NSPAIRA(_ZTI8S19603C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19603C1),80, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19603C1),34, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C5  : S8033C7 {
  void *s19604c5f0;
  ::S20291C14_nt s19604c5f1;
  void *s19604c5f2;
  long double s19604c5f3;
  ~S19604C5(); // tgen
  S19604C5(); // tgen
};
//SIG(-1 S19604C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19604C5 ::~S19604C5(){ note_dtor("S19604C5", this);} // tgen
S19604C5 ::S19604C5(){ note_ctor("S19604C5", this);} // tgen

static void Test_S19604C5()
{
  extern Class_Descriptor cd_S19604C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19604C5, buf);
    S19604C5 *dp, &lv = *(dp=new (buf) S19604C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19604C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19604C5");
    check_field_offset(lv, s19604c5f0, ABISELECT(96,52), "S19604C5.s19604c5f0");
    check_field_offset(lv, s19604c5f1, ABISELECT(104,56), "S19604C5.s19604c5f1");
    check_field_offset(lv, s19604c5f2, ABISELECT(112,60), "S19604C5.s19604c5f2");
    check_field_offset(lv, s19604c5f3, ABISELECT(128,64), "S19604C5.s19604c5f3");
    test_class_info(&lv, &cd_S19604C5);
    dp->~S19604C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C5(Test_S19604C5, "S19604C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19604C5C1Ev();
extern void _ZN8S19604C5D1Ev();
Name_Map name_map_S19604C5[] = {
  NSPAIR(_ZN8S19604C5C1Ev),
  NSPAIR(_ZN8S19604C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19604C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19604C5[];
extern void _ZN8S19604C5D1Ev();
extern void _ZN8S19604C5D0Ev();
static  VTBL_ENTRY vtc_S19604C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C5[0]),
  (VTBL_ENTRY)&_ZN8S19604C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
Class_Descriptor cd_S19604C5 = {  "S19604C5", // class name
  bases_S19604C5, 1,
  &(vtc_S19604C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19604C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19604C5),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  S19604C7  : S19604C5 , virtual S8033C7 {
  ::S8033C7 s19604c7f0;
  void *s19604c7f1;
  virtual  ~S19604C7(); // _ZN8S19604C7D2Ev
  S19604C7(); // tgen
};
//SIG(-1 S19604C7) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19604C7 ::~S19604C7(){ note_dtor("S19604C7", this);}
S19604C7 ::S19604C7(){ note_ctor("S19604C7", this);} // tgen

static void Test_S19604C7()
{
  extern Class_Descriptor cd_S19604C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19604C7, buf);
    S19604C7 *dp, &lv = *(dp=new (buf) S19604C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19604C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C7)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), 0, "S19604C7");
    check_base_class_offset(lv, (S19604C5*), 0, "S19604C7");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19604C7");
    check_field_offset(lv, s19604c7f0, ABISELECT(144,76), "S19604C7.s19604c7f0");
    check_field_offset(lv, s19604c7f1, ABISELECT(240,128), "S19604C7.s19604c7f1");
    test_class_info(&lv, &cd_S19604C7);
    dp->~S19604C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C7(Test_S19604C7, "S19604C7", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19604C7C1Ev();
extern void _ZN8S19604C7D2Ev();
Name_Map name_map_S19604C7[] = {
  NSPAIR(_ZN8S19604C7C1Ev),
  NSPAIR(_ZN8S19604C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19604C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19604C7[];
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C7[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C7[];
static  VTT_ENTRY vtt_S19604C7[] = {
  {&(_ZTV8S19604C7[3]),  3,10},
  {&(_ZTV8S19604C7[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C7 = {  "S19604C7", // class name
  bases_S19604C7, 3,
  &(vtc_S19604C7[0]), // expected_vtbl_contents
  &(vtt_S19604C7[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19604C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C7),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C7),2, //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  S19604C4  : S8033C7 , virtual S19604C5 {
  int s19604c4f0;
  char s19604c4f1;
  void *s19604c4f2;
  int s19604c4f3;
  void *s19604c4f4[2];
  ::S19604C7 s19604c4f5;
  virtual  ~S19604C4(); // _ZN8S19604C4D2Ev
  virtual void  v2(); // _ZN8S19604C42v2Ev
  S19604C4(); // tgen
};
//SIG(-1 S19604C4) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19604C4 ::~S19604C4(){ note_dtor("S19604C4", this);}
void  S19604C4 ::v2(){vfunc_called(this, "_ZN8S19604C42v2Ev");}
S19604C4 ::S19604C4(){ note_ctor("S19604C4", this);} // tgen

static void Test_S19604C4()
{
  extern Class_Descriptor cd_S19604C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19604C4, buf);
    S19604C4 *dp, &lv = *(dp=new (buf) S19604C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19604C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C4)");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19604C4");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(496,260), "S19604C4");
    check_base_class_offset(lv, (S19604C5*), ABISELECT(496,260), "S19604C4");
    check_field_offset(lv, s19604c4f0, ABISELECT(96,52), "S19604C4.s19604c4f0");
    check_field_offset(lv, s19604c4f1, ABISELECT(100,56), "S19604C4.s19604c4f1");
    check_field_offset(lv, s19604c4f2, ABISELECT(104,60), "S19604C4.s19604c4f2");
    check_field_offset(lv, s19604c4f3, ABISELECT(112,64), "S19604C4.s19604c4f3");
    check_field_offset(lv, s19604c4f4, ABISELECT(120,68), "S19604C4.s19604c4f4");
    check_field_offset(lv, s19604c4f5, ABISELECT(144,76), "S19604C4.s19604c4f5");
    test_class_info(&lv, &cd_S19604C4);
    dp->~S19604C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C4(Test_S19604C4, "S19604C4", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19604C4C1Ev();
extern void _ZN8S19604C4D2Ev();
Name_Map name_map_S19604C4[] = {
  NSPAIR(_ZN8S19604C4C1Ev),
  NSPAIR(_ZN8S19604C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
static Base_Class bases_S19604C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C4[];
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C4[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C4[];
static  VTT_ENTRY vtt_S19604C4[] = {
  {&(_ZTV8S19604C4[3]),  3,11},
  {&(_ZTV8S19604C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C4 = {  "S19604C4", // class name
  bases_S19604C4, 3,
  &(vtc_S19604C4[0]), // expected_vtbl_contents
  &(vtt_S19604C4[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19604C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C2  : S8033C7 , virtual S19604C4 {
  void *s19604c2f0;
  __tsi64 s19604c2f1[2];
  char s19604c2f2;
  void *s19604c2f3;
  int s19604c2f4;
  virtual  ~S19604C2(); // _ZN8S19604C2D2Ev
  S19604C2(); // tgen
};
//SIG(-1 S19604C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S19604C2 ::~S19604C2(){ note_dtor("S19604C2", this);}
S19604C2 ::S19604C2(){ note_ctor("S19604C2", this);} // tgen

static void Test_S19604C2()
{
  extern Class_Descriptor cd_S19604C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19604C2, buf);
    S19604C2 *dp, &lv = *(dp=new (buf) S19604C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19604C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C2)");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19604C2");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(144,84), "S19604C2");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(640,344), "S19604C2");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(640,344), "S19604C2");
    check_base_class_offset(lv, (S19604C4*), ABISELECT(144,84), "S19604C2");
    check_field_offset(lv, s19604c2f0, ABISELECT(96,52), "S19604C2.s19604c2f0");
    check_field_offset(lv, s19604c2f1, ABISELECT(104,56), "S19604C2.s19604c2f1");
    check_field_offset(lv, s19604c2f2, ABISELECT(120,72), "S19604C2.s19604c2f2");
    check_field_offset(lv, s19604c2f3, ABISELECT(128,76), "S19604C2.s19604c2f3");
    check_field_offset(lv, s19604c2f4, ABISELECT(136,80), "S19604C2.s19604c2f4");
    test_class_info(&lv, &cd_S19604C2);
    dp->~S19604C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C2(Test_S19604C2, "S19604C2", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN8S19604C2C1Ev();
extern void _ZN8S19604C2D2Ev();
Name_Map name_map_S19604C2[] = {
  NSPAIR(_ZN8S19604C2C1Ev),
  NSPAIR(_ZN8S19604C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
static Base_Class bases_S19604C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(144,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C5,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI8S19604C2[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C2[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C2[];
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C2[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
static  VTT_ENTRY vtt_S19604C2[] = {
  {&(_ZTV8S19604C2[4]),  4,19},
  {&(_ZTV8S19604C2[11]),  11,19},
  {&(_ZTV8S19604C2[17]),  17,19},
  {&(_tg__ZTV8S19604C4__8S19604C2[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C2 = {  "S19604C2", // class name
  bases_S19604C2, 5,
  &(vtc_S19604C2[0]), // expected_vtbl_contents
  &(vtt_S19604C2[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI8S19604C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C10  : virtual S19604C5 {
  char s19604c10f0;
  short s19604c10f1;
  long double s19604c10f2;
  void *s19604c10f3[2];
  virtual void  v3(); // _ZN9S19604C102v3Ev
  ~S19604C10(); // tgen
  S19604C10(); // tgen
};
//SIG(-1 S19604C10) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19604C10 ::v3(){vfunc_called(this, "_ZN9S19604C102v3Ev");}
S19604C10 ::~S19604C10(){ note_dtor("S19604C10", this);} // tgen
S19604C10 ::S19604C10(){ note_ctor("S19604C10", this);} // tgen

static void Test_S19604C10()
{
  extern Class_Descriptor cd_S19604C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19604C10, buf);
    S19604C10 *dp, &lv = *(dp=new (buf) S19604C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19604C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C10)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(48,28), "S19604C10");
    check_base_class_offset(lv, (S19604C5*), ABISELECT(48,28), "S19604C10");
    check_field_offset(lv, s19604c10f0, ABISELECT(8,4), "S19604C10.s19604c10f0");
    check_field_offset(lv, s19604c10f1, ABISELECT(10,6), "S19604C10.s19604c10f1");
    check_field_offset(lv, s19604c10f2, ABISELECT(16,8), "S19604C10.s19604c10f2");
    check_field_offset(lv, s19604c10f3, ABISELECT(32,20), "S19604C10.s19604c10f3");
    test_class_info(&lv, &cd_S19604C10);
    dp->~S19604C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C10(Test_S19604C10, "S19604C10", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19604C10C1Ev();
extern void _ZN9S19604C10D1Ev();
Name_Map name_map_S19604C10[] = {
  NSPAIR(_ZN9S19604C10C1Ev),
  NSPAIR(_ZN9S19604C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
static Base_Class bases_S19604C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19604C10[];
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19604C10D1Ev,_ZThn28_N9S19604C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19604C10D0Ev,_ZThn28_N9S19604C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C10[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19604C10[];
static  VTT_ENTRY vtt_S19604C10[] = {
  {&(_ZTV9S19604C10[3]),  3,11},
  {&(_ZTV9S19604C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19604C10D0Ev,_ZThn28_N9S19604C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19604C10D1Ev,_ZThn28_N9S19604C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C10 = {  "S19604C10", // class name
  bases_S19604C10, 2,
  &(vtc_S19604C10[0]), // expected_vtbl_contents
  &(vtt_S19604C10[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19604C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19604C10),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19604C10),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C9  : S19604C2 , virtual S19604C10 {
  char s19604c9f0;
  int s19604c9f1:32;
  virtual  ~S19604C9(); // _ZN8S19604C9D2Ev
  S19604C9(); // tgen
};
//SIG(-1 S19604C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S19604C9 ::~S19604C9(){ note_dtor("S19604C9", this);}
S19604C9 ::S19604C9(){ note_ctor("S19604C9", this);} // tgen

static void Test_S19604C9()
{
  extern Class_Descriptor cd_S19604C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19604C9, buf);
    S19604C9 *dp, &lv = *(dp=new (buf) S19604C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19604C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C9)");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*), 0, "S19604C9");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(160,92), "S19604C9");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(656,352), "S19604C9");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*), ABISELECT(160,92), "S19604C9");
    check_base_class_offset(lv, (S19604C2*), 0, "S19604C9");
    check_base_class_offset(lv, (S19604C10*), ABISELECT(800,428), "S19604C9");
    check_field_offset(lv, s19604c9f0, ABISELECT(140,84), "S19604C9.s19604c9f0");
    set_bf_and_test(lv, s19604c9f1, ABISELECT(144,88), 0, 32, 1, "S19604C9");
    set_bf_and_test(lv, s19604c9f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19604C9");
    test_class_info(&lv, &cd_S19604C9);
    dp->~S19604C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C9(Test_S19604C9, "S19604C9", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19604C9C1Ev();
extern void _ZN8S19604C9D2Ev();
Name_Map name_map_S19604C9[] = {
  NSPAIR(_ZN8S19604C9C1Ev),
  NSPAIR(_ZN8S19604C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
static Base_Class bases_S19604C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C5,    ABISELECT(656,352), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19604C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19604C10,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C9[];
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19604C9D1Ev,_ZThn352_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19604C9D0Ev,_ZThn352_N8S19604C9D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C9D1Ev,_ZThn428_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C9D0Ev,_ZThn428_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19604C9[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19604C9[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C2__8S19604C9[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C2D1Ev,_ZThn92_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C2D0Ev,_ZThn92_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2__8S19604C9[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn656_N8S19604C2D1Ev,_ZThn352_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn656_N8S19604C2D0Ev,_ZThn352_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C2__8S19604C9[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C9[] = {
  {&(_ZTV8S19604C9[5]),  5,28},
  {&(_tg__ZTV8S19604C2__8S19604C9[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C2__8S19604C9[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C2__8S19604C9[3]),  3,5},
  {&(_ZTV8S19604C9[12]),  12,28},
  {&(_ZTV8S19604C9[18]),  18,28},
  {&(_ZTV8S19604C9[25]),  25,28},
  {&(_tg__ZTV8S19604C4__8S19604C9[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C9[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C2D0Ev,_ZThn352_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C2D1Ev,_ZThn352_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C2D0Ev,_ZThn92_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C2D1Ev,_ZThn92_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C9D0Ev,_ZThn428_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C9D1Ev,_ZThn428_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C9D0Ev,_ZThn352_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19604C9D1Ev,_ZThn352_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C9 = {  "S19604C9", // class name
  bases_S19604C9, 7,
  &(vtc_S19604C9[0]), // expected_vtbl_contents
  &(vtt_S19604C9[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19604C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19604C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C12  {
  long double s19604c12f0;
  void *s19604c12f1;
  ::S8033C7 s19604c12f2;
  __tsi64 s19604c12f3;
  long double s19604c12f4;
  int s19604c12f5;
  virtual void  v4(); // _ZN9S19604C122v4Ev
  ~S19604C12(); // tgen
  S19604C12(); // tgen
};
//SIG(-1 S19604C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19604C12 ::v4(){vfunc_called(this, "_ZN9S19604C122v4Ev");}
S19604C12 ::~S19604C12(){ note_dtor("S19604C12", this);} // tgen
S19604C12 ::S19604C12(){ note_ctor("S19604C12", this);} // tgen

static void Test_S19604C12()
{
  extern Class_Descriptor cd_S19604C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19604C12, buf);
    S19604C12 *dp, &lv = *(dp=new (buf) S19604C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19604C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C12)");
    check_field_offset(lv, s19604c12f0, ABISELECT(16,4), "S19604C12.s19604c12f0");
    check_field_offset(lv, s19604c12f1, ABISELECT(32,16), "S19604C12.s19604c12f1");
    check_field_offset(lv, s19604c12f2, ABISELECT(48,20), "S19604C12.s19604c12f2");
    check_field_offset(lv, s19604c12f3, ABISELECT(144,72), "S19604C12.s19604c12f3");
    check_field_offset(lv, s19604c12f4, ABISELECT(160,80), "S19604C12.s19604c12f4");
    check_field_offset(lv, s19604c12f5, ABISELECT(176,92), "S19604C12.s19604c12f5");
    test_class_info(&lv, &cd_S19604C12);
    dp->~S19604C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C12(Test_S19604C12, "S19604C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19604C12C1Ev();
extern void _ZN9S19604C12D1Ev();
Name_Map name_map_S19604C12[] = {
  NSPAIR(_ZN9S19604C12C1Ev),
  NSPAIR(_ZN9S19604C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19604C12[];
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C12[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
Class_Descriptor cd_S19604C12 = {  "S19604C12", // class name
  0,0,//no base classes
  &(vtc_S19604C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19604C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19604C12),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  S19604C8  : virtual S19604C7 , virtual S19604C4 , virtual S19604C9 , virtual S8033C4 , virtual S19604C12 {
  void *s19604c8f0;
  ::S19604C12 s19604c8f1[3];
  ::S19604C12 s19604c8f2;
  char s19604c8f3;
  virtual  ~S19604C8(); // _ZN8S19604C8D2Ev
  S19604C8(); // tgen
};
//SIG(-1 S19604C8) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19604C8 ::~S19604C8(){ note_dtor("S19604C8", this);}
S19604C8 ::S19604C8(){ note_ctor("S19604C8", this);} // tgen

static void Test_S19604C8()
{
  extern Class_Descriptor cd_S19604C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19604C8, buf);
    S19604C8 *dp, &lv = *(dp=new (buf) S19604C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19604C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C8)");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*)(S19604C7*), ABISELECT(800,396), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C7*), ABISELECT(800,396), "S19604C8");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C7*), ABISELECT(1056,528), "S19604C8");
    check_base_class_offset(lv, (S19604C7*), ABISELECT(800,396), "S19604C8");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(1152,580), "S19604C8");
    /*is_ambiguous_... S19604C8::S19604C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(1648,840), "S19604C8");
    check_base_class_offset(lv, (S19604C4*), ABISELECT(1152,580), "S19604C8");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*)(S19604C9*), ABISELECT(1152,580), "S19604C8");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*)(S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S19604C2*)(S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S19604C10*)(S19604C9*), ABISELECT(1952,1008), "S19604C8");
    check_base_class_offset(lv, (S19604C9*), ABISELECT(1792,916), "S19604C8");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19604C8");
    check_base_class_offset(lv, (S19604C12*), ABISELECT(2096,1112), "S19604C8");
    check_field_offset(lv, s19604c8f0, ABISELECT(8,4), "S19604C8.s19604c8f0");
    check_field_offset(lv, s19604c8f1, ABISELECT(16,8), "S19604C8.s19604c8f1");
    check_field_offset(lv, s19604c8f2, ABISELECT(592,296), "S19604C8.s19604c8f2");
    check_field_offset(lv, s19604c8f3, ABISELECT(784,392), "S19604C8.s19604c8f3");
    test_class_info(&lv, &cd_S19604C8);
    dp->~S19604C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C8(Test_S19604C8, "S19604C8", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S19604C8C1Ev();
extern void _ZN8S19604C8D2Ev();
Name_Map name_map_S19604C8[] = {
  NSPAIR(_ZN8S19604C8C1Ev),
  NSPAIR(_ZN8S19604C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C7;
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
extern Class_Descriptor cd_S19604C9;
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
static Base_Class bases_S19604C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19604C7,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19604C5,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19604C2,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19604C10,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19604C9,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19604C12,    ABISELECT(2096,1112), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C8[];
extern void _ZN8S19604C8D1Ev();
extern void _ZN8S19604C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19604C8D1Ev,_ZThn840_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19604C8D0Ev,_ZThn840_N8S19604C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19604C8D1Ev,_ZThn916_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19604C8D0Ev,_ZThn916_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19604C8D1Ev,_ZThn1008_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19604C8D0Ev,_ZThn1008_N8S19604C8D0Ev)() __attribute__((weak));
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C8[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN8S19604C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C8D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19604C8[];
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C8[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C7__8S19604C8[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C8[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C8[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
};
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C28S19604C9__8S19604C8[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C28S19604C9__8S19604C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C28S19604C9__8S19604C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9__8S19604C8[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C9__8S19604C8[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9__8S19604C8[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C8[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C8[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C8[] = {
  {&(_ZTV8S19604C8[10]),  10,56},
  {&(_ZTV8S19604C8[16]),  16,56},
  {&(_ZTV8S19604C8[21]),  21,56},
  {&(_ZTV8S19604C8[28]),  28,56},
  {&(_ZTV8S19604C8[34]),  34,56},
  {&(_ZTV8S19604C8[42]),  42,56},
  {&(_ZTV8S19604C8[49]),  49,56},
  {&(_ZTV8S19604C8[55]),  55,56},
  {&(_tg__ZTV8S19604C7__8S19604C8[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19604C7__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C8[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C8[5]),  5,7},
  {&(_tg__ZTV8S19604C28S19604C9__8S19604C8[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C28S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C28S19604C9__8S19604C8[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C9__8S19604C8[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9__8S19604C8[5]),  5,8},
  {&(_tg__ZTV9S19604C10__8S19604C8[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C8[];
extern  VTBL_ENTRY _ZTV8S19604C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C8[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19604C8D0Ev,_ZThn1008_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19604C8D1Ev,_ZThn1008_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19604C8D0Ev,_ZThn916_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19604C8D1Ev,_ZThn916_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19604C8D0Ev,_ZThn840_N8S19604C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19604C8D1Ev,_ZThn840_N8S19604C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C8 = {  "S19604C8", // class name
  bases_S19604C8, 14,
  &(vtc_S19604C8[0]), // expected_vtbl_contents
  &(vtt_S19604C8[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S19604C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19604C8),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C8),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19604C1  : virtual S19604C2 , virtual S19604C8 , S19604C12 {
  int s19604c1f0;
  long s19604c1f1;
  virtual  ~S19604C1(); // _ZN8S19604C1D2Ev
  virtual void  v1(); // _ZN8S19604C12v1Ev
  S19604C1(); // tgen
};
//SIG(1 S19604C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v2 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC7 VBC4 VBC9{ BC2 VBC10{ VBC5 v3 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC11{ m Fp[3] FL[8]} VBC12{ v4 FD Fp FC3 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC12 vd v1 Fi Fl}


 S19604C1 ::~S19604C1(){ note_dtor("S19604C1", this);}
void  S19604C1 ::v1(){vfunc_called(this, "_ZN8S19604C12v1Ev");}
S19604C1 ::S19604C1(){ note_ctor("S19604C1", this);} // tgen

static void Test_S19604C1()
{
  extern Class_Descriptor cd_S19604C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,350)];
    init_test(&cd_S19604C1, buf);
    S19604C1 *dp, &lv = *(dp=new (buf) S19604C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1396), "sizeof(S19604C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19604C1)");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*), ABISELECT(192,104), "S19604C1");
    /*is_ambiguous_... S19604C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C4*), ABISELECT(336,188), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C5*), ABISELECT(832,448), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C4*), ABISELECT(832,448), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C10*), ABISELECT(832,448), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S19604C4*)(S19604C2*), ABISELECT(336,188), "S19604C1");
    check_base_class_offset(lv, (S19604C4*)(S19604C8*), ABISELECT(336,188), "S19604C1");
    check_base_class_offset(lv, (S19604C4*)(S19604C2*)(S19604C9*), ABISELECT(336,188), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C2 */ AMB_check_base_class_offset(lv, (S19604C2*), ABISELECT(192,104), "S19604C1");
    check_base_class_offset(lv, (S8033C7*)(S19604C5*)(S19604C7*), ABISELECT(1776,920), "S19604C1");
    check_base_class_offset(lv, (S19604C5*)(S19604C7*), ABISELECT(1776,920), "S19604C1");
    /*is_ambiguous_... S19604C7::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C7*), ABISELECT(2032,1052), "S19604C1");
    check_base_class_offset(lv, (S19604C7*)(S19604C8*), ABISELECT(1776,920), "S19604C1");
    /*is_ambiguous_... S19604C2::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19604C2*)(S19604C9*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S19604C2*)(S19604C9*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S19604C10*)(S19604C9*), ABISELECT(2288,1196), "S19604C1");
    check_base_class_offset(lv, (S19604C9*)(S19604C8*), ABISELECT(2128,1104), "S19604C1");
    check_base_class_offset(lv, (S8033C4*)(S19604C8*), ABISELECT(2336,1224), "S19604C1");
    check_base_class_offset(lv, (S19604C12*)(S19604C8*), ABISELECT(2432,1300), "S19604C1");
    check_base_class_offset(lv, (S19604C8*), ABISELECT(976,524), "S19604C1");
    /*is_ambiguous_... S19604C1::S19604C12 */ AMB_check_base_class_offset(lv, (S19604C12*), 0, "S19604C1");
    check_field_offset(lv, s19604c1f0, ABISELECT(180,96), "S19604C1.s19604c1f0");
    check_field_offset(lv, s19604c1f1, ABISELECT(184,100), "S19604C1.s19604c1f1");
    test_class_info(&lv, &cd_S19604C1);
    dp->~S19604C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19604C1(Test_S19604C1, "S19604C1", ABISELECT(2624,1396));

#else // __cplusplus

extern void _ZN8S19604C1C1Ev();
extern void _ZN8S19604C1D2Ev();
Name_Map name_map_S19604C1[] = {
  NSPAIR(_ZN8S19604C1C1Ev),
  NSPAIR(_ZN8S19604C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S19604C4;
extern VTBL_ENTRY _ZTI8S19604C4[];
extern  VTBL_ENTRY _ZTV8S19604C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C4[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C5;
extern VTBL_ENTRY _ZTI8S19604C5[];
extern  VTBL_ENTRY _ZTV8S19604C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C7;
extern VTBL_ENTRY _ZTI8S19604C7[];
extern  VTBL_ENTRY _ZTV8S19604C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19604C2;
extern VTBL_ENTRY _ZTI8S19604C2[];
extern  VTBL_ENTRY _ZTV8S19604C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C2[];
extern Class_Descriptor cd_S19604C10;
extern VTBL_ENTRY _ZTI9S19604C10[];
extern  VTBL_ENTRY _ZTV9S19604C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19604C10[];
extern Class_Descriptor cd_S19604C9;
extern VTBL_ENTRY _ZTI8S19604C9[];
extern  VTBL_ENTRY _ZTV8S19604C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
extern Class_Descriptor cd_S19604C8;
extern VTBL_ENTRY _ZTI8S19604C8[];
extern  VTBL_ENTRY _ZTV8S19604C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C8[];
extern Class_Descriptor cd_S19604C12;
extern VTBL_ENTRY _ZTI9S19604C12[];
extern  VTBL_ENTRY _ZTV9S19604C12[];
static Base_Class bases_S19604C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(336,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(832,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C5,    ABISELECT(832,448), //bcp->offset
    31, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19604C4,    ABISELECT(336,188), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19604C2,    ABISELECT(192,104), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1776,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19604C5,    ABISELECT(1776,920), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(2032,1052), //bcp->offset
    55, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19604C7,    ABISELECT(1776,920), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2128,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19604C2,    ABISELECT(2128,1104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19604C10,    ABISELECT(2288,1196), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19604C9,    ABISELECT(2128,1104), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8033C4,    ABISELECT(2336,1224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19604C12,    ABISELECT(2432,1300), //bcp->offset
    76, //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
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19604C8,    ABISELECT(976,524), //bcp->offset
    36, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19604C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19604C1[];
extern void _ZN9S19604C122v4Ev();
extern void _ZN8S19604C1D1Ev();
extern void _ZN8S19604C1D0Ev();
extern void _ZN8S19604C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19604C1D1Ev,_ZThn104_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19604C1D0Ev,_ZThn104_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19604C1D1Ev,_ZThn188_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19604C1D0Ev,_ZThn188_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S19604C1D1Ev,_ZThn448_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S19604C1D0Ev,_ZThn448_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn976_N8S19604C1D1Ev,_ZThn524_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn976_N8S19604C1D0Ev,_ZThn524_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn1776_N8S19604C1D1Ev,_ZThn920_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn1776_N8S19604C1D0Ev,_ZThn920_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2032_N8S19604C1D1Ev,_ZThn1052_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2032_N8S19604C1D0Ev,_ZThn1052_N8S19604C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2128_N8S19604C1D1Ev,_ZThn1104_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2128_N8S19604C1D0Ev,_ZThn1104_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev)();
extern void ABISELECT(_ZThn2288_N8S19604C1D1Ev,_ZThn1196_N8S19604C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev)();
extern void ABISELECT(_ZThn2288_N8S19604C1D0Ev,_ZThn1196_N8S19604C1D0Ev)() __attribute__((weak));
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY vtc_S19604C1[] = {
  ABISELECT(2432,1300),
  ABISELECT(2336,1224),
  ABISELECT(2288,1196),
  ABISELECT(2128,1104),
  ABISELECT(2032,1052),
  ABISELECT(1776,920),
  ABISELECT(976,524),
  ABISELECT(832,448),
  ABISELECT(336,188),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
  (VTBL_ENTRY)&_ZN8S19604C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C12v1Ev,
  ABISELECT(-192,-104),
  ABISELECT(640,344),
  ABISELECT(144,84),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev),
  0,
  ABISELECT(-336,-188),
  ABISELECT(496,260),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
  ABISELECT(-832,-448),
  ABISELECT(-832,-448),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev),
  ABISELECT(-976,-524),
  ABISELECT(1456,776),
  ABISELECT(1360,700),
  ABISELECT(1312,672),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  ABISELECT(-976,-524),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev),
  ABISELECT(-1776,-920),
  ABISELECT(256,132),
  ABISELECT(-1776,-920),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev),
  ABISELECT(-2032,-1052),
  ABISELECT(-2032,-1052),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev),
  ABISELECT(-2128,-1104),
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-2128,-1104),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev),
  ABISELECT(-2288,-1196),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-2288,-1196),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev),
  0,
  ABISELECT(-2432,-1300),
  (VTBL_ENTRY)&(_ZTI8S19604C1[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern VTBL_ENTRY _ZTV8S19604C1[];
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C2__8S19604C1[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev)() __attribute__((weak));
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C2__8S19604C1[] = {
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C2__8S19604C1[] = {
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void _ZN8S19604C4D1Ev();
extern void _ZN8S19604C4D0Ev();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&_ZN8S19604C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C4__8S19604C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19604C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev),
};
extern void _ZN8S19604C8D1Ev();
extern void _ZN8S19604C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C8__8S19604C1[] = {
  ABISELECT(1456,776),
  ABISELECT(1360,700),
  ABISELECT(1312,672),
  ABISELECT(1152,580),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN8S19604C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C8__8S19604C1[] = {
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C8__8S19604C1[] = {
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C8__8S19604C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__A1__8S19604C8__8S19604C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C8__8S19604C1[] = {
  ABISELECT(-1152,-580),
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19604C8D1Ev,_ZThn672_N8S19604C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19604C8D0Ev,_ZThn672_N8S19604C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C8__8S19604C1[] = {
  ABISELECT(-1312,-672),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-1312,-672),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev),
};
extern void _ZN9S19604C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C12__8S19604C8__8S19604C1[] = {
  0,
  ABISELECT(-1456,-776),
  (VTBL_ENTRY)&(_ZTI8S19604C8[0]),
  (VTBL_ENTRY)&_ZN9S19604C122v4Ev,
};
extern void _ZN8S19604C7D1Ev();
extern void _ZN8S19604C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C7__8S19604C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&_ZN8S19604C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19604C7__8S19604C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19604C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev),
};
extern void _ZN8S19604C9D1Ev();
extern void _ZN8S19604C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C9__8S19604C1[] = {
  ABISELECT(160,92),
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN8S19604C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C9D0Ev,
};
extern void _ZN8S19604C2D1Ev();
extern void _ZN8S19604C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C28S19604C9__A1__8S19604C1[] = {
  ABISELECT(-1296,-656),
  ABISELECT(-1792,-916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&_ZN8S19604C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19604C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C28S19604C9__A1__8S19604C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C28S19604C9__A1__8S19604C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19604C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev)();
extern void _ZN8S19604C42v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19604C4__8S19604C9__8S19604C1[] = {
  0,
  ABISELECT(1792,916),
  ABISELECT(496,260),
  ABISELECT(1792,916),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D1Ev,_ZTv0_n16_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19604C9D0Ev,_ZTv0_n16_N8S19604C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19604C42v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__8S19604C9__8S19604C1[] = {
  ABISELECT(1296,656),
  ABISELECT(1296,656),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D1Ev,_ZTv0_n12_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19604C9D0Ev,_ZTv0_n12_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C9__8S19604C1[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-1456,-748),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19604C9[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev),
};
extern void _ZN9S19604C102v3Ev();
extern void _ZN9S19604C10D1Ev();
extern void _ZN9S19604C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19604C10__8S19604C1[] = {
  ABISELECT(-1456,-748),
  0,
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&_ZN9S19604C102v3Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19604C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19604C5__9S19604C10__8S19604C1[] = {
  ABISELECT(1456,748),
  ABISELECT(1456,748),
  (VTBL_ENTRY)&(_ZTI9S19604C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D1Ev,_ZTv0_n12_N9S19604C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19604C10D0Ev,_ZTv0_n12_N9S19604C10D0Ev),
};
static  VTT_ENTRY vtt_S19604C1[] = {
  {&(_ZTV8S19604C1[12]),  12,80},
  {&(_ZTV8S19604C1[21]),  21,80},
  {&(_ZTV8S19604C1[28]),  28,80},
  {&(_ZTV8S19604C1[34]),  34,80},
  {&(_ZTV8S19604C1[47]),  47,80},
  {&(_ZTV8S19604C1[53]),  53,80},
  {&(_ZTV8S19604C1[58]),  58,80},
  {&(_ZTV8S19604C1[66]),  66,80},
  {&(_ZTV8S19604C1[73]),  73,80},
  {&(_ZTV8S19604C1[79]),  79,80},
  {&(_tg__ZTV8S19604C2__8S19604C1[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C2__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C2__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C1[3]),  3,6},
  {&(_tg__ZTV8S19604C5__8S19604C4__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C8__8S19604C1[10]),  10,12},
  {&(_tg__ZTV8S19604C7__8S19604C8__8S19604C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19604C8__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C8__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__A1__8S19604C8__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C8__8S19604C1[6]),  6,8},
  {&(_tg__ZTV9S19604C10__8S19604C8__8S19604C1[5]),  5,8},
  {&(_tg__ZTV9S19604C12__8S19604C8__8S19604C1[3]),  3,4},
  {&(_tg__ZTV8S19604C7__8S19604C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19604C7__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C9__8S19604C1[5]),  5,7},
  {&(_tg__ZTV8S19604C28S19604C9__A1__8S19604C1[4]),  4,6},
  {&(_tg__ZTV8S19604C4__8S19604C28S19604C9__A1__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C28S19604C9__A1__8S19604C1[3]),  3,5},
  {&(_tg__ZTV8S19604C4__8S19604C9__8S19604C1[5]),  5,8},
  {&(_tg__ZTV8S19604C5__8S19604C9__8S19604C1[3]),  3,5},
  {&(_tg__ZTV9S19604C10__8S19604C9__8S19604C1[5]),  5,8},
  {&(_tg__ZTV9S19604C10__8S19604C1[3]),  3,6},
  {&(_tg__ZTV8S19604C5__9S19604C10__8S19604C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19604C1[];
extern  VTBL_ENTRY _ZTV8S19604C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19604C1[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D0Ev,_ZTv0_n20_N8S19604C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D0Ev,_ZThn92_N8S19604C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C9D1Ev,_ZTv0_n20_N8S19604C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19604C9D1Ev,_ZThn92_N8S19604C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D0Ev,_ZTv0_n12_N8S19604C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D0Ev,_ZThn132_N8S19604C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C7D1Ev,_ZTv0_n12_N8S19604C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19604C7D1Ev,_ZThn132_N8S19604C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D0Ev,_ZTv0_n20_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19604C8D0Ev,_ZThn672_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C8D1Ev,_ZTv0_n20_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19604C8D1Ev,_ZThn672_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D0Ev,_ZTv0_n24_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D0Ev,_ZThn580_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C8D1Ev,_ZTv0_n24_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19604C8D1Ev,_ZThn580_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D0Ev,_ZTv0_n12_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D0Ev,_ZThn528_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C8D1Ev,_ZTv0_n12_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19604C8D1Ev,_ZThn528_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D0Ev,_ZTv0_n16_N8S19604C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D0Ev,_ZThn396_N8S19604C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C8D1Ev,_ZTv0_n16_N8S19604C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19604C8D1Ev,_ZThn396_N8S19604C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D0Ev,_ZTv0_n12_N8S19604C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D0Ev,_ZThn260_N8S19604C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C4D1Ev,_ZTv0_n12_N8S19604C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19604C4D1Ev,_ZThn260_N8S19604C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D0Ev,_ZTv0_n12_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D0Ev,_ZThn344_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C2D1Ev,_ZTv0_n12_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19604C2D1Ev,_ZThn344_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D0Ev,_ZTv0_n16_N8S19604C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D0Ev,_ZThn84_N8S19604C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C2D1Ev,_ZTv0_n16_N8S19604C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19604C2D1Ev,_ZThn84_N8S19604C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C1D0Ev,_ZTv0_n24_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19604C1D0Ev,_ZThn1104_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19604C1D1Ev,_ZTv0_n24_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S19604C1D1Ev,_ZThn1104_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19604C1D0Ev,_ZTv0_n44_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19604C1D0Ev,_ZThn524_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19604C1D1Ev,_ZTv0_n44_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N8S19604C1D1Ev,_ZThn524_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C1D0Ev,_ZTv0_n12_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19604C1D0Ev,_ZThn1052_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19604C1D0Ev,_ZThn448_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19604C1D1Ev,_ZTv0_n12_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2032_N8S19604C1D1Ev,_ZThn1052_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19604C1D1Ev,_ZThn448_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C1D0Ev,_ZTv0_n16_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19604C1D0Ev,_ZThn920_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19604C1D0Ev,_ZThn188_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19604C1D1Ev,_ZTv0_n16_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1776_N8S19604C1D1Ev,_ZThn920_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19604C1D1Ev,_ZThn188_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C1D0Ev,_ZTv0_n20_N8S19604C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19604C1D0Ev,_ZThn1196_N8S19604C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19604C1D0Ev,_ZThn104_N8S19604C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19604C1D1Ev,_ZTv0_n20_N8S19604C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2288_N8S19604C1D1Ev,_ZThn1196_N8S19604C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19604C1D1Ev,_ZThn104_N8S19604C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19604C1 = {  "S19604C1", // class name
  bases_S19604C1, 18,
  &(vtc_S19604C1[0]), // expected_vtbl_contents
  &(vtt_S19604C1[0]), // expected_vtt_contents
  ABISELECT(2624,1396), // object size
  NSPAIRA(_ZTI8S19604C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19604C1),80, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19604C1),34, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C7  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S19495C7(); // tgen
  S19495C7(); // tgen
};
//SIG(-1 S19495C7) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19495C7 ::~S19495C7(){ note_dtor("S19495C7", this);} // tgen
S19495C7 ::S19495C7(){ note_ctor("S19495C7", this);} // tgen

static void Test_S19495C7()
{
  extern Class_Descriptor cd_S19495C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19495C7, buf);
    S19495C7 *dp, &lv = *(dp=new (buf) S19495C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19495C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C7)");
    check_base_class_offset(lv, (S7856C24*), 0, "S19495C7");
    check_base_class_offset(lv, (S7856C15*), 0, "S19495C7");
    check_base_class_offset(lv, (S7856C12*), 0, "S19495C7");
    test_class_info(&lv, &cd_S19495C7);
    dp->~S19495C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C7(Test_S19495C7, "S19495C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19495C7C1Ev();
extern void _ZN8S19495C7D1Ev();
Name_Map name_map_S19495C7[] = {
  NSPAIR(_ZN8S19495C7C1Ev),
  NSPAIR(_ZN8S19495C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19495C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19495C7[];
static  VTBL_ENTRY vtc_S19495C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern VTBL_ENTRY _ZTV8S19495C7[];
static  VTT_ENTRY vtt_S19495C7[] = {
  {&(_ZTV8S19495C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
Class_Descriptor cd_S19495C7 = {  "S19495C7", // class name
  bases_S19495C7, 3,
  &(vtc_S19495C7[0]), // expected_vtbl_contents
  &(vtt_S19495C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19495C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19495C7),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C7),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  S19495C6  : S7856C24 , virtual S19495C7 , virtual S7856C15 {
  ~S19495C6(); // tgen
  S19495C6(); // tgen
};
//SIG(-1 S19495C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19495C6 ::~S19495C6(){ note_dtor("S19495C6", this);} // tgen
S19495C6 ::S19495C6(){ note_ctor("S19495C6", this);} // tgen

static void Test_S19495C6()
{
  extern Class_Descriptor cd_S19495C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19495C6, buf);
    S19495C6 *dp, &lv = *(dp=new (buf) S19495C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19495C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C6)");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C6");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(8,4), "S19495C6");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C6");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C6");
    check_base_class_offset(lv, (S19495C7*), 0, "S19495C6");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C6");
    test_class_info(&lv, &cd_S19495C6);
    dp->~S19495C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C6(Test_S19495C6, "S19495C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19495C6C1Ev();
extern void _ZN8S19495C6D1Ev();
Name_Map name_map_S19495C6[] = {
  NSPAIR(_ZN8S19495C6C1Ev),
  NSPAIR(_ZN8S19495C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19495C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    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},
  {&cd_S7856C15,    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 _ZTI8S19495C6[];
static  VTBL_ENTRY vtc_S19495C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern VTBL_ENTRY _ZTV8S19495C6[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C6[] = {
  {&(_ZTV8S19495C6[6]),  6,6},
  {&(_ZTV8S19495C6[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
Class_Descriptor cd_S19495C6 = {  "S19495C6", // class name
  bases_S19495C6, 6,
  &(vtc_S19495C6[0]), // expected_vtbl_contents
  &(vtt_S19495C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19495C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19495C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C6),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  S19495C9  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S19495C7 , virtual S19495C6 {
  virtual  ~S19495C9(); // _ZN8S19495C9D2Ev
  S19495C9(); // tgen
};
//SIG(-1 S19495C9) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19495C9 ::~S19495C9(){ note_dtor("S19495C9", this);}
S19495C9 ::S19495C9(){ note_ctor("S19495C9", this);} // tgen

static void Test_S19495C9()
{
  extern Class_Descriptor cd_S19495C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19495C9, buf);
    S19495C9 *dp, &lv = *(dp=new (buf) S19495C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19495C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C9)");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C9");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C9");
    check_base_class_offset(lv, (S7856C12*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*), 0, "S19495C9");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C9");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(16,8), "S19495C9");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(16,8), "S19495C9");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(24,12), "S19495C9");
    check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C9");
    test_class_info(&lv, &cd_S19495C9);
    dp->~S19495C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C9(Test_S19495C9, "S19495C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19495C9C1Ev();
extern void _ZN8S19495C9D2Ev();
Name_Map name_map_S19495C9[] = {
  NSPAIR(_ZN8S19495C9C1Ev),
  NSPAIR(_ZN8S19495C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
static Base_Class bases_S19495C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C9[];
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY vtc_S19495C9[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern VTBL_ENTRY _ZTV8S19495C9[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__A__8S19495C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__A1__8S19495C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C9[] = {
  {&(_ZTV8S19495C9[7]),  7,15},
  {&(_tg__ZTV8S19495C7__A__8S19495C9[4]),  4,4},
  {&(_ZTV8S19495C9[15]),  15,15},
  {&(_ZTV8S19495C9[15]),  15,15},
  {&(_tg__ZTV8S19495C6__8S19495C9[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9[6]),  6,6},
  {&(_tg__ZTV8S19495C7__A1__8S19495C9[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
Class_Descriptor cd_S19495C9 = {  "S19495C9", // class name
  bases_S19495C9, 10,
  &(vtc_S19495C9[0]), // expected_vtbl_contents
  &(vtt_S19495C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19495C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C9),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C9),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  S19495C3  : virtual S7856C24 , virtual S7856C15 , virtual S19495C6 , S7856C12 , S19495C9 {
  virtual  ~S19495C3(); // _ZN8S19495C3D2Ev
  S19495C3(); // tgen
};
//SIG(-1 S19495C3) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19495C3 ::~S19495C3(){ note_dtor("S19495C3", this);}
S19495C3 ::S19495C3(){ note_ctor("S19495C3", this);} // tgen

static void Test_S19495C3()
{
  extern Class_Descriptor cd_S19495C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19495C3, buf);
    S19495C3 *dp, &lv = *(dp=new (buf) S19495C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19495C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C3)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S19495C3");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(9,5), "S19495C3");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(24,12), "S19495C3");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(24,12), "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C3");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(16,8), "S19495C3");
    check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C3");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(16,8), "S19495C3");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(8,4), "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), 0, "S19495C3");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), 0, "S19495C3");
    check_base_class_offset(lv, (S19495C9*), 0, "S19495C3");
    test_class_info(&lv, &cd_S19495C3);
    dp->~S19495C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C3(Test_S19495C3, "S19495C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19495C3C1Ev();
extern void _ZN8S19495C3D2Ev();
Name_Map name_map_S19495C3[] = {
  NSPAIR(_ZN8S19495C3C1Ev),
  NSPAIR(_ZN8S19495C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
static Base_Class bases_S19495C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C3[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY vtc_S19495C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern VTBL_ENTRY _ZTV8S19495C3[];
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__8S19495C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A1__8S19495C3[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__8S19495C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C3[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C3[] = {
  {&(_ZTV8S19495C3[7]),  7,15},
  {&(_tg__ZTV8S19495C9__8S19495C3[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A1__8S19495C3[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__8S19495C3[6]),  6,6},
  {&(_ZTV8S19495C3[15]),  15,15},
  {&(_ZTV8S19495C3[15]),  15,15},
  {&(_tg__ZTV8S19495C6__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
Class_Descriptor cd_S19495C3 = {  "S19495C3", // class name
  bases_S19495C3, 12,
  &(vtc_S19495C3[0]), // expected_vtbl_contents
  &(vtt_S19495C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19495C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C3),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C3),10, //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  S19495C10  : S7856C12 , S7856C15 , S19495C7 {
  int s19495c10f0;
  ~S19495C10(); // tgen
  S19495C10(); // tgen
};
//SIG(-1 S19495C10) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S19495C10 ::~S19495C10(){ note_dtor("S19495C10", this);} // tgen
S19495C10 ::S19495C10(){ note_ctor("S19495C10", this);} // tgen

static void Test_S19495C10()
{
  extern Class_Descriptor cd_S19495C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19495C10, buf);
    S19495C10 *dp, &lv = *(dp=new (buf) S19495C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19495C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C10)");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C10");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S19495C10");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C10");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C10");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(12,8), "S19495C10");
    check_base_class_offset(lv, (S19495C7*), 0, "S19495C10");
    check_field_offset(lv, s19495c10f0, ABISELECT(8,4), "S19495C10.s19495c10f0");
    test_class_info(&lv, &cd_S19495C10);
    dp->~S19495C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C10(Test_S19495C10, "S19495C10", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S19495C10C1Ev();
extern void _ZN9S19495C10D1Ev();
Name_Map name_map_S19495C10[] = {
  NSPAIR(_ZN9S19495C10C1Ev),
  NSPAIR(_ZN9S19495C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
static Base_Class bases_S19495C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S19495C7,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C10[];
static  VTBL_ENTRY vtc_S19495C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
extern VTBL_ENTRY _ZTV9S19495C10[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C10[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C10[] = {
  {&(_ZTV9S19495C10[4]),  4,4},
  {&(_tg__ZTV8S19495C7__9S19495C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
Class_Descriptor cd_S19495C10 = {  "S19495C10", // class name
  bases_S19495C10, 6,
  &(vtc_S19495C10[0]), // expected_vtbl_contents
  &(vtt_S19495C10[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S19495C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19495C10),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C10),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  S19495C13  : virtual S19495C3 , virtual S19495C10 , virtual S19495C9 {
  int s19495c13f0[2];
  virtual  ~S19495C13(); // _ZN9S19495C13D2Ev
  S19495C13(); // tgen
};
//SIG(-1 S19495C13) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S19495C13 ::~S19495C13(){ note_dtor("S19495C13", this);}
S19495C13 ::S19495C13(){ note_ctor("S19495C13", this);} // tgen

static void Test_S19495C13()
{
  extern Class_Descriptor cd_S19495C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19495C13, buf);
    S19495C13 *dp, &lv = *(dp=new (buf) S19495C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19495C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C13)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(25,17), "S19495C13");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C13");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C13");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C13");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(24,16), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(16,12), "S19495C13");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(16,12), "S19495C13");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(40,24), "S19495C13");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C13");
    check_base_class_offset(lv, (S19495C10*), ABISELECT(32,20), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(56,32), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(48,28), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(48,28), "S19495C13");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*), ABISELECT(48,28), "S19495C13");
    check_field_offset(lv, s19495c13f0, ABISELECT(8,4), "S19495C13.s19495c13f0");
    test_class_info(&lv, &cd_S19495C13);
    dp->~S19495C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C13(Test_S19495C13, "S19495C13", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19495C13C1Ev();
extern void _ZN9S19495C13D2Ev();
Name_Map name_map_S19495C13[] = {
  NSPAIR(_ZN9S19495C13C1Ev),
  NSPAIR(_ZN9S19495C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
static Base_Class bases_S19495C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C13[];
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C13[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C13[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C13[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTT_ENTRY vtt_S19495C13[] = {
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[20]),  20,36},
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[10]),  10,36},
  {&(_ZTV9S19495C13[26]),  26,36},
  {&(_ZTV9S19495C13[34]),  34,36},
  {&(_tg__ZTV8S19495C3__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C13[4]),  4,4},
  {&(_tg__ZTV9S19495C10__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C13[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C13[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C13 = {  "S19495C13", // class name
  bases_S19495C13, 22,
  &(vtc_S19495C13[0]), // expected_vtbl_contents
  &(vtt_S19495C13[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19495C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19495C13),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C13),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C16  : virtual S7856C15 {
  ~S19495C16(); // tgen
  S19495C16(); // tgen
};
//SIG(-1 S19495C16) C1{ VBC2{ m}}


S19495C16 ::~S19495C16(){ note_dtor("S19495C16", this);} // tgen
S19495C16 ::S19495C16(){ note_ctor("S19495C16", this);} // tgen

static void Test_S19495C16()
{
  extern Class_Descriptor cd_S19495C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19495C16, buf);
    S19495C16 *dp, &lv = *(dp=new (buf) S19495C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19495C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C16)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19495C16");
    test_class_info(&lv, &cd_S19495C16);
    dp->~S19495C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C16(Test_S19495C16, "S19495C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19495C16C1Ev();
extern void _ZN9S19495C16D1Ev();
Name_Map name_map_S19495C16[] = {
  NSPAIR(_ZN9S19495C16C1Ev),
  NSPAIR(_ZN9S19495C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S19495C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S19495C16[];
static  VTBL_ENTRY vtc_S19495C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
extern VTBL_ENTRY _ZTV9S19495C16[];
static  VTT_ENTRY vtt_S19495C16[] = {
  {&(_ZTV9S19495C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
Class_Descriptor cd_S19495C16 = {  "S19495C16", // class name
  bases_S19495C16, 1,
  &(vtc_S19495C16[0]), // expected_vtbl_contents
  &(vtt_S19495C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19495C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19495C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C16),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  S19495C15  : virtual S19495C7 , virtual S19495C16 , virtual S19495C10 , S7856C12 , virtual S19495C3 {
  int s19495c15f0;
  virtual  ~S19495C15(); // _ZN9S19495C15D2Ev
  S19495C15(); // tgen
};
//SIG(-1 S19495C15) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S19495C15 ::~S19495C15(){ note_dtor("S19495C15", this);}
S19495C15 ::S19495C15(){ note_ctor("S19495C15", this);} // tgen

static void Test_S19495C15()
{
  extern Class_Descriptor cd_S19495C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19495C15, buf);
    S19495C15 *dp, &lv = *(dp=new (buf) S19495C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19495C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C15)");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C15");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(48,28), "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(12,8), "S19495C15");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(12,8), "S19495C15");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(12,8), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(12,8), "S19495C15");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), 0, "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), 0, "S19495C15");
    /*is_ambiguous_... S19495C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), 0, "S19495C15");
    check_base_class_offset(lv, (S19495C16*), 0, "S19495C15");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(24,16), "S19495C15");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(16,12), "S19495C15");
    check_base_class_offset(lv, (S19495C10*), ABISELECT(16,12), "S19495C15");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S19495C15");
    /*is_ambiguous_... S19495C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C15");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C15");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(40,24), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(32,20), "S19495C15");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(32,20), "S19495C15");
    check_field_offset(lv, s19495c15f0, ABISELECT(8,4), "S19495C15.s19495c15f0");
    test_class_info(&lv, &cd_S19495C15);
    dp->~S19495C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C15(Test_S19495C15, "S19495C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19495C15C1Ev();
extern void _ZN9S19495C15D2Ev();
Name_Map name_map_S19495C15[] = {
  NSPAIR(_ZN9S19495C15C1Ev),
  NSPAIR(_ZN9S19495C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
static Base_Class bases_S19495C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C15[];
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C15D1Ev,_ZThn20_N9S19495C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C15D0Ev,_ZThn20_N9S19495C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern VTBL_ENTRY _ZTV9S19495C15[];
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C15[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A1__9S19495C15[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A2__9S19495C15[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTT_ENTRY vtt_S19495C15[] = {
  {&(_ZTV9S19495C15[10]),  10,32},
  {&(_ZTV9S19495C15[32]),  32,32},
  {&(_ZTV9S19495C15[10]),  10,32},
  {&(_ZTV9S19495C15[16]),  16,32},
  {&(_ZTV9S19495C15[24]),  24,32},
  {&(_ZTV9S19495C15[32]),  32,32},
  {&(_tg__ZTV8S19495C7__9S19495C15[4]),  4,4},
  {&(_tg__ZTV9S19495C16__9S19495C15[3]),  3,3},
  {&(_tg__ZTV9S19495C10__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A1__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C15[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A2__9S19495C15[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C15[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C15[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C15D0Ev,_ZThn20_N9S19495C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C15D1Ev,_ZThn20_N9S19495C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C15 = {  "S19495C15", // class name
  bases_S19495C15, 20,
  &(vtc_S19495C15[0]), // expected_vtbl_contents
  &(vtt_S19495C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19495C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19495C15),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C15),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C17  : virtual S19495C9 , S19495C10 , S19495C6 , S7856C12 {
  virtual  ~S19495C17(); // _ZN9S19495C17D2Ev
  S19495C17(); // tgen
};
//SIG(-1 S19495C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S19495C17 ::~S19495C17(){ note_dtor("S19495C17", this);}
S19495C17 ::S19495C17(){ note_ctor("S19495C17", this);} // tgen

static void Test_S19495C17()
{
  extern Class_Descriptor cd_S19495C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19495C17, buf);
    S19495C17 *dp, &lv = *(dp=new (buf) S19495C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19495C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C17)");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(32,16), "S19495C17");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C17");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(33,17), "S19495C17");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(33,17), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(40,20), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(48,24), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(48,24), "S19495C17");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(40,20), "S19495C17");
    check_base_class_offset(lv, (S19495C9*), ABISELECT(24,12), "S19495C17");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), 0, "S19495C17");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(8,4), "S19495C17");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*), 0, "S19495C17");
    check_base_class_offset(lv, (S19495C10*), 0, "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(16,8), "S19495C17");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*), ABISELECT(16,8), "S19495C17");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S19495C17");
    test_class_info(&lv, &cd_S19495C17);
    dp->~S19495C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C17(Test_S19495C17, "S19495C17", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S19495C17C1Ev();
extern void _ZN9S19495C17D2Ev();
Name_Map name_map_S19495C17[] = {
  NSPAIR(_ZN9S19495C17C1Ev),
  NSPAIR(_ZN9S19495C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19495C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19495C9,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19495C10,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C17[];
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C17D1Ev,_ZThn12_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C17D0Ev,_ZThn12_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C17[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern VTBL_ENTRY _ZTV9S19495C17[];
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C17[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C17[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C6__A__9S19495C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C17[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__9S19495C17[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__9S19495C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C17[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__A1__9S19495C17[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTT_ENTRY vtt_S19495C17[] = {
  {&(_ZTV9S19495C17[8]),  8,32},
  {&(_tg__ZTV9S19495C10__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C6__A__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C6__A__9S19495C17[4]),  4,4},
  {&(_ZTV9S19495C17[24]),  24,32},
  {&(_ZTV9S19495C17[32]),  32,32},
  {&(_ZTV9S19495C17[32]),  32,32},
  {&(_ZTV9S19495C17[16]),  16,32},
  {&(_tg__ZTV8S19495C9__9S19495C17[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__9S19495C17[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17[6]),  6,6},
  {&(_tg__ZTV8S19495C7__A1__9S19495C17[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C17D0Ev,_ZThn12_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C17D1Ev,_ZThn12_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C17 = {  "S19495C17", // class name
  bases_S19495C17, 19,
  &(vtc_S19495C17[0]), // expected_vtbl_contents
  &(vtt_S19495C17[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S19495C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19495C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C17),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C12  : virtual S19495C13 , virtual S7856C9_nt , virtual S19495C15 , S19495C17 {
  virtual  ~S19495C12(); // _ZN9S19495C12D2Ev
  S19495C12(); // tgen
};
//SIG(-1 S19495C12) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S19495C12 ::~S19495C12(){ note_dtor("S19495C12", this);}
S19495C12 ::S19495C12(){ note_ctor("S19495C12", this);} // tgen

static void Test_S19495C12()
{
  extern Class_Descriptor cd_S19495C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S19495C12, buf);
    S19495C12 *dp, &lv = *(dp=new (buf) S19495C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19495C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C12)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C12");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C12");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(57,33), "S19495C12");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*), ABISELECT(57,33), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(32,16), "S19495C12");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(48,28), "S19495C12");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(48,28), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(72,40), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(64,36), "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(64,36), "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(64,36), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(88,48), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(80,44), "S19495C12");
    /*is_ambiguous_... S19495C12::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(80,44), "S19495C12");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(80,44), "S19495C12");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*), ABISELECT(80,44), "S19495C12");
    check_base_class_offset(lv, (S19495C13*), ABISELECT(32,16), "S19495C12");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(96,52), "S19495C12");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(96,52), "S19495C12");
    check_base_class_offset(lv, (S19495C15*), ABISELECT(96,52), "S19495C12");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*), ABISELECT(8,4), "S19495C12");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*), 0, "S19495C12");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*), 0, "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*), ABISELECT(16,8), "S19495C12");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*), ABISELECT(16,8), "S19495C12");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*), ABISELECT(24,12), "S19495C12");
    check_base_class_offset(lv, (S19495C17*), 0, "S19495C12");
    test_class_info(&lv, &cd_S19495C12);
    dp->~S19495C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C12(Test_S19495C12, "S19495C12", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN9S19495C12C1Ev();
extern void _ZN9S19495C12D2Ev();
Name_Map name_map_S19495C12[] = {
  NSPAIR(_ZN9S19495C12C1Ev),
  NSPAIR(_ZN9S19495C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
static Base_Class bases_S19495C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19495C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19495C10,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19495C17,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C12[];
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19495C12D1Ev,_ZThn52_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19495C12D0Ev,_ZThn52_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C12[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C12[];
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C17__9S19495C12[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C17__A1__9S19495C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C17__A4__9S19495C12[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C17__A1__9S19495C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C17D1Ev,_ZThn44_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C17D0Ev,_ZThn44_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C17__9S19495C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C17__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C17__9S19495C12[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__9S19495C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__9S19495C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C12[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C12[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__9S19495C12[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__9S19495C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__9S19495C12[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C12[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C12[] = {
  {&(_ZTV9S19495C12[14]),  14,72},
  {&(_tg__ZTV9S19495C17__9S19495C12[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C17__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C17__A4__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C17__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C17__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C17__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C17__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C17__9S19495C12[6]),  6,6},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[43]),  43,72},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[33]),  33,72},
  {&(_ZTV9S19495C12[49]),  49,72},
  {&(_ZTV9S19495C12[57]),  57,72},
  {&(_ZTV9S19495C12[70]),  70,72},
  {&(_ZTV9S19495C12[70]),  70,72},
  {&(_ZTV9S19495C12[22]),  22,72},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__9S19495C12[8]),  8,10},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C13__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C13__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C3__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C12[4]),  4,4},
  {&(_tg__ZTV9S19495C10__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C12[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C12[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__9S19495C12[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__9S19495C12[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C12[6]),  6,6},
  {&(_tg__ZTV9S19495C16__9S19495C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D0Ev,_ZThn28_N9S19495C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C13D1Ev,_ZThn28_N9S19495C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C17D0Ev,_ZThn44_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C17D1Ev,_ZThn44_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19495C12D0Ev,_ZThn52_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19495C12D1Ev,_ZThn52_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C12 = {  "S19495C12", // class name
  bases_S19495C12, 36,
  &(vtc_S19495C12[0]), // expected_vtbl_contents
  &(vtt_S19495C12[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI9S19495C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19495C12),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C12),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C11  : virtual S19495C3 , virtual S19495C12 {
  virtual  ~S19495C11(); // _ZN9S19495C11D2Ev
  S19495C11(); // tgen
};
//SIG(-1 S19495C11) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ VBC10{ VBC2 VBC11{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]} VBC12{ m} VBC13{ VBC6 VBC14{ VBC4} VBC11 BC7 VBC2 vd Fi} BC15{ VBC8 BC11 BC5 BC7 vd} vd} vd}


 S19495C11 ::~S19495C11(){ note_dtor("S19495C11", this);}
S19495C11 ::S19495C11(){ note_ctor("S19495C11", this);} // tgen

static void Test_S19495C11()
{
  extern Class_Descriptor cd_S19495C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19495C11, buf);
    S19495C11 *dp, &lv = *(dp=new (buf) S19495C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19495C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C11)");
    /*is_ambiguous_... S19495C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C9::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(17,9), "S19495C11");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(17,9), "S19495C11");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(17,9), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C11");
    check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C11");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C11");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), 0, "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C11");
    /*is_ambiguous_... S19495C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C9::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(16,8), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C9::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(8,4), "S19495C11");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(8,4), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(80,44), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(72,40), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(72,40), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(72,40), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(96,52), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(88,48), "S19495C11");
    /*is_ambiguous_... S19495C11::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(88,48), "S19495C11");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(88,48), "S19495C11");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C11");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(56,28), "S19495C11");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C11");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(104,56), "S19495C11");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(104,56), "S19495C11");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(104,56), "S19495C11");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(32,16), "S19495C11");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(40,20), "S19495C11");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(40,20), "S19495C11");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(48,24), "S19495C11");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(24,12), "S19495C11");
    check_base_class_offset(lv, (S19495C12*), ABISELECT(24,12), "S19495C11");
    test_class_info(&lv, &cd_S19495C11);
    dp->~S19495C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C11(Test_S19495C11, "S19495C11", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN9S19495C11C1Ev();
extern void _ZN9S19495C11D2Ev();
Name_Map name_map_S19495C11[] = {
  NSPAIR(_ZN9S19495C11C1Ev),
  NSPAIR(_ZN9S19495C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
static Base_Class bases_S19495C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(96,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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(88,48), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(56,28), //bcp->offset
    50, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(104,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(40,20), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C11[];
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C11[] = {
  ABISELECT(104,56),
  ABISELECT(104,56),
  0,
  ABISELECT(88,48),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  ABISELECT(-56,-28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19495C11[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__9S19495C11[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__9S19495C11[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-7,-3),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__9S19495C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A4__9S19495C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__9S19495C11[] = {
  0,
  ABISELECT(17,9),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C17D1Ev,_ZThn36_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C17D0Ev,_ZThn36_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__9S19495C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__9S19495C11[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__9S19495C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__9S19495C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__9S19495C11[] = {
  ABISELECT(-23,-11),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-39,-19),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__9S19495C11[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C13D1Ev,_ZThn20_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C13D0Ev,_ZThn20_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__9S19495C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11[] = {
  ABISELECT(-71,-39),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A3__9S19495C11[] = {
  ABISELECT(-88,-48),
  ABISELECT(-71,-39),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11[] = {
  ABISELECT(-104,-56),
  ABISELECT(-96,-52),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  ABISELECT(-104,-56),
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__9S19495C11[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__9S19495C11[] = {
  ABISELECT(-72,-40),
  ABISELECT(-55,-31),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__9S19495C11[] = {
  ABISELECT(96,52),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C11[] = {
  ABISELECT(-87,-47),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C11[] = {
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[25]),  25,90},
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[15]),  15,90},
  {&(_ZTV9S19495C11[42]),  42,90},
  {&(_ZTV9S19495C11[61]),  61,90},
  {&(_ZTV9S19495C11[67]),  67,90},
  {&(_ZTV9S19495C11[75]),  75,90},
  {&(_ZTV9S19495C11[88]),  88,90},
  {&(_ZTV9S19495C11[88]),  88,90},
  {&(_ZTV9S19495C11[50]),  50,90},
  {&(_tg__ZTV8S19495C3__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C7__9S19495C11[4]),  4,4},
  {&(_tg__ZTV9S19495C12__9S19495C11[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A4__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__9S19495C11[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C11[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__9S19495C11[8]),  8,10},
  {&(_tg__ZTV9S19495C10__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A3__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A1__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C11[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C15__9S19495C11[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__9S19495C11[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__9S19495C11[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__9S19495C11[6]),  6,6},
  {&(_tg__ZTV9S19495C16__9S19495C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C13D0Ev,_ZThn20_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C13D1Ev,_ZThn20_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D0Ev,_ZThn44_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19495C12D1Ev,_ZThn44_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C17D0Ev,_ZThn36_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C17D1Ev,_ZThn36_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C11 = {  "S19495C11", // class name
  bases_S19495C11, 37,
  &(vtc_S19495C11[0]), // expected_vtbl_contents
  &(vtt_S19495C11[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI9S19495C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19495C11),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C11),59, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C18  : S7856C15 , S19495C16 {
  virtual  ~S19495C18(); // _ZN9S19495C18D2Ev
  S19495C18(); // tgen
};
//SIG(-1 S19495C18) C1{ BC2{ m} BC3{ VBC2} vd}


 S19495C18 ::~S19495C18(){ note_dtor("S19495C18", this);}
S19495C18 ::S19495C18(){ note_ctor("S19495C18", this);} // tgen

static void Test_S19495C18()
{
  extern Class_Descriptor cd_S19495C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19495C18, buf);
    S19495C18 *dp, &lv = *(dp=new (buf) S19495C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19495C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C18)");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19495C18");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(8,4), "S19495C18");
    check_base_class_offset(lv, (S19495C16*), 0, "S19495C18");
    test_class_info(&lv, &cd_S19495C18);
    dp->~S19495C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C18(Test_S19495C18, "S19495C18", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19495C18C1Ev();
extern void _ZN9S19495C18D2Ev();
Name_Map name_map_S19495C18[] = {
  NSPAIR(_ZN9S19495C18C1Ev),
  NSPAIR(_ZN9S19495C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
static Base_Class bases_S19495C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S19495C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19495C18[];
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY vtc_S19495C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
extern VTBL_ENTRY _ZTV9S19495C18[];
static  VTBL_ENTRY _tg__ZTV9S19495C16__9S19495C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C18[] = {
  {&(_ZTV9S19495C18[3]),  3,5},
  {&(_tg__ZTV9S19495C16__9S19495C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
Class_Descriptor cd_S19495C18 = {  "S19495C18", // class name
  bases_S19495C18, 3,
  &(vtc_S19495C18[0]), // expected_vtbl_contents
  &(vtt_S19495C18[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19495C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19495C18),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19495C18),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  S19495C2  : S19495C3 , virtual S19495C10 , virtual S19495C11 , S19495C18 , S77C13_nt {
  int s19495c2f0;
  ~S19495C2(); // tgen
  S19495C2(); // tgen
};
//SIG(-1 S19495C2) C1{ BC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC10{ VBC2 VBC11{ VBC12{ VBC2 VBC9 VBC8 vd Fi[2]} VBC13{ m} VBC14{ VBC6 VBC15{ VBC4} VBC9 BC7 VBC2 vd Fi} BC16{ VBC8 BC9 BC5 BC7 vd} vd} vd} BC17{ BC4 BC15 vd} BC18{ m} Fi}


S19495C2 ::~S19495C2(){ note_dtor("S19495C2", this);} // tgen
S19495C2 ::S19495C2(){ note_ctor("S19495C2", this);} // tgen

static void Test_S19495C2()
{
  extern Class_Descriptor cd_S19495C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19495C2, buf);
    S19495C2 *dp, &lv = *(dp=new (buf) S19495C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19495C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C2)");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), 0, "S19495C2");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(28,16), "S19495C2");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*)(S19495C18*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), ABISELECT(28,16), "S19495C2");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(28,16), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(8,4), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C3*), 0, "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(40,24), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C10*), ABISELECT(32,20), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(32,20), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(32,20), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(64,36), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C11*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(56,32), "S19495C2");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(56,32), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(128,72), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C2");
    /*is_ambiguous_... S19495C2::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C2");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(120,68), "S19495C2");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(120,68), "S19495C2");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(104,56), "S19495C2");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C2");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(136,76), "S19495C2");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(136,76), "S19495C2");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(136,76), "S19495C2");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(80,44), "S19495C2");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C2");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C2");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(96,52), "S19495C2");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C12*)(S19495C11*), ABISELECT(72,40), "S19495C2");
    check_base_class_offset(lv, (S19495C11*), ABISELECT(48,28), "S19495C2");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S19495C16*)(S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S19495C18*), ABISELECT(16,8), "S19495C2");
    check_base_class_offset(lv, (S77C13_nt*), 0, "S19495C2");
    check_field_offset(lv, s19495c2f0, ABISELECT(24,12), "S19495C2.s19495c2f0");
    test_class_info(&lv, &cd_S19495C2);
    dp->~S19495C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C2(Test_S19495C2, "S19495C2", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S19495C2C1Ev();
extern void _ZN8S19495C2D1Ev();
Name_Map name_map_S19495C2[] = {
  NSPAIR(_ZN8S19495C2C1Ev),
  NSPAIR(_ZN8S19495C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
extern Class_Descriptor cd_S19495C11;
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S19495C18;
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
static Base_Class bases_S19495C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19495C7,    ABISELECT(48,28), //bcp->offset
    -1, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    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
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(32,20), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(56,32), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(120,68), //bcp->offset
    91, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(104,56), //bcp->offset
    78, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(136,76), //bcp->offset
    101, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(88,48), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(72,40), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19495C11,    ABISELECT(48,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S19495C16,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C18,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S77C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19495C2[];
extern void _ZN8S19495C2D1Ev();
extern void _ZN8S19495C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19495C2D1Ev,_ZThn32_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19495C2D0Ev,_ZThn32_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S19495C2D1Ev,_ZThn40_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S19495C2D0Ev,_ZThn40_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn104_N8S19495C2D1Ev,_ZThn56_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn104_N8S19495C2D0Ev,_ZThn56_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S19495C2D1Ev,_ZThn68_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S19495C2D0Ev,_ZThn68_N8S19495C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19495C2D1Ev,_ZThn76_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19495C2D0Ev,_ZThn76_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C2[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(104,56),
  ABISELECT(72,40),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&_ZN8S19495C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C2D0Ev,
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev),
  -4,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev),
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19495C2[];
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A__8S19495C2[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__8S19495C2[] = {
  ABISELECT(28,16),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(28,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C18__8S19495C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C169S19495C18__A1__8S19495C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C2[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11__8S19495C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11__8S19495C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11__8S19495C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11__8S19495C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11__8S19495C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C2[] = {
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C2[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(48,28),
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C2[] = {
  ABISELECT(-44,-24),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C2[] = {
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__8S19495C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__8S19495C2[] = {
  ABISELECT(16,8),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__8S19495C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__8S19495C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C2[] = {
  ABISELECT(-60,-32),
  ABISELECT(-40,-20),
  ABISELECT(-60,-32),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C2[] = {
  ABISELECT(16,12),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  ABISELECT(-48,-24),
  ABISELECT(-76,-40),
  ABISELECT(-56,-28),
  ABISELECT(-76,-40),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__8S19495C2[] = {
  ABISELECT(48,24),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__8S19495C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C2[] = {
  ABISELECT(-92,-52),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A4__8S19495C2[] = {
  ABISELECT(-92,-52),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  ABISELECT(-104,-56),
  0,
  ABISELECT(-108,-60),
  ABISELECT(-136,-76),
  ABISELECT(-88,-48),
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__8S19495C2[] = {
  ABISELECT(-20,-12),
  0,
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__8S19495C2[] = {
  -4,
  ABISELECT(-32,-20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__8S19495C2[] = {
  ABISELECT(80,44),
  ABISELECT(-28,-16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-28,-16),
  ABISELECT(-56,-32),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__8S19495C2[] = {
  ABISELECT(-108,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C2[] = {
  {&(_ZTV8S19495C2[16]),  16,114},
  {&(_tg__ZTV8S19495C3__A__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C18__8S19495C2[3]),  3,5},
  {&(_tg__ZTV9S19495C169S19495C18__A1__8S19495C2[3]),  3,3},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[27]),  27,114},
  {&(_ZTV8S19495C2[43]),  43,114},
  {&(_ZTV8S19495C2[53]),  53,114},
  {&(_ZTV8S19495C2[70]),  70,114},
  {&(_ZTV8S19495C2[89]),  89,114},
  {&(_ZTV8S19495C2[99]),  99,114},
  {&(_ZTV8S19495C2[112]),  112,114},
  {&(_ZTV8S19495C2[112]),  112,114},
  {&(_ZTV8S19495C2[78]),  78,114},
  {&(_ZTV8S19495C2[21]),  21,114},
  {&(_tg__ZTV8S19495C6__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C2[4]),  4,4},
  {&(_tg__ZTV9S19495C10__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__8S19495C2[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV8S19495C3__9S19495C11__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C12__9S19495C11__8S19495C2[15]),  15,17},
  {&(_tg__ZTV9S19495C13__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C10__9S19495C11__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C3__A1__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__A1__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C12__8S19495C2[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__8S19495C2[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C2[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C13__8S19495C2[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C9__A2__8S19495C2[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A4__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C2[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C2[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__8S19495C2[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__8S19495C2[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C2[6]),  6,6},
  {&(_tg__ZTV9S19495C16__8S19495C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19495C2[];
extern  VTBL_ENTRY _ZTV8S19495C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C2[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D0Ev,_ZThn48_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn28_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19495C11D1Ev,_ZThn48_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn28_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D0Ev,_ZThn12_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19495C11D1Ev,_ZThn12_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D0Ev,_ZThn4_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19495C11D1Ev,_ZThn4_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C2D0Ev,_ZThn76_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C2D0Ev,_ZThn56_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C2D1Ev,_ZThn76_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C2D1Ev,_ZThn56_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C2D0Ev,_ZThn40_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C2D1Ev,_ZThn40_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C2D0Ev,_ZThn68_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C2D0Ev,_ZThn32_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C2D1Ev,_ZThn68_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C2D1Ev,_ZThn32_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C2 = {  "S19495C2", // class name
  bases_S19495C2, 48,
  &(vtc_S19495C2[0]), // expected_vtbl_contents
  &(vtt_S19495C2[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S19495C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19495C2),114, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C2),81, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19495C1  : virtual S19495C2 {
  virtual  ~S19495C1(); // _ZN8S19495C1D2Ev
  S19495C1(); // tgen
};
//SIG(1 S19495C1) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC11{ VBC3 VBC12{ VBC13{ VBC3 VBC10 VBC9 vd Fi[2]} VBC14{ m} VBC15{ VBC7 VBC16{ VBC5} VBC10 BC8 VBC3 vd Fi} BC17{ VBC9 BC10 BC6 BC8 vd} vd} vd} BC18{ BC5 BC16 vd} BC19{ m} Fi} vd}


 S19495C1 ::~S19495C1(){ note_dtor("S19495C1", this);}
S19495C1 ::S19495C1(){ note_ctor("S19495C1", this);} // tgen

static void Test_S19495C1()
{
  extern Class_Descriptor cd_S19495C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,22)];
    init_test(&cd_S19495C1, buf);
    S19495C1 *dp, &lv = *(dp=new (buf) S19495C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,84), "sizeof(S19495C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19495C1)");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C9*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C9*), ABISELECT(36,20), "S19495C1");
    check_base_class_offset(lv, (S7856C24*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C3*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C16 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C16*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(36,20), "S19495C1");
    check_base_class_offset(lv, (S7856C15*)(S19495C16*)(S19495C18*)(S19495C2*), ABISELECT(36,20), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C9*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C9*), 0, "S19495C1");
    check_base_class_offset(lv, (S7856C12*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*), 0, "S19495C1");
    /*is_ambiguous_... S19495C15::S19495C7 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C15*), 0, "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C6*)(S19495C17*)(S19495C12*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*)(S19495C3*), 0, "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C9*), 0, "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(16,8), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C3*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*), ABISELECT(48,28), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C10*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C2::S19495C10 */ AMB_check_base_class_offset(lv, (S19495C10*)(S19495C2*), ABISELECT(40,24), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C13*), ABISELECT(40,24), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C15*), ABISELECT(40,24), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*)(S19495C3*), ABISELECT(64,36), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C3 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C3*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C11*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C13*), ABISELECT(56,32), "S19495C1");
    check_base_class_offset(lv, (S19495C3*)(S19495C15*), ABISELECT(56,32), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C9*), ABISELECT(128,72), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C1");
    /*is_ambiguous_... S19495C1::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C7*)(S19495C9*), ABISELECT(120,68), "S19495C1");
    /*is_ambiguous_... S19495C13::S19495C9 */ AMB_check_base_class_offset(lv, (S19495C9*)(S19495C13*), ABISELECT(120,68), "S19495C1");
    check_base_class_offset(lv, (S19495C9*)(S19495C17*)(S19495C12*), ABISELECT(120,68), "S19495C1");
    check_base_class_offset(lv, (S19495C13*)(S19495C12*), ABISELECT(104,56), "S19495C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S19495C12*), 0, "S19495C1");
    check_base_class_offset(lv, (S19495C16*)(S19495C15*), ABISELECT(136,76), "S19495C1");
    /*is_ambiguous_... S19495C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C15*), ABISELECT(136,76), "S19495C1");
    check_base_class_offset(lv, (S19495C15*)(S19495C12*), ABISELECT(136,76), "S19495C1");
    /*is_ambiguous_... S19495C10::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    /*is_ambiguous_... S19495C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(80,44), "S19495C1");
    check_base_class_offset(lv, (S7856C15*)(S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C7*)(S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C10*)(S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C1");
    /*is_ambiguous_... S19495C17::S19495C6 */ AMB_check_base_class_offset(lv, (S19495C6*)(S19495C17*)(S19495C12*), ABISELECT(88,48), "S19495C1");
    /*is_ambiguous_... S19495C17::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19495C17*)(S19495C12*), ABISELECT(96,52), "S19495C1");
    check_base_class_offset(lv, (S19495C17*)(S19495C12*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C12*)(S19495C11*), ABISELECT(72,40), "S19495C1");
    check_base_class_offset(lv, (S19495C11*)(S19495C2*), 0, "S19495C1");
    /*is_ambiguous_... S19495C18::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S19495C16*)(S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S19495C18*)(S19495C2*), ABISELECT(24,12), "S19495C1");
    check_base_class_offset(lv, (S77C13_nt*)(S19495C2*), ABISELECT(8,4), "S19495C1");
    check_base_class_offset(lv, (S19495C2*), ABISELECT(8,4), "S19495C1");
    test_class_info(&lv, &cd_S19495C1);
    dp->~S19495C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19495C1(Test_S19495C1, "S19495C1", ABISELECT(152,84));

#else // __cplusplus

extern void _ZN8S19495C1C1Ev();
extern void _ZN8S19495C1D2Ev();
Name_Map name_map_S19495C1[] = {
  NSPAIR(_ZN8S19495C1C1Ev),
  NSPAIR(_ZN8S19495C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C3;
extern VTBL_ENTRY _ZTI8S19495C3[];
extern  VTBL_ENTRY _ZTV8S19495C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C3[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C9;
extern VTBL_ENTRY _ZTI8S19495C9[];
extern  VTBL_ENTRY _ZTV8S19495C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C9[];
extern Class_Descriptor cd_S19495C13;
extern VTBL_ENTRY _ZTI9S19495C13[];
extern  VTBL_ENTRY _ZTV9S19495C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C13[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C15;
extern VTBL_ENTRY _ZTI9S19495C15[];
extern  VTBL_ENTRY _ZTV9S19495C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C7;
extern VTBL_ENTRY _ZTI8S19495C7[];
extern  VTBL_ENTRY _ZTV8S19495C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C7[];
extern Class_Descriptor cd_S19495C10;
extern VTBL_ENTRY _ZTI9S19495C10[];
extern  VTBL_ENTRY _ZTV9S19495C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C10[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19495C6;
extern VTBL_ENTRY _ZTI8S19495C6[];
extern  VTBL_ENTRY _ZTV8S19495C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C6[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19495C17;
extern VTBL_ENTRY _ZTI9S19495C17[];
extern  VTBL_ENTRY _ZTV9S19495C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C17[];
extern Class_Descriptor cd_S19495C12;
extern VTBL_ENTRY _ZTI9S19495C12[];
extern  VTBL_ENTRY _ZTV9S19495C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C12[];
extern Class_Descriptor cd_S19495C11;
extern VTBL_ENTRY _ZTI9S19495C11[];
extern  VTBL_ENTRY _ZTV9S19495C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S19495C16;
extern VTBL_ENTRY _ZTI9S19495C16[];
extern  VTBL_ENTRY _ZTV9S19495C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C16[];
extern Class_Descriptor cd_S19495C18;
extern VTBL_ENTRY _ZTI9S19495C18[];
extern  VTBL_ENTRY _ZTV9S19495C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19495C18[];
extern Class_Descriptor cd_S77C13_nt;
extern VTBL_ENTRY _ZTI9S77C13_nt[];
extern Class_Descriptor cd_S19495C2;
extern VTBL_ENTRY _ZTI8S19495C2[];
extern  VTBL_ENTRY _ZTV8S19495C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C2[];
static Base_Class bases_S19495C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19495C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19495C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19495C7,    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
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(40,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    22, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19495C3,    ABISELECT(56,32), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    27, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19495C9,    ABISELECT(120,68), //bcp->offset
    94, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19495C13,    ABISELECT(104,56), //bcp->offset
    81, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19495C16,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19495C15,    ABISELECT(136,76), //bcp->offset
    104, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    37, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    36, //immediately_derived
  0, 0},
  {&cd_S19495C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19495C10,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    39, //immediately_derived
  0, 0},
  {&cd_S19495C6,    ABISELECT(88,48), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(96,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
    41, //immediately_derived
  0, 0},
  {&cd_S19495C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19495C12,    ABISELECT(72,40), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19495C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    46, //immediately_derived
  0, 0},
  {&cd_S19495C16,    ABISELECT(24,12), //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
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19495C18,    ABISELECT(24,12), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S77C13_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
    48, //immediately_derived
  0, 0},
  {&cd_S19495C2,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19495C1[];
extern void _ZN8S19495C1D1Ev();
extern void _ZN8S19495C1D0Ev();
extern void ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19495C1D1Ev,_ZThn4_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19495C1D0Ev,_ZThn4_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n136_N8S19495C1D1Ev,_ZTvn8_n68_N8S19495C1D1Ev)();
extern void ABISELECT(_ZTvn16_n136_N8S19495C1D0Ev,_ZTvn8_n68_N8S19495C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19495C1D1Ev,_ZThn32_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19495C1D0Ev,_ZThn32_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19495C1D1Ev,_ZThn40_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19495C1D0Ev,_ZThn40_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S19495C1D1Ev,_ZThn56_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S19495C1D0Ev,_ZThn56_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19495C1D1Ev,_ZThn68_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19495C1D0Ev,_ZThn68_N8S19495C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19495C1D1Ev,_ZThn76_N8S19495C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19495C1D0Ev,_ZThn76_N8S19495C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19495C1[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&_ZN8S19495C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev),
  ABISELECT(12,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19495C1D1Ev,_ZTvn8_n68_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n136_N8S19495C1D0Ev,_ZTvn8_n68_N8S19495C1D0Ev),
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI8S19495C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19495C1[];
extern void _ZN8S19495C2D1Ev();
extern void _ZN8S19495C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C2__8S19495C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,20),
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&_ZN8S19495C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C2D0Ev,
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(28,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C38S19495C2__A1__8S19495C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C18D1Ev();
extern void _ZN9S19495C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C188S19495C2__8S19495C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C18[0]),
  (VTBL_ENTRY)&_ZN9S19495C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C169S19495C188S19495C2__A1__8S19495C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
extern void ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C2__8S19495C1[] = {
  ABISELECT(8,4),
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D1Ev,_ZTv0_n64_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S19495C2D0Ev,_ZTv0_n64_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C2__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C2__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19495C2D1Ev,_ZThn36_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19495C2D0Ev,_ZThn36_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C2__8S19495C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19495C2D1Ev,_ZThn52_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19495C2D0Ev,_ZThn52_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C2__8S19495C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19495C2D1Ev,_ZThn64_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19495C2D0Ev,_ZThn64_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C2__8S19495C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19495C2D1Ev,_ZThn72_N8S19495C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19495C2D0Ev,_ZThn72_N8S19495C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C2__8S19495C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
};
extern void ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19495C18__8S19495C2__8S19495C1[] = {
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19495C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D1Ev,_ZThn8_N8S19495C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19495C2D0Ev,_ZThn8_N8S19495C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C1[] = {
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C10__A2__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
extern void _ZN9S19495C11D1Ev();
extern void _ZN9S19495C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C11__8S19495C1[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  0,
  ABISELECT(120,68),
  ABISELECT(40,24),
  ABISELECT(104,56),
  ABISELECT(72,40),
  0,
  ABISELECT(56,32),
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&_ZN9S19495C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C11D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn32_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn32_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C11__8S19495C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C12__9S19495C11__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C11__8S19495C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C11__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn120_N9S19495C11D1Ev,_ZThn68_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn120_N9S19495C11D0Ev,_ZThn68_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C11__8S19495C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19495C11D1Ev,_ZThn76_N9S19495C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19495C11D0Ev,_ZThn76_N9S19495C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C11__8S19495C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19495C11[0]),
};
extern void _ZN8S19495C3D1Ev();
extern void _ZN8S19495C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C3__A1__8S19495C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
  (VTBL_ENTRY)&_ZN8S19495C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C3D0Ev,
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C98S19495C3__A1__8S19495C1[] = {
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19495C3[0]),
};
extern void _ZN9S19495C12D1Ev();
extern void _ZN9S19495C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C12__8S19495C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  ABISELECT(-72,-40),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&_ZN9S19495C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C12D0Ev,
};
extern void _ZN9S19495C17D1Ev();
extern void _ZN9S19495C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-36,-20),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(48,28),
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&_ZN9S19495C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C17D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-36,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C1[] = {
  0,
  ABISELECT(36,20),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19495C6[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C17[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C13__9S19495C12__8S19495C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C12__8S19495C1[] = {
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C12__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C12__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C12__8S19495C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19495C15__9S19495C12__8S19495C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-52,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19495C12[0]),
};
extern void _ZN9S19495C13D1Ev();
extern void _ZN9S19495C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C13__8S19495C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-48,-24),
  ABISELECT(-68,-36),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-68,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&_ZN9S19495C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C13D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C13__8S19495C1[] = {
  ABISELECT(48,24),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C13__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C13__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19495C9__A1__9S19495C13__8S19495C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19495C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev),
};
extern void _ZN8S19495C9D1Ev();
extern void _ZN8S19495C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19495C9__A2__8S19495C1[] = {
  ABISELECT(-84,-48),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
  (VTBL_ENTRY)&_ZN8S19495C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19495C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C78S19495C9__A4__8S19495C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-84,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19495C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S19495C9[0]),
};
extern void _ZN9S19495C15D1Ev();
extern void _ZN9S19495C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19495C15__8S19495C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-80,-44),
  ABISELECT(-96,-52),
  0,
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  ABISELECT(-136,-76),
  ABISELECT(-100,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&_ZN9S19495C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19495C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19495C6__9S19495C15__8S19495C1[] = {
  ABISELECT(36,20),
  0,
  0,
  ABISELECT(36,20),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19495C10__9S19495C15__8S19495C1[] = {
  ABISELECT(-40,-24),
  -4,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19495C3__9S19495C15__8S19495C1[] = {
  ABISELECT(80,44),
  ABISELECT(-20,-12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19495C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D1Ev,_ZTv0_n32_N9S19495C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19495C15D0Ev,_ZTv0_n32_N9S19495C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19495C16__8S19495C1[] = {
  ABISELECT(-100,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19495C16[0]),
};
static  VTT_ENTRY vtt_S19495C1[] = {
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[37]),  37,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[48]),  48,117},
  {&(_ZTV8S19495C1[18]),  18,117},
  {&(_ZTV8S19495C1[56]),  56,117},
  {&(_ZTV8S19495C1[73]),  73,117},
  {&(_ZTV8S19495C1[92]),  92,117},
  {&(_ZTV8S19495C1[102]),  102,117},
  {&(_ZTV8S19495C1[115]),  115,117},
  {&(_ZTV8S19495C1[115]),  115,117},
  {&(_ZTV8S19495C1[81]),  81,117},
  {&(_ZTV8S19495C1[42]),  42,117},
  {&(_tg__ZTV8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV8S19495C38S19495C2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C38S19495C2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C38S19495C2__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C38S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C188S19495C2__8S19495C1[3]),  3,5},
  {&(_tg__ZTV9S19495C169S19495C188S19495C2__A1__8S19495C1[3]),  3,3},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV9S19495C10__8S19495C2__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C2__8S19495C1[16]),  16,18},
  {&(_tg__ZTV8S19495C3__A1__8S19495C2__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C12__8S19495C2__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C13__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C9__A2__8S19495C2__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__8S19495C2__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C18__8S19495C2__8S19495C1[3]),  3,5},
  {&(_tg__ZTV8S19495C6__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C10__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C10__A2__8S19495C1[4]),  4,4},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV8S19495C3__9S19495C11__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C12__9S19495C11__8S19495C1[15]),  15,17},
  {&(_tg__ZTV9S19495C13__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C10__9S19495C11__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C11__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C11__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__9S19495C11__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C3__A1__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C98S19495C3__A1__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C98S19495C3__A3__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C98S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C3__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C12__8S19495C1[14]),  14,16},
  {&(_tg__ZTV9S19495C179S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C109S19495C179S19495C12__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C79S19495C109S19495C179S19495C12__A5__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C69S19495C179S19495C12__A1__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C7__8S19495C69S19495C179S19495C12__A1__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__9S19495C179S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__A__9S19495C179S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C13__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C3__9S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C12__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C12__8S19495C1[8]),  8,10},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV9S19495C15__9S19495C12__8S19495C1[11]),  11,13},
  {&(_tg__ZTV8S19495C69S19495C17__A1__9S19495C12__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C13__8S19495C1[10]),  10,12},
  {&(_tg__ZTV8S19495C3__9S19495C13__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__9S19495C13__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C10__9S19495C13__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C9__A1__9S19495C13__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C9__A2__8S19495C1[7]),  7,9},
  {&(_tg__ZTV8S19495C78S19495C9__A4__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV8S19495C6__8S19495C9__A2__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C1[10]),  10,12},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C15__8S19495C1[10]),  10,12},
  {&(_tg__ZTV9S19495C10__9S19495C15__8S19495C1[4]),  4,4},
  {&(_tg__ZTV8S19495C3__9S19495C15__8S19495C1[8]),  8,10},
  {&(_tg__ZTV8S19495C6__9S19495C15__8S19495C1[6]),  6,6},
  {&(_tg__ZTV9S19495C16__8S19495C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19495C1[];
extern  VTBL_ENTRY _ZTV8S19495C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19495C1[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D0Ev,_ZTv0_n32_N9S19495C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D0Ev,_ZThn12_N9S19495C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C13D1Ev,_ZTv0_n32_N9S19495C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19495C13D1Ev,_ZThn12_N9S19495C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D0Ev,_ZTv0_n32_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D0Ev,_ZThn28_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C12D1Ev,_ZTv0_n32_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C12D1Ev,_ZThn28_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D0Ev,_ZTv0_n44_N9S19495C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D0Ev,_ZThn36_N9S19495C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D0Ev,_ZThn16_N9S19495C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C12D1Ev,_ZTv0_n44_N9S19495C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19495C12D1Ev,_ZThn36_N9S19495C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19495C12D1Ev,_ZThn16_N9S19495C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D0Ev,_ZTv0_n32_N9S19495C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D0Ev,_ZThn28_N9S19495C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C17D1Ev,_ZTv0_n32_N9S19495C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19495C17D1Ev,_ZThn28_N9S19495C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D0Ev,_ZTv0_n44_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19495C11D0Ev,_ZThn76_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D0Ev,_ZThn56_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19495C11D1Ev,_ZTv0_n44_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19495C11D1Ev,_ZThn76_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19495C11D1Ev,_ZThn56_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D0Ev,_ZTv0_n60_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D0Ev,_ZThn40_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19495C11D1Ev,_ZTv0_n60_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19495C11D1Ev,_ZThn40_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D0Ev,_ZTv0_n32_N9S19495C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19495C11D0Ev,_ZThn68_N9S19495C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D0Ev,_ZThn32_N9S19495C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19495C11D1Ev,_ZTv0_n32_N9S19495C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19495C11D1Ev,_ZThn68_N9S19495C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19495C11D1Ev,_ZThn32_N9S19495C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D0Ev,_ZTv0_n44_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19495C2D0Ev,_ZThn72_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19495C2D0Ev,_ZThn52_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C2D1Ev,_ZTv0_n44_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19495C2D1Ev,_ZThn72_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19495C2D1Ev,_ZThn52_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D0Ev,_ZTv0_n60_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19495C2D0Ev,_ZThn36_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C2D1Ev,_ZTv0_n60_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19495C2D1Ev,_ZThn36_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D0Ev,_ZTv0_n32_N8S19495C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19495C2D0Ev,_ZThn64_N8S19495C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D0Ev,_ZThn28_N8S19495C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C2D1Ev,_ZTv0_n32_N8S19495C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19495C2D1Ev,_ZThn64_N8S19495C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19495C2D1Ev,_ZThn28_N8S19495C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C1D0Ev,_ZTv0_n44_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C1D0Ev,_ZThn76_N8S19495C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C1D0Ev,_ZThn56_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19495C1D1Ev,_ZTv0_n44_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19495C1D1Ev,_ZThn76_N8S19495C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19495C1D1Ev,_ZThn56_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C1D0Ev,_ZTv0_n60_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C1D0Ev,_ZThn40_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19495C1D1Ev,_ZTv0_n60_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19495C1D1Ev,_ZThn40_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C1D0Ev,_ZTv0_n32_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C1D0Ev,_ZThn68_N8S19495C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C1D0Ev,_ZThn32_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19495C1D1Ev,_ZTv0_n32_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19495C1D1Ev,_ZThn68_N8S19495C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19495C1D1Ev,_ZThn32_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19495C1D0Ev,_ZTv0_n68_N8S19495C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19495C1D0Ev,_ZThn4_N8S19495C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S19495C1D1Ev,_ZTv0_n68_N8S19495C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19495C1D1Ev,_ZThn4_N8S19495C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19495C1 = {  "S19495C1", // class name
  bases_S19495C1, 49,
  &(vtc_S19495C1[0]), // expected_vtbl_contents
  &(vtt_S19495C1[0]), // expected_vtt_contents
  ABISELECT(152,84), // object size
  NSPAIRA(_ZTI8S19495C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19495C1),117, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19495C1),95, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C5  : S8033C7 {
  void *s19773c5f0;
  ::S20291C14_nt s19773c5f1;
  void *s19773c5f2;
  long double s19773c5f3;
  ~S19773C5(); // tgen
  S19773C5(); // tgen
};
//SIG(-1 S19773C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19773C5 ::~S19773C5(){ note_dtor("S19773C5", this);} // tgen
S19773C5 ::S19773C5(){ note_ctor("S19773C5", this);} // tgen

static void Test_S19773C5()
{
  extern Class_Descriptor cd_S19773C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19773C5, buf);
    S19773C5 *dp, &lv = *(dp=new (buf) S19773C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19773C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19773C5");
    check_field_offset(lv, s19773c5f0, ABISELECT(96,52), "S19773C5.s19773c5f0");
    check_field_offset(lv, s19773c5f1, ABISELECT(104,56), "S19773C5.s19773c5f1");
    check_field_offset(lv, s19773c5f2, ABISELECT(112,60), "S19773C5.s19773c5f2");
    check_field_offset(lv, s19773c5f3, ABISELECT(128,64), "S19773C5.s19773c5f3");
    test_class_info(&lv, &cd_S19773C5);
    dp->~S19773C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C5(Test_S19773C5, "S19773C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19773C5C1Ev();
extern void _ZN8S19773C5D1Ev();
Name_Map name_map_S19773C5[] = {
  NSPAIR(_ZN8S19773C5C1Ev),
  NSPAIR(_ZN8S19773C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19773C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19773C5[];
extern void _ZN8S19773C5D1Ev();
extern void _ZN8S19773C5D0Ev();
static  VTBL_ENTRY vtc_S19773C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C5[0]),
  (VTBL_ENTRY)&_ZN8S19773C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
Class_Descriptor cd_S19773C5 = {  "S19773C5", // class name
  bases_S19773C5, 1,
  &(vtc_S19773C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19773C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19773C5),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  S19773C4  : S19773C5 , virtual S8033C7 {
  ::S8033C7 s19773c4f0;
  void *s19773c4f1;
  virtual  ~S19773C4(); // _ZN8S19773C4D2Ev
  S19773C4(); // tgen
};
//SIG(-1 S19773C4) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19773C4 ::~S19773C4(){ note_dtor("S19773C4", this);}
S19773C4 ::S19773C4(){ note_ctor("S19773C4", this);} // tgen

static void Test_S19773C4()
{
  extern Class_Descriptor cd_S19773C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19773C4, buf);
    S19773C4 *dp, &lv = *(dp=new (buf) S19773C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19773C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C4)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), 0, "S19773C4");
    check_base_class_offset(lv, (S19773C5*), 0, "S19773C4");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19773C4");
    check_field_offset(lv, s19773c4f0, ABISELECT(144,76), "S19773C4.s19773c4f0");
    check_field_offset(lv, s19773c4f1, ABISELECT(240,128), "S19773C4.s19773c4f1");
    test_class_info(&lv, &cd_S19773C4);
    dp->~S19773C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C4(Test_S19773C4, "S19773C4", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19773C4C1Ev();
extern void _ZN8S19773C4D2Ev();
Name_Map name_map_S19773C4[] = {
  NSPAIR(_ZN8S19773C4C1Ev),
  NSPAIR(_ZN8S19773C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19773C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19773C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19773C4[];
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C4[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C4[];
static  VTT_ENTRY vtt_S19773C4[] = {
  {&(_ZTV8S19773C4[3]),  3,10},
  {&(_ZTV8S19773C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C4 = {  "S19773C4", // class name
  bases_S19773C4, 3,
  &(vtc_S19773C4[0]), // expected_vtbl_contents
  &(vtt_S19773C4[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19773C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C8  : S8033C7 , virtual S19773C5 {
  int s19773c8f0;
  char s19773c8f1;
  void *s19773c8f2;
  int s19773c8f3;
  void *s19773c8f4[2];
  ::S19773C4 s19773c8f5;
  virtual  ~S19773C8(); // _ZN8S19773C8D2Ev
  virtual void  v1(); // _ZN8S19773C82v1Ev
  S19773C8(); // tgen
};
//SIG(-1 S19773C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19773C8 ::~S19773C8(){ note_dtor("S19773C8", this);}
void  S19773C8 ::v1(){vfunc_called(this, "_ZN8S19773C82v1Ev");}
S19773C8 ::S19773C8(){ note_ctor("S19773C8", this);} // tgen

static void Test_S19773C8()
{
  extern Class_Descriptor cd_S19773C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19773C8, buf);
    S19773C8 *dp, &lv = *(dp=new (buf) S19773C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19773C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C8)");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19773C8");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(496,260), "S19773C8");
    check_base_class_offset(lv, (S19773C5*), ABISELECT(496,260), "S19773C8");
    check_field_offset(lv, s19773c8f0, ABISELECT(96,52), "S19773C8.s19773c8f0");
    check_field_offset(lv, s19773c8f1, ABISELECT(100,56), "S19773C8.s19773c8f1");
    check_field_offset(lv, s19773c8f2, ABISELECT(104,60), "S19773C8.s19773c8f2");
    check_field_offset(lv, s19773c8f3, ABISELECT(112,64), "S19773C8.s19773c8f3");
    check_field_offset(lv, s19773c8f4, ABISELECT(120,68), "S19773C8.s19773c8f4");
    check_field_offset(lv, s19773c8f5, ABISELECT(144,76), "S19773C8.s19773c8f5");
    test_class_info(&lv, &cd_S19773C8);
    dp->~S19773C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C8(Test_S19773C8, "S19773C8", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19773C8C1Ev();
extern void _ZN8S19773C8D2Ev();
Name_Map name_map_S19773C8[] = {
  NSPAIR(_ZN8S19773C8C1Ev),
  NSPAIR(_ZN8S19773C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
static Base_Class bases_S19773C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C8[];
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C8[];
static  VTT_ENTRY vtt_S19773C8[] = {
  {&(_ZTV8S19773C8[3]),  3,11},
  {&(_ZTV8S19773C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C8 = {  "S19773C8", // class name
  bases_S19773C8, 3,
  &(vtc_S19773C8[0]), // expected_vtbl_contents
  &(vtt_S19773C8[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19773C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C8),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C10  : S8033C7 , virtual S19773C8 {
  void *s19773c10f0;
  __tsi64 s19773c10f1[2];
  char s19773c10f2;
  void *s19773c10f3;
  int s19773c10f4;
  virtual  ~S19773C10(); // _ZN9S19773C10D2Ev
  S19773C10(); // tgen
};
//SIG(-1 S19773C10) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL[2] Fc Fp Fi}


 S19773C10 ::~S19773C10(){ note_dtor("S19773C10", this);}
S19773C10 ::S19773C10(){ note_ctor("S19773C10", this);} // tgen

static void Test_S19773C10()
{
  extern Class_Descriptor cd_S19773C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,106)];
    init_test(&cd_S19773C10, buf);
    S19773C10 *dp, &lv = *(dp=new (buf) S19773C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,420), "sizeof(S19773C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C10)");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19773C10");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(144,84), "S19773C10");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(640,344), "S19773C10");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(640,344), "S19773C10");
    check_base_class_offset(lv, (S19773C8*), ABISELECT(144,84), "S19773C10");
    check_field_offset(lv, s19773c10f0, ABISELECT(96,52), "S19773C10.s19773c10f0");
    check_field_offset(lv, s19773c10f1, ABISELECT(104,56), "S19773C10.s19773c10f1");
    check_field_offset(lv, s19773c10f2, ABISELECT(120,72), "S19773C10.s19773c10f2");
    check_field_offset(lv, s19773c10f3, ABISELECT(128,76), "S19773C10.s19773c10f3");
    check_field_offset(lv, s19773c10f4, ABISELECT(136,80), "S19773C10.s19773c10f4");
    test_class_info(&lv, &cd_S19773C10);
    dp->~S19773C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C10(Test_S19773C10, "S19773C10", ABISELECT(784,420));

#else // __cplusplus

extern void _ZN9S19773C10C1Ev();
extern void _ZN9S19773C10D2Ev();
Name_Map name_map_S19773C10[] = {
  NSPAIR(_ZN9S19773C10C1Ev),
  NSPAIR(_ZN9S19773C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
static Base_Class bases_S19773C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(144,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19773C5,    ABISELECT(640,344), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(144,84), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI9S19773C10[];
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19773C10D1Ev,_ZThn84_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19773C10D0Ev,_ZThn84_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn640_N9S19773C10D1Ev,_ZThn344_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn640_N9S19773C10D0Ev,_ZThn344_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C10[] = {
  ABISELECT(640,344),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
  0,
  ABISELECT(-144,-84),
  ABISELECT(496,260),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-640,-344),
  ABISELECT(-640,-344),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19773C10[];
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__9S19773C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
static  VTT_ENTRY vtt_S19773C10[] = {
  {&(_ZTV9S19773C10[4]),  4,19},
  {&(_ZTV9S19773C10[11]),  11,19},
  {&(_ZTV9S19773C10[17]),  17,19},
  {&(_tg__ZTV8S19773C8__9S19773C10[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__9S19773C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19773C10D0Ev,_ZThn344_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19773C10D1Ev,_ZThn344_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19773C10D0Ev,_ZThn84_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19773C10D1Ev,_ZThn84_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C10 = {  "S19773C10", // class name
  bases_S19773C10, 5,
  &(vtc_S19773C10[0]), // expected_vtbl_contents
  &(vtt_S19773C10[0]), // expected_vtt_contents
  ABISELECT(784,420), // object size
  NSPAIRA(_ZTI9S19773C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19773C10),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19773C10),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C11  : virtual S19773C5 {
  char s19773c11f0;
  short s19773c11f1;
  long double s19773c11f2;
  void *s19773c11f3[2];
  virtual void  v2(); // _ZN9S19773C112v2Ev
  ~S19773C11(); // tgen
  S19773C11(); // tgen
};
//SIG(-1 S19773C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19773C11 ::v2(){vfunc_called(this, "_ZN9S19773C112v2Ev");}
S19773C11 ::~S19773C11(){ note_dtor("S19773C11", this);} // tgen
S19773C11 ::S19773C11(){ note_ctor("S19773C11", this);} // tgen

static void Test_S19773C11()
{
  extern Class_Descriptor cd_S19773C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19773C11, buf);
    S19773C11 *dp, &lv = *(dp=new (buf) S19773C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19773C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C11)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(48,28), "S19773C11");
    check_base_class_offset(lv, (S19773C5*), ABISELECT(48,28), "S19773C11");
    check_field_offset(lv, s19773c11f0, ABISELECT(8,4), "S19773C11.s19773c11f0");
    check_field_offset(lv, s19773c11f1, ABISELECT(10,6), "S19773C11.s19773c11f1");
    check_field_offset(lv, s19773c11f2, ABISELECT(16,8), "S19773C11.s19773c11f2");
    check_field_offset(lv, s19773c11f3, ABISELECT(32,20), "S19773C11.s19773c11f3");
    test_class_info(&lv, &cd_S19773C11);
    dp->~S19773C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C11(Test_S19773C11, "S19773C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19773C11C1Ev();
extern void _ZN9S19773C11D1Ev();
Name_Map name_map_S19773C11[] = {
  NSPAIR(_ZN9S19773C11C1Ev),
  NSPAIR(_ZN9S19773C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
static Base_Class bases_S19773C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19773C11[];
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19773C11D1Ev,_ZThn28_N9S19773C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19773C11D0Ev,_ZThn28_N9S19773C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19773C11[];
static  VTT_ENTRY vtt_S19773C11[] = {
  {&(_ZTV9S19773C11[3]),  3,11},
  {&(_ZTV9S19773C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19773C11D0Ev,_ZThn28_N9S19773C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19773C11D1Ev,_ZThn28_N9S19773C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C11 = {  "S19773C11", // class name
  bases_S19773C11, 2,
  &(vtc_S19773C11[0]), // expected_vtbl_contents
  &(vtt_S19773C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19773C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19773C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19773C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C9  : S19773C10 , virtual S19773C11 {
  char s19773c9f0;
  int s19773c9f1:32;
  virtual  ~S19773C9(); // _ZN8S19773C9D2Ev
  S19773C9(); // tgen
};
//SIG(-1 S19773C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL[2] Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32}


 S19773C9 ::~S19773C9(){ note_dtor("S19773C9", this);}
S19773C9 ::S19773C9(){ note_ctor("S19773C9", this);} // tgen

static void Test_S19773C9()
{
  extern Class_Descriptor cd_S19773C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,115)];
    init_test(&cd_S19773C9, buf);
    S19773C9 *dp, &lv = *(dp=new (buf) S19773C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,456), "sizeof(S19773C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C9)");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*), 0, "S19773C9");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(160,92), "S19773C9");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(656,352), "S19773C9");
    check_base_class_offset(lv, (S19773C8*)(S19773C10*), ABISELECT(160,92), "S19773C9");
    check_base_class_offset(lv, (S19773C10*), 0, "S19773C9");
    check_base_class_offset(lv, (S19773C11*), ABISELECT(800,428), "S19773C9");
    check_field_offset(lv, s19773c9f0, ABISELECT(140,84), "S19773C9.s19773c9f0");
    set_bf_and_test(lv, s19773c9f1, ABISELECT(144,88), 0, 32, 1, "S19773C9");
    set_bf_and_test(lv, s19773c9f1, ABISELECT(144,88), 0, 32, hide_sll(1LL<<31), "S19773C9");
    test_class_info(&lv, &cd_S19773C9);
    dp->~S19773C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C9(Test_S19773C9, "S19773C9", ABISELECT(848,456));

#else // __cplusplus

extern void _ZN8S19773C9C1Ev();
extern void _ZN8S19773C9D2Ev();
Name_Map name_map_S19773C9[] = {
  NSPAIR(_ZN8S19773C9C1Ev),
  NSPAIR(_ZN8S19773C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
static Base_Class bases_S19773C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19773C5,    ABISELECT(656,352), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(160,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19773C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19773C11,    ABISELECT(800,428), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C9[];
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19773C9D1Ev,_ZThn352_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19773C9D0Ev,_ZThn352_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C9D1Ev,_ZThn428_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19773C9D0Ev,_ZThn428_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19773C9[] = {
  ABISELECT(800,428),
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
  ABISELECT(-800,-428),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-428),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19773C9[];
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C10__8S19773C9[] = {
  ABISELECT(656,352),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S19773C10D1Ev,_ZThn92_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S19773C10D0Ev,_ZThn92_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C10__8S19773C9[] = {
  0,
  ABISELECT(-160,-92),
  ABISELECT(496,260),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn656_N9S19773C10D1Ev,_ZThn352_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn656_N9S19773C10D0Ev,_ZThn352_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C10__8S19773C9[] = {
  ABISELECT(-656,-352),
  ABISELECT(-656,-352),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C9[] = {
  {&(_ZTV8S19773C9[5]),  5,28},
  {&(_tg__ZTV9S19773C10__8S19773C9[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C10__8S19773C9[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C10__8S19773C9[3]),  3,5},
  {&(_ZTV8S19773C9[12]),  12,28},
  {&(_ZTV8S19773C9[18]),  18,28},
  {&(_ZTV8S19773C9[25]),  25,28},
  {&(_tg__ZTV8S19773C8__8S19773C9[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C9[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19773C10D0Ev,_ZThn352_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19773C10D1Ev,_ZThn352_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19773C10D0Ev,_ZThn92_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19773C10D1Ev,_ZThn92_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C9D0Ev,_ZThn428_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C9D1Ev,_ZThn428_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19773C9D0Ev,_ZThn352_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19773C9D1Ev,_ZThn352_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C9 = {  "S19773C9", // class name
  bases_S19773C9, 7,
  &(vtc_S19773C9[0]), // expected_vtbl_contents
  &(vtt_S19773C9[0]), // expected_vtt_contents
  ABISELECT(848,456), // object size
  NSPAIRA(_ZTI8S19773C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19773C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C12  {
  long double s19773c12f0;
  void *s19773c12f1;
  ::S8033C7 s19773c12f2;
  __tsi64 s19773c12f3;
  long double s19773c12f4;
  int s19773c12f5;
  virtual void  v3(); // _ZN9S19773C122v3Ev
  ~S19773C12(); // tgen
  S19773C12(); // tgen
};
//SIG(-1 S19773C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19773C12 ::v3(){vfunc_called(this, "_ZN9S19773C122v3Ev");}
S19773C12 ::~S19773C12(){ note_dtor("S19773C12", this);} // tgen
S19773C12 ::S19773C12(){ note_ctor("S19773C12", this);} // tgen

static void Test_S19773C12()
{
  extern Class_Descriptor cd_S19773C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19773C12, buf);
    S19773C12 *dp, &lv = *(dp=new (buf) S19773C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19773C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C12)");
    check_field_offset(lv, s19773c12f0, ABISELECT(16,4), "S19773C12.s19773c12f0");
    check_field_offset(lv, s19773c12f1, ABISELECT(32,16), "S19773C12.s19773c12f1");
    check_field_offset(lv, s19773c12f2, ABISELECT(48,20), "S19773C12.s19773c12f2");
    check_field_offset(lv, s19773c12f3, ABISELECT(144,72), "S19773C12.s19773c12f3");
    check_field_offset(lv, s19773c12f4, ABISELECT(160,80), "S19773C12.s19773c12f4");
    check_field_offset(lv, s19773c12f5, ABISELECT(176,92), "S19773C12.s19773c12f5");
    test_class_info(&lv, &cd_S19773C12);
    dp->~S19773C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C12(Test_S19773C12, "S19773C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19773C12C1Ev();
extern void _ZN9S19773C12D1Ev();
Name_Map name_map_S19773C12[] = {
  NSPAIR(_ZN9S19773C12C1Ev),
  NSPAIR(_ZN9S19773C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19773C12[];
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C12[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
Class_Descriptor cd_S19773C12 = {  "S19773C12", // class name
  0,0,//no base classes
  &(vtc_S19773C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19773C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19773C12),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  S19773C3  : virtual S19773C4 , virtual S19773C8 , virtual S19773C9 , virtual S8033C4 , virtual S19773C12 {
  void *s19773c3f0;
  ::S19773C12 s19773c3f1[3];
  ::S19773C12 s19773c3f2;
  char s19773c3f3;
  virtual  ~S19773C3(); // _ZN8S19773C3D2Ev
  S19773C3(); // tgen
};
//SIG(-1 S19773C3) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL[2] Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19773C3 ::~S19773C3(){ note_dtor("S19773C3", this);}
S19773C3 ::S19773C3(){ note_ctor("S19773C3", this);} // tgen

static void Test_S19773C3()
{
  extern Class_Descriptor cd_S19773C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,303)];
    init_test(&cd_S19773C3, buf);
    S19773C3 *dp, &lv = *(dp=new (buf) S19773C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1208), "sizeof(S19773C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C3)");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*)(S19773C4*), ABISELECT(800,396), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C4*), ABISELECT(800,396), "S19773C3");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C4*), ABISELECT(1056,528), "S19773C3");
    check_base_class_offset(lv, (S19773C4*), ABISELECT(800,396), "S19773C3");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(1152,580), "S19773C3");
    /*is_ambiguous_... S19773C3::S19773C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(1648,840), "S19773C3");
    check_base_class_offset(lv, (S19773C8*), ABISELECT(1152,580), "S19773C3");
    check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1152,580), "S19773C3");
    /*is_ambiguous_... S19773C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(1952,1008), "S19773C3");
    check_base_class_offset(lv, (S19773C9*), ABISELECT(1792,916), "S19773C3");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1036), "S19773C3");
    check_base_class_offset(lv, (S19773C12*), ABISELECT(2096,1112), "S19773C3");
    check_field_offset(lv, s19773c3f0, ABISELECT(8,4), "S19773C3.s19773c3f0");
    check_field_offset(lv, s19773c3f1, ABISELECT(16,8), "S19773C3.s19773c3f1");
    check_field_offset(lv, s19773c3f2, ABISELECT(592,296), "S19773C3.s19773c3f2");
    check_field_offset(lv, s19773c3f3, ABISELECT(784,392), "S19773C3.s19773c3f3");
    test_class_info(&lv, &cd_S19773C3);
    dp->~S19773C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C3(Test_S19773C3, "S19773C3", ABISELECT(2288,1208));

#else // __cplusplus

extern void _ZN8S19773C3C1Ev();
extern void _ZN8S19773C3D2Ev();
Name_Map name_map_S19773C3[] = {
  NSPAIR(_ZN8S19773C3C1Ev),
  NSPAIR(_ZN8S19773C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C4;
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
static Base_Class bases_S19773C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19773C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19773C4,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19773C5,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19773C10,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19773C11,    ABISELECT(1952,1008), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19773C9,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19773C12,    ABISELECT(2096,1112), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C3[];
extern void _ZN8S19773C3D1Ev();
extern void _ZN8S19773C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C3D1Ev,_ZThn396_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn800_N8S19773C3D0Ev,_ZThn396_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19773C3D1Ev,_ZThn528_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19773C3D0Ev,_ZThn528_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19773C3D1Ev,_ZThn580_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19773C3D0Ev,_ZThn580_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19773C3D1Ev,_ZThn840_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19773C3D0Ev,_ZThn840_N8S19773C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19773C3D1Ev,_ZThn916_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19773C3D0Ev,_ZThn916_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19773C3D1Ev,_ZThn1008_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19773C3D0Ev,_ZThn1008_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C3[] = {
  ABISELECT(2096,1112),
  ABISELECT(2000,1036),
  ABISELECT(1952,1008),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN8S19773C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C3D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev),
  ABISELECT(-1952,-1008),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1952,-1008),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev),
  0,
  ABISELECT(-2096,-1112),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19773C3[];
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C4__8S19773C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C3[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__8S19773C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__8S19773C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__8S19773C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__8S19773C3[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C3[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C3[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C3[] = {
  {&(_ZTV8S19773C3[10]),  10,56},
  {&(_ZTV8S19773C3[16]),  16,56},
  {&(_ZTV8S19773C3[21]),  21,56},
  {&(_ZTV8S19773C3[28]),  28,56},
  {&(_ZTV8S19773C3[34]),  34,56},
  {&(_ZTV8S19773C3[42]),  42,56},
  {&(_ZTV8S19773C3[49]),  49,56},
  {&(_ZTV8S19773C3[55]),  55,56},
  {&(_tg__ZTV8S19773C4__8S19773C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19773C4__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C3[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C3[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__8S19773C3[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C3[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__8S19773C3[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__8S19773C3[5]),  5,8},
  {&(_tg__ZTV9S19773C11__8S19773C3[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C3[];
extern  VTBL_ENTRY _ZTV8S19773C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C3[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19773C3D0Ev,_ZThn1008_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19773C3D1Ev,_ZThn1008_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19773C3D0Ev,_ZThn916_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19773C3D1Ev,_ZThn916_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19773C3D0Ev,_ZThn840_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19773C3D0Ev,_ZThn528_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19773C3D1Ev,_ZThn840_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19773C3D1Ev,_ZThn528_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19773C3D0Ev,_ZThn580_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C3D0Ev,_ZThn396_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19773C3D1Ev,_ZThn580_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19773C3D1Ev,_ZThn396_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C3 = {  "S19773C3", // class name
  bases_S19773C3, 14,
  &(vtc_S19773C3[0]), // expected_vtbl_contents
  &(vtt_S19773C3[0]), // expected_vtt_contents
  ABISELECT(2288,1208), // object size
  NSPAIRA(_ZTI8S19773C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19773C3),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C3),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19773C1  : virtual S8033C4 , S19773C3 , S19773C9 , S19773C12 {
  int s19773c1f0;
  ~S19773C1(); // tgen
  S19773C1(); // tgen
};
//SIG(1 S19773C1) C1{ VBC2{ m Fp[3] FL[8]} BC3{ VBC4{ BC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} Fp FC7{} Fp FD} VBC6 vd FC6 Fp} VBC8{ BC6 VBC5 vd v1 Fi Fc Fp Fi Fp[2] FC4} VBC9{ BC10{ BC6 VBC8 vd Fp FL[2] Fc Fp Fi} VBC11{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc Fi:32} VBC2 VBC12{ v3 FD Fp FC6 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC9 BC12 Fi}


S19773C1 ::~S19773C1(){ note_dtor("S19773C1", this);} // tgen
S19773C1 ::S19773C1(){ note_ctor("S19773C1", this);} // tgen

static void Test_S19773C1()
{
  extern Class_Descriptor cd_S19773C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,351)];
    init_test(&cd_S19773C1, buf);
    S19773C1 *dp, &lv = *(dp=new (buf) S19773C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1400), "sizeof(S19773C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19773C1)");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(1144,588), "S19773C1");
    check_base_class_offset(lv, (S8033C4*)(S19773C3*), ABISELECT(1144,588), "S19773C1");
    check_base_class_offset(lv, (S8033C7*)(S19773C5*)(S19773C4*), ABISELECT(1232,664), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C4*), ABISELECT(1232,664), "S19773C1");
    /*is_ambiguous_... S19773C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C4*), ABISELECT(1488,796), "S19773C1");
    check_base_class_offset(lv, (S19773C4*)(S19773C3*), ABISELECT(1232,664), "S19773C1");
    /*is_ambiguous_... S19773C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C8*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C5*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C8*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C5*)(S19773C11*), ABISELECT(2080,1108), "S19773C1");
    check_base_class_offset(lv, (S19773C8*)(S19773C3*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C8*)(S19773C10*)(S19773C9*), ABISELECT(1584,848), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(2224,1184), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(2224,1184), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(2384,1276), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C11*)(S19773C9*), ABISELECT(2384,1276), "S19773C1");
    check_base_class_offset(lv, (S19773C9*)(S19773C3*), ABISELECT(2224,1184), "S19773C1");
    check_base_class_offset(lv, (S19773C12*)(S19773C3*), ABISELECT(2432,1304), "S19773C1");
    check_base_class_offset(lv, (S19773C3*), 0, "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19773C10*)(S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C10*)(S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C9 */ AMB_check_base_class_offset(lv, (S19773C9*), ABISELECT(800,396), "S19773C1");
    /*is_ambiguous_... S19773C1::S19773C12 */ AMB_check_base_class_offset(lv, (S19773C12*), ABISELECT(960,488), "S19773C1");
    check_field_offset(lv, s19773c1f0, ABISELECT(1140,584), "S19773C1.s19773c1f0");
    test_class_info(&lv, &cd_S19773C1);
    dp->~S19773C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19773C1(Test_S19773C1, "S19773C1", ABISELECT(2624,1400));

#else // __cplusplus

extern void _ZN8S19773C1C1Ev();
extern void _ZN8S19773C1D1Ev();
Name_Map name_map_S19773C1[] = {
  NSPAIR(_ZN8S19773C1C1Ev),
  NSPAIR(_ZN8S19773C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C4;
extern VTBL_ENTRY _ZTI8S19773C4[];
extern  VTBL_ENTRY _ZTV8S19773C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C5;
extern VTBL_ENTRY _ZTI8S19773C5[];
extern  VTBL_ENTRY _ZTV8S19773C5[];
extern Class_Descriptor cd_S19773C8;
extern VTBL_ENTRY _ZTI8S19773C8[];
extern  VTBL_ENTRY _ZTV8S19773C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C11;
extern VTBL_ENTRY _ZTI9S19773C11[];
extern  VTBL_ENTRY _ZTV9S19773C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C11[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
extern Class_Descriptor cd_S19773C3;
extern VTBL_ENTRY _ZTI8S19773C3[];
extern  VTBL_ENTRY _ZTV8S19773C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C3[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19773C10;
extern VTBL_ENTRY _ZTI9S19773C10[];
extern  VTBL_ENTRY _ZTV9S19773C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19773C10[];
extern Class_Descriptor cd_S19773C9;
extern VTBL_ENTRY _ZTI8S19773C9[];
extern  VTBL_ENTRY _ZTV8S19773C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C9[];
extern Class_Descriptor cd_S19773C12;
extern VTBL_ENTRY _ZTI9S19773C12[];
extern  VTBL_ENTRY _ZTV9S19773C12[];
static Base_Class bases_S19773C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(1144,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8033C7,    ABISELECT(1232,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(1232,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1488,796), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19773C4,    ABISELECT(1232,664), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(1584,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2080,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19773C5,    ABISELECT(2080,1108), //bcp->offset
    41, //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19773C8,    ABISELECT(1584,848), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2224,1184), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S19773C10,    ABISELECT(2224,1184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19773C11,    ABISELECT(2384,1276), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19773C9,    ABISELECT(2224,1184), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19773C12,    ABISELECT(2432,1304), //bcp->offset
    62, //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
    13, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19773C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19773C10,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19773C9,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19773C12,    ABISELECT(960,488), //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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19773C1[];
extern void _ZN8S19773C1D1Ev();
extern void _ZN8S19773C1D0Ev();
extern void ABISELECT(_ZThn800_N8S19773C1D1Ev,_ZThn396_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19773C1D0Ev,_ZThn396_N8S19773C1D0Ev)();
extern void _ZN9S19773C122v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C1D1Ev,_ZThn664_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C1D0Ev,_ZThn664_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C1D1Ev,_ZThn796_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C1D0Ev,_ZThn796_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C1D1Ev,_ZThn848_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C1D0Ev,_ZThn848_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C1D1Ev,_ZThn1108_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C1D0Ev,_ZThn1108_N8S19773C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C1D1Ev,_ZThn1184_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C1D0Ev,_ZThn1184_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C1D1Ev,_ZThn1276_N8S19773C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C1D0Ev,_ZThn1276_N8S19773C1D0Ev)() __attribute__((weak));
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY vtc_S19773C1[] = {
  ABISELECT(2432,1304),
  ABISELECT(1144,588),
  ABISELECT(2384,1276),
  ABISELECT(2224,1184),
  ABISELECT(2080,1108),
  ABISELECT(1584,848),
  ABISELECT(1488,796),
  ABISELECT(1232,664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN8S19773C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C1D0Ev,
  ABISELECT(1584,880),
  ABISELECT(1280,712),
  ABISELECT(784,452),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19773C1D1Ev,_ZThn396_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19773C1D0Ev,_ZThn396_N8S19773C1D0Ev),
  ABISELECT(-960,-488),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
  ABISELECT(-1232,-664),
  ABISELECT(256,132),
  ABISELECT(-1232,-664),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev),
  ABISELECT(-1488,-796),
  ABISELECT(-1488,-796),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev),
  0,
  ABISELECT(-1584,-848),
  ABISELECT(496,260),
  ABISELECT(-1584,-848),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
  ABISELECT(-2080,-1108),
  ABISELECT(-2080,-1108),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev),
  ABISELECT(-2224,-1184),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1184),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev),
  ABISELECT(-2384,-1276),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-2384,-1276),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev),
  0,
  ABISELECT(-2432,-1304),
  (VTBL_ENTRY)&(_ZTI8S19773C1[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19773C1[];
extern void _ZN8S19773C3D1Ev();
extern void _ZN8S19773C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C3__8S19773C1[] = {
  ABISELECT(2432,1304),
  ABISELECT(1144,588),
  ABISELECT(2384,1276),
  ABISELECT(2224,1184),
  ABISELECT(2080,1108),
  ABISELECT(1584,848),
  ABISELECT(1488,796),
  ABISELECT(1232,664),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN8S19773C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C3D1Ev,_ZThn664_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19773C3D0Ev,_ZThn664_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C3__8S19773C1[] = {
  ABISELECT(-1232,-664),
  ABISELECT(256,132),
  ABISELECT(-1232,-664),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C3D1Ev,_ZThn796_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19773C3D0Ev,_ZThn796_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C3__8S19773C1[] = {
  ABISELECT(-1488,-796),
  ABISELECT(-1488,-796),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C3D1Ev,_ZThn848_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C3D0Ev,_ZThn848_N8S19773C3D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C3__8S19773C1[] = {
  0,
  ABISELECT(-1584,-848),
  ABISELECT(496,260),
  ABISELECT(-1584,-848),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C3D1Ev,_ZThn1108_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19773C3D0Ev,_ZThn1108_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__A1__8S19773C3__8S19773C1[] = {
  ABISELECT(-2080,-1108),
  ABISELECT(-2080,-1108),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C3D1Ev,_ZThn1184_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19773C3D0Ev,_ZThn1184_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C3__8S19773C1[] = {
  ABISELECT(-2224,-1184),
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1184),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C3D1Ev,_ZThn1276_N8S19773C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19773C3D0Ev,_ZThn1276_N8S19773C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C3__8S19773C1[] = {
  ABISELECT(-2384,-1276),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-2384,-1276),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev),
};
extern void _ZN9S19773C122v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C12__8S19773C3__8S19773C1[] = {
  0,
  ABISELECT(-2432,-1304),
  (VTBL_ENTRY)&(_ZTI8S19773C3[0]),
  (VTBL_ENTRY)&_ZN9S19773C122v3Ev,
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__A__8S19773C1[] = {
  ABISELECT(1584,880),
  ABISELECT(1280,712),
  ABISELECT(784,452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__A1__8S19773C1[] = {
  ABISELECT(1280,712),
  ABISELECT(784,452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19773C10D1Ev,_ZThn452_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19773C10D0Ev,_ZThn452_N9S19773C10D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__A1__8S19773C1[] = {
  0,
  ABISELECT(-784,-452),
  ABISELECT(496,260),
  ABISELECT(-784,-452),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZThn1280_N9S19773C10D1Ev,_ZThn712_N9S19773C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
extern void ABISELECT(_ZThn1280_N9S19773C10D0Ev,_ZThn712_N9S19773C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__A1__8S19773C1[] = {
  ABISELECT(-1280,-712),
  ABISELECT(-1280,-712),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19773C9D1Ev,_ZThn452_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19773C9D0Ev,_ZThn452_N8S19773C9D0Ev)() __attribute__((weak));
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__A__8S19773C1[] = {
  0,
  ABISELECT(-784,-452),
  ABISELECT(496,260),
  ABISELECT(-784,-452),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn1280_N8S19773C9D1Ev,_ZThn712_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn1280_N8S19773C9D0Ev,_ZThn712_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__A__8S19773C1[] = {
  ABISELECT(-1280,-712),
  ABISELECT(-1280,-712),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C9D1Ev,_ZThn880_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19773C9D0Ev,_ZThn880_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__A__8S19773C1[] = {
  ABISELECT(-1584,-880),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-1584,-880),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN8S19773C4D1Ev();
extern void _ZN8S19773C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C4__8S19773C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&_ZN8S19773C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19773C4__8S19773C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19773C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev),
};
extern void _ZN8S19773C8D1Ev();
extern void _ZN8S19773C8D0Ev();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&_ZN8S19773C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C8__8S19773C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19773C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev),
};
extern void _ZN8S19773C9D1Ev();
extern void _ZN8S19773C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C9__8S19773C1[] = {
  ABISELECT(160,92),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN8S19773C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19773C9D0Ev,
};
extern void _ZN9S19773C10D1Ev();
extern void _ZN9S19773C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C108S19773C9__8S19773C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&_ZN9S19773C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19773C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev)();
extern void _ZN8S19773C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19773C8__8S19773C9__8S19773C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19773C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__8S19773C9__8S19773C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C9__8S19773C1[] = {
  ABISELECT(-160,-92),
  0,
  ABISELECT(-304,-168),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19773C9[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev),
};
extern void _ZN9S19773C112v2Ev();
extern void _ZN9S19773C11D1Ev();
extern void _ZN9S19773C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19773C11__8S19773C1[] = {
  ABISELECT(-304,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&_ZN9S19773C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19773C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19773C5__9S19773C11__8S19773C1[] = {
  ABISELECT(304,168),
  ABISELECT(304,168),
  (VTBL_ENTRY)&(_ZTI9S19773C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D1Ev,_ZTv0_n12_N9S19773C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19773C11D0Ev,_ZTv0_n12_N9S19773C11D0Ev),
};
static  VTT_ENTRY vtt_S19773C1[] = {
  {&(_ZTV8S19773C1[10]),  10,66},
  {&(_tg__ZTV8S19773C3__8S19773C1[10]),  10,12},
  {&(_tg__ZTV8S19773C4__8S19773C3__8S19773C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19773C3__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C3__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__A1__8S19773C3__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C3__8S19773C1[6]),  6,8},
  {&(_tg__ZTV9S19773C11__8S19773C3__8S19773C1[5]),  5,8},
  {&(_tg__ZTV9S19773C12__8S19773C3__8S19773C1[3]),  3,4},
  {&(_tg__ZTV8S19773C9__A__8S19773C1[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__A1__8S19773C1[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__A1__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__A1__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__A__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__A__8S19773C1[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__A__8S19773C1[5]),  5,8},
  {&(_ZTV8S19773C1[26]),  26,66},
  {&(_ZTV8S19773C1[31]),  31,66},
  {&(_ZTV8S19773C1[38]),  38,66},
  {&(_ZTV8S19773C1[44]),  44,66},
  {&(_ZTV8S19773C1[52]),  52,66},
  {&(_ZTV8S19773C1[59]),  59,66},
  {&(_ZTV8S19773C1[65]),  65,66},
  {&(_ZTV8S19773C1[17]),  17,66},
  {&(_tg__ZTV8S19773C4__8S19773C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19773C4__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C1[3]),  3,6},
  {&(_tg__ZTV8S19773C5__8S19773C8__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C9__8S19773C1[5]),  5,7},
  {&(_tg__ZTV9S19773C108S19773C9__8S19773C1[4]),  4,6},
  {&(_tg__ZTV8S19773C8__9S19773C108S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__9S19773C108S19773C9__8S19773C1[3]),  3,5},
  {&(_tg__ZTV8S19773C8__8S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV8S19773C5__8S19773C9__8S19773C1[3]),  3,5},
  {&(_tg__ZTV9S19773C11__8S19773C9__8S19773C1[5]),  5,8},
  {&(_tg__ZTV9S19773C11__8S19773C1[3]),  3,6},
  {&(_tg__ZTV8S19773C5__9S19773C11__8S19773C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19773C1[];
extern  VTBL_ENTRY _ZTV8S19773C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19773C1[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D0Ev,_ZTv0_n12_N8S19773C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D0Ev,_ZThn260_N8S19773C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C8D1Ev,_ZTv0_n12_N8S19773C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19773C8D1Ev,_ZThn260_N8S19773C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D0Ev,_ZTv0_n12_N8S19773C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D0Ev,_ZThn132_N8S19773C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C4D1Ev,_ZTv0_n12_N8S19773C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19773C4D1Ev,_ZThn132_N8S19773C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D0Ev,_ZTv0_n20_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D0Ev,_ZThn92_N8S19773C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C9D0Ev,_ZThn880_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C9D1Ev,_ZTv0_n20_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19773C9D1Ev,_ZThn92_N8S19773C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C9D1Ev,_ZThn880_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D0Ev,_ZTv0_n12_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19773C9D0Ev,_ZThn712_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C9D1Ev,_ZTv0_n12_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19773C9D1Ev,_ZThn712_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D0Ev,_ZTv0_n16_N8S19773C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19773C9D0Ev,_ZThn452_N8S19773C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C9D1Ev,_ZTv0_n16_N8S19773C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19773C9D1Ev,_ZThn452_N8S19773C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D0Ev,_ZTv0_n12_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19773C10D0Ev,_ZThn712_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19773C10D1Ev,_ZTv0_n12_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19773C10D1Ev,_ZThn712_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D0Ev,_ZTv0_n16_N9S19773C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19773C10D0Ev,_ZThn452_N9S19773C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19773C10D1Ev,_ZTv0_n16_N9S19773C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19773C10D1Ev,_ZThn452_N9S19773C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D0Ev,_ZTv0_n20_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C3D0Ev,_ZThn1276_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C3D1Ev,_ZTv0_n20_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C3D1Ev,_ZThn1276_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D0Ev,_ZTv0_n24_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C3D0Ev,_ZThn1184_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C3D1Ev,_ZTv0_n24_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C3D1Ev,_ZThn1184_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D0Ev,_ZTv0_n12_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C3D0Ev,_ZThn1108_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C3D0Ev,_ZThn796_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C3D1Ev,_ZTv0_n12_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C3D1Ev,_ZThn1108_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C3D1Ev,_ZThn796_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D0Ev,_ZTv0_n16_N8S19773C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C3D0Ev,_ZThn848_N8S19773C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C3D0Ev,_ZThn664_N8S19773C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C3D1Ev,_ZTv0_n16_N8S19773C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C3D1Ev,_ZThn848_N8S19773C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C3D1Ev,_ZThn664_N8S19773C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C1D0Ev,_ZTv0_n20_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C1D0Ev,_ZThn1276_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19773C1D1Ev,_ZTv0_n20_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19773C1D1Ev,_ZThn1276_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C1D0Ev,_ZTv0_n24_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C1D0Ev,_ZThn1184_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19773C1D1Ev,_ZTv0_n24_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19773C1D1Ev,_ZThn1184_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C1D0Ev,_ZTv0_n12_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C1D0Ev,_ZThn1108_N8S19773C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C1D0Ev,_ZThn796_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19773C1D1Ev,_ZTv0_n12_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19773C1D1Ev,_ZThn1108_N8S19773C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19773C1D1Ev,_ZThn796_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C1D0Ev,_ZTv0_n16_N8S19773C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C1D0Ev,_ZThn848_N8S19773C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C1D0Ev,_ZThn664_N8S19773C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19773C1D1Ev,_ZTv0_n16_N8S19773C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19773C1D1Ev,_ZThn848_N8S19773C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19773C1D1Ev,_ZThn664_N8S19773C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19773C1 = {  "S19773C1", // class name
  bases_S19773C1, 19,
  &(vtc_S19773C1[0]), // expected_vtbl_contents
  &(vtt_S19773C1[0]), // expected_vtt_contents
  ABISELECT(2624,1400), // object size
  NSPAIRA(_ZTI8S19773C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19773C1),66, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19773C1),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C5  : S8033C7 {
  void *s19772c5f0;
  ::S20291C14_nt s19772c5f1;
  void *s19772c5f2;
  long double s19772c5f3;
  ~S19772C5(); // tgen
  S19772C5(); // tgen
};
//SIG(-1 S19772C5) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19772C5 ::~S19772C5(){ note_dtor("S19772C5", this);} // tgen
S19772C5 ::S19772C5(){ note_ctor("S19772C5", this);} // tgen

static void Test_S19772C5()
{
  extern Class_Descriptor cd_S19772C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19772C5, buf);
    S19772C5 *dp, &lv = *(dp=new (buf) S19772C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19772C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C5)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19772C5");
    check_field_offset(lv, s19772c5f0, ABISELECT(96,52), "S19772C5.s19772c5f0");
    check_field_offset(lv, s19772c5f1, ABISELECT(104,56), "S19772C5.s19772c5f1");
    check_field_offset(lv, s19772c5f2, ABISELECT(112,60), "S19772C5.s19772c5f2");
    check_field_offset(lv, s19772c5f3, ABISELECT(128,64), "S19772C5.s19772c5f3");
    test_class_info(&lv, &cd_S19772C5);
    dp->~S19772C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C5(Test_S19772C5, "S19772C5", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19772C5C1Ev();
extern void _ZN8S19772C5D1Ev();
Name_Map name_map_S19772C5[] = {
  NSPAIR(_ZN8S19772C5C1Ev),
  NSPAIR(_ZN8S19772C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19772C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19772C5[];
extern void _ZN8S19772C5D1Ev();
extern void _ZN8S19772C5D0Ev();
static  VTBL_ENTRY vtc_S19772C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C5[0]),
  (VTBL_ENTRY)&_ZN8S19772C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
Class_Descriptor cd_S19772C5 = {  "S19772C5", // class name
  bases_S19772C5, 1,
  &(vtc_S19772C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19772C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19772C5),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  S19772C4  : S19772C5 , virtual S8033C7 {
  ::S8033C7 s19772c4f0;
  void *s19772c4f1;
  virtual  ~S19772C4(); // _ZN8S19772C4D2Ev
  S19772C4(); // tgen
};
//SIG(-1 S19772C4) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} VBC3 vd FC3 Fp}


 S19772C4 ::~S19772C4(){ note_dtor("S19772C4", this);}
S19772C4 ::S19772C4(){ note_ctor("S19772C4", this);} // tgen

static void Test_S19772C4()
{
  extern Class_Descriptor cd_S19772C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,47)];
    init_test(&cd_S19772C4, buf);
    S19772C4 *dp, &lv = *(dp=new (buf) S19772C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,184), "sizeof(S19772C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C4)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), 0, "S19772C4");
    check_base_class_offset(lv, (S19772C5*), 0, "S19772C4");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), ABISELECT(256,132), "S19772C4");
    check_field_offset(lv, s19772c4f0, ABISELECT(144,76), "S19772C4.s19772c4f0");
    check_field_offset(lv, s19772c4f1, ABISELECT(240,128), "S19772C4.s19772c4f1");
    test_class_info(&lv, &cd_S19772C4);
    dp->~S19772C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C4(Test_S19772C4, "S19772C4", ABISELECT(352,184));

#else // __cplusplus

extern void _ZN8S19772C4C1Ev();
extern void _ZN8S19772C4D2Ev();
Name_Map name_map_S19772C4[] = {
  NSPAIR(_ZN8S19772C4C1Ev),
  NSPAIR(_ZN8S19772C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19772C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19772C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(256,132), //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 _ZTI8S19772C4[];
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C4[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C4[];
static  VTT_ENTRY vtt_S19772C4[] = {
  {&(_ZTV8S19772C4[3]),  3,10},
  {&(_ZTV8S19772C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C4 = {  "S19772C4", // class name
  bases_S19772C4, 3,
  &(vtc_S19772C4[0]), // expected_vtbl_contents
  &(vtt_S19772C4[0]), // expected_vtt_contents
  ABISELECT(352,184), // object size
  NSPAIRA(_ZTI8S19772C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C8  : S8033C7 , virtual S19772C5 {
  int s19772c8f0;
  char s19772c8f1;
  void *s19772c8f2;
  int s19772c8f3;
  void *s19772c8f4[2];
  ::S19772C4 s19772c8f5;
  virtual  ~S19772C8(); // _ZN8S19772C8D2Ev
  virtual void  v1(); // _ZN8S19772C82v1Ev
  S19772C8(); // tgen
};
//SIG(-1 S19772C8) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 Fp FC4{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC5{ BC3 VBC2 vd FC2 Fp}}


 S19772C8 ::~S19772C8(){ note_dtor("S19772C8", this);}
void  S19772C8 ::v1(){vfunc_called(this, "_ZN8S19772C82v1Ev");}
S19772C8 ::S19772C8(){ note_ctor("S19772C8", this);} // tgen

static void Test_S19772C8()
{
  extern Class_Descriptor cd_S19772C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,85)];
    init_test(&cd_S19772C8, buf);
    S19772C8 *dp, &lv = *(dp=new (buf) S19772C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,336), "sizeof(S19772C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C8)");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19772C8");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(496,260), "S19772C8");
    check_base_class_offset(lv, (S19772C5*), ABISELECT(496,260), "S19772C8");
    check_field_offset(lv, s19772c8f0, ABISELECT(96,52), "S19772C8.s19772c8f0");
    check_field_offset(lv, s19772c8f1, ABISELECT(100,56), "S19772C8.s19772c8f1");
    check_field_offset(lv, s19772c8f2, ABISELECT(104,60), "S19772C8.s19772c8f2");
    check_field_offset(lv, s19772c8f3, ABISELECT(112,64), "S19772C8.s19772c8f3");
    check_field_offset(lv, s19772c8f4, ABISELECT(120,68), "S19772C8.s19772c8f4");
    check_field_offset(lv, s19772c8f5, ABISELECT(144,76), "S19772C8.s19772c8f5");
    test_class_info(&lv, &cd_S19772C8);
    dp->~S19772C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C8(Test_S19772C8, "S19772C8", ABISELECT(640,336));

#else // __cplusplus

extern void _ZN8S19772C8C1Ev();
extern void _ZN8S19772C8D2Ev();
Name_Map name_map_S19772C8[] = {
  NSPAIR(_ZN8S19772C8C1Ev),
  NSPAIR(_ZN8S19772C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
static Base_Class bases_S19772C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(496,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
    2, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(496,260), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C8[];
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C8[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C8[];
static  VTT_ENTRY vtt_S19772C8[] = {
  {&(_ZTV8S19772C8[3]),  3,11},
  {&(_ZTV8S19772C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C8 = {  "S19772C8", // class name
  bases_S19772C8, 3,
  &(vtc_S19772C8[0]), // expected_vtbl_contents
  &(vtt_S19772C8[0]), // expected_vtt_contents
  ABISELECT(640,336), // object size
  NSPAIRA(_ZTI8S19772C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C8),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C10  : S8033C7 , virtual S19772C8 {
  void *s19772c10f0;
  __tsi64 s19772c10f1;
  long s19772c10f2;
  char s19772c10f3;
  void *s19772c10f4;
  int s19772c10f5;
  virtual  ~S19772C10(); // _ZN9S19772C10D2Ev
  S19772C10(); // tgen
};
//SIG(-1 S19772C10) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} VBC3{ BC2 VBC4{ BC2 Fp FC5{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC6{ BC4 VBC2 vd FC2 Fp}} vd Fp FL Fl Fc Fp Fi}


 S19772C10 ::~S19772C10(){ note_dtor("S19772C10", this);}
S19772C10 ::S19772C10(){ note_ctor("S19772C10", this);} // tgen

static void Test_S19772C10()
{
  extern Class_Descriptor cd_S19772C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(50,105)];
    init_test(&cd_S19772C10, buf);
    S19772C10 *dp, &lv = *(dp=new (buf) S19772C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(784,416), "sizeof(S19772C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C10)");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*), 0, "S19772C10");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(144,80), "S19772C10");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(640,340), "S19772C10");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(640,340), "S19772C10");
    check_base_class_offset(lv, (S19772C8*), ABISELECT(144,80), "S19772C10");
    check_field_offset(lv, s19772c10f0, ABISELECT(96,52), "S19772C10.s19772c10f0");
    check_field_offset(lv, s19772c10f1, ABISELECT(104,56), "S19772C10.s19772c10f1");
    check_field_offset(lv, s19772c10f2, ABISELECT(112,64), "S19772C10.s19772c10f2");
    check_field_offset(lv, s19772c10f3, ABISELECT(120,68), "S19772C10.s19772c10f3");
    check_field_offset(lv, s19772c10f4, ABISELECT(128,72), "S19772C10.s19772c10f4");
    check_field_offset(lv, s19772c10f5, ABISELECT(136,76), "S19772C10.s19772c10f5");
    test_class_info(&lv, &cd_S19772C10);
    dp->~S19772C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C10(Test_S19772C10, "S19772C10", ABISELECT(784,416));

#else // __cplusplus

extern void _ZN9S19772C10C1Ev();
extern void _ZN9S19772C10D2Ev();
Name_Map name_map_S19772C10[] = {
  NSPAIR(_ZN9S19772C10C1Ev),
  NSPAIR(_ZN9S19772C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
static Base_Class bases_S19772C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(640,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
    3, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(640,340), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(144,80), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //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 _ZTI9S19772C10[];
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19772C10D1Ev,_ZThn80_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19772C10D0Ev,_ZThn80_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn640_N9S19772C10D1Ev,_ZThn340_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn640_N9S19772C10D0Ev,_ZThn340_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C10[] = {
  ABISELECT(640,340),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
  0,
  ABISELECT(-144,-80),
  ABISELECT(496,260),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-640,-340),
  ABISELECT(-640,-340),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19772C10[];
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C10[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__9S19772C10[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
static  VTT_ENTRY vtt_S19772C10[] = {
  {&(_ZTV9S19772C10[4]),  4,19},
  {&(_ZTV9S19772C10[11]),  11,19},
  {&(_ZTV9S19772C10[17]),  17,19},
  {&(_tg__ZTV8S19772C8__9S19772C10[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__9S19772C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19772C10D0Ev,_ZThn340_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19772C10D1Ev,_ZThn340_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19772C10D0Ev,_ZThn80_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19772C10D1Ev,_ZThn80_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C10 = {  "S19772C10", // class name
  bases_S19772C10, 5,
  &(vtc_S19772C10[0]), // expected_vtbl_contents
  &(vtt_S19772C10[0]), // expected_vtt_contents
  ABISELECT(784,416), // object size
  NSPAIRA(_ZTI9S19772C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19772C10),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19772C10),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C11  : virtual S19772C5 {
  char s19772c11f0;
  short s19772c11f1;
  long double s19772c11f2;
  void *s19772c11f3[2];
  virtual void  v2(); // _ZN9S19772C112v2Ev
  ~S19772C11(); // tgen
  S19772C11(); // tgen
};
//SIG(-1 S19772C11) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} v1 Fc Fs FD Fp[2]}


void  S19772C11 ::v2(){vfunc_called(this, "_ZN9S19772C112v2Ev");}
S19772C11 ::~S19772C11(){ note_dtor("S19772C11", this);} // tgen
S19772C11 ::S19772C11(){ note_ctor("S19772C11", this);} // tgen

static void Test_S19772C11()
{
  extern Class_Descriptor cd_S19772C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S19772C11, buf);
    S19772C11 *dp, &lv = *(dp=new (buf) S19772C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S19772C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C11)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(48,28), "S19772C11");
    check_base_class_offset(lv, (S19772C5*), ABISELECT(48,28), "S19772C11");
    check_field_offset(lv, s19772c11f0, ABISELECT(8,4), "S19772C11.s19772c11f0");
    check_field_offset(lv, s19772c11f1, ABISELECT(10,6), "S19772C11.s19772c11f1");
    check_field_offset(lv, s19772c11f2, ABISELECT(16,8), "S19772C11.s19772c11f2");
    check_field_offset(lv, s19772c11f3, ABISELECT(32,20), "S19772C11.s19772c11f3");
    test_class_info(&lv, &cd_S19772C11);
    dp->~S19772C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C11(Test_S19772C11, "S19772C11", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN9S19772C11C1Ev();
extern void _ZN9S19772C11D1Ev();
Name_Map name_map_S19772C11[] = {
  NSPAIR(_ZN9S19772C11C1Ev),
  NSPAIR(_ZN9S19772C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
static Base_Class bases_S19772C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19772C11[];
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S19772C11D1Ev,_ZThn28_N9S19772C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S19772C11D0Ev,_ZThn28_N9S19772C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C11[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19772C11[];
static  VTT_ENTRY vtt_S19772C11[] = {
  {&(_ZTV9S19772C11[3]),  3,11},
  {&(_ZTV9S19772C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19772C11D0Ev,_ZThn28_N9S19772C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19772C11D1Ev,_ZThn28_N9S19772C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C11 = {  "S19772C11", // class name
  bases_S19772C11, 2,
  &(vtc_S19772C11[0]), // expected_vtbl_contents
  &(vtt_S19772C11[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI9S19772C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19772C11),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19772C11),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C9  : S19772C10 , virtual S19772C11 {
  char s19772c9f0;
  __tsi64 s19772c9f1:35;
  virtual  ~S19772C9(); // _ZN8S19772C9D2Ev
  S19772C9(); // tgen
};
//SIG(-1 S19772C9) C1{ BC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} VBC4{ BC3 VBC5{ BC3 Fp FC6{} Fp FD} vd v1 Fi Fc Fp Fi Fp[2] FC7{ BC5 VBC3 vd FC3 Fp}} vd Fp FL Fl Fc Fp Fi} VBC8{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35}


 S19772C9 ::~S19772C9(){ note_dtor("S19772C9", this);}
S19772C9 ::S19772C9(){ note_ctor("S19772C9", this);} // tgen

static void Test_S19772C9()
{
  extern Class_Descriptor cd_S19772C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,114)];
    init_test(&cd_S19772C9, buf);
    S19772C9 *dp, &lv = *(dp=new (buf) S19772C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,452), "sizeof(S19772C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C9)");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*), 0, "S19772C9");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(160,88), "S19772C9");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(656,348), "S19772C9");
    check_base_class_offset(lv, (S19772C8*)(S19772C10*), ABISELECT(160,88), "S19772C9");
    check_base_class_offset(lv, (S19772C10*), 0, "S19772C9");
    check_base_class_offset(lv, (S19772C11*), ABISELECT(800,424), "S19772C9");
    check_field_offset(lv, s19772c9f0, ABISELECT(140,80), "S19772C9.s19772c9f0");
    set_bf_and_test(lv, s19772c9f1, ABISELECT(144,81), 0, 35, 1, "S19772C9");
    set_bf_and_test(lv, s19772c9f1, ABISELECT(144,81), 0, 35, hide_sll(1LL<<34), "S19772C9");
    test_class_info(&lv, &cd_S19772C9);
    dp->~S19772C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C9(Test_S19772C9, "S19772C9", ABISELECT(848,452));

#else // __cplusplus

extern void _ZN8S19772C9C1Ev();
extern void _ZN8S19772C9D2Ev();
Name_Map name_map_S19772C9[] = {
  NSPAIR(_ZN8S19772C9C1Ev),
  NSPAIR(_ZN8S19772C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
static Base_Class bases_S19772C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(656,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(656,348), //bcp->offset
    15, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(160,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19772C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19772C11,    ABISELECT(800,424), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C9[];
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19772C9D1Ev,_ZThn348_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19772C9D0Ev,_ZThn348_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C9D1Ev,_ZThn424_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn800_N8S19772C9D0Ev,_ZThn424_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19772C9[] = {
  ABISELECT(800,424),
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
  ABISELECT(-800,-424),
  0,
  ABISELECT(-144,-76),
  ABISELECT(-800,-424),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19772C9[];
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C10__8S19772C9[] = {
  ABISELECT(656,348),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S19772C10D1Ev,_ZThn88_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S19772C10D0Ev,_ZThn88_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C10__8S19772C9[] = {
  0,
  ABISELECT(-160,-88),
  ABISELECT(496,260),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn656_N9S19772C10D1Ev,_ZThn348_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn656_N9S19772C10D0Ev,_ZThn348_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C10__8S19772C9[] = {
  ABISELECT(-656,-348),
  ABISELECT(-656,-348),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C9[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C9[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C9[] = {
  {&(_ZTV8S19772C9[5]),  5,28},
  {&(_tg__ZTV9S19772C10__8S19772C9[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C10__8S19772C9[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C10__8S19772C9[3]),  3,5},
  {&(_ZTV8S19772C9[12]),  12,28},
  {&(_ZTV8S19772C9[18]),  18,28},
  {&(_ZTV8S19772C9[25]),  25,28},
  {&(_tg__ZTV8S19772C8__8S19772C9[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C9[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19772C10D0Ev,_ZThn348_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S19772C10D1Ev,_ZThn348_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19772C10D0Ev,_ZThn88_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19772C10D1Ev,_ZThn88_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C9D0Ev,_ZThn424_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C9D1Ev,_ZThn424_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19772C9D0Ev,_ZThn348_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19772C9D1Ev,_ZThn348_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C9 = {  "S19772C9", // class name
  bases_S19772C9, 7,
  &(vtc_S19772C9[0]), // expected_vtbl_contents
  &(vtt_S19772C9[0]), // expected_vtt_contents
  ABISELECT(848,452), // object size
  NSPAIRA(_ZTI8S19772C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19772C9),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C9),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C12  {
  long double s19772c12f0;
  void *s19772c12f1;
  ::S8033C7 s19772c12f2;
  __tsi64 s19772c12f3;
  long double s19772c12f4;
  int s19772c12f5;
  virtual void  v3(); // _ZN9S19772C122v3Ev
  ~S19772C12(); // tgen
  S19772C12(); // tgen
};
//SIG(-1 S19772C12) C1{ v1 FD Fp FC2{ vd m Fc Fc:0 Fl[8] FD} FL FD Fi}


void  S19772C12 ::v3(){vfunc_called(this, "_ZN9S19772C122v3Ev");}
S19772C12 ::~S19772C12(){ note_dtor("S19772C12", this);} // tgen
S19772C12 ::S19772C12(){ note_ctor("S19772C12", this);} // tgen

static void Test_S19772C12()
{
  extern Class_Descriptor cd_S19772C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19772C12, buf);
    S19772C12 *dp, &lv = *(dp=new (buf) S19772C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19772C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C12)");
    check_field_offset(lv, s19772c12f0, ABISELECT(16,4), "S19772C12.s19772c12f0");
    check_field_offset(lv, s19772c12f1, ABISELECT(32,16), "S19772C12.s19772c12f1");
    check_field_offset(lv, s19772c12f2, ABISELECT(48,20), "S19772C12.s19772c12f2");
    check_field_offset(lv, s19772c12f3, ABISELECT(144,72), "S19772C12.s19772c12f3");
    check_field_offset(lv, s19772c12f4, ABISELECT(160,80), "S19772C12.s19772c12f4");
    check_field_offset(lv, s19772c12f5, ABISELECT(176,92), "S19772C12.s19772c12f5");
    test_class_info(&lv, &cd_S19772C12);
    dp->~S19772C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C12(Test_S19772C12, "S19772C12", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN9S19772C12C1Ev();
extern void _ZN9S19772C12D1Ev();
Name_Map name_map_S19772C12[] = {
  NSPAIR(_ZN9S19772C12C1Ev),
  NSPAIR(_ZN9S19772C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19772C12[];
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C12[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
Class_Descriptor cd_S19772C12 = {  "S19772C12", // class name
  0,0,//no base classes
  &(vtc_S19772C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI9S19772C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19772C12),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  S19772C3  : virtual S19772C4 , virtual S19772C8 , virtual S19772C9 , virtual S8033C4 , virtual S19772C12 {
  void *s19772c3f0;
  ::S19772C12 s19772c3f1[3];
  ::S19772C12 s19772c3f2;
  char s19772c3f3;
  virtual  ~S19772C3(); // _ZN8S19772C3D2Ev
  S19772C3(); // tgen
};
//SIG(-1 S19772C3) C1{ VBC2{ BC3{ BC4{ vd m Fc Fc:0 Fl[8] FD} Fp FC5{} Fp FD} VBC4 vd FC4 Fp} VBC6{ BC4 VBC3 vd v1 Fi Fc Fp Fi Fp[2] FC2} VBC7{ BC8{ BC4 VBC6 vd Fp FL Fl Fc Fp Fi} VBC9{ VBC3 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC10{ m Fp[3] FL[8]} VBC11{ v3 FD Fp FC4 FL FD Fi} vd Fp FC11[3] FC11 Fc}


 S19772C3 ::~S19772C3(){ note_dtor("S19772C3", this);}
S19772C3 ::S19772C3(){ note_ctor("S19772C3", this);} // tgen

static void Test_S19772C3()
{
  extern Class_Descriptor cd_S19772C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(144,302)];
    init_test(&cd_S19772C3, buf);
    S19772C3 *dp, &lv = *(dp=new (buf) S19772C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2288,1204), "sizeof(S19772C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C3)");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*)(S19772C4*), ABISELECT(800,396), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C4*), ABISELECT(800,396), "S19772C3");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C4*), ABISELECT(1056,528), "S19772C3");
    check_base_class_offset(lv, (S19772C4*), ABISELECT(800,396), "S19772C3");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(1152,580), "S19772C3");
    /*is_ambiguous_... S19772C3::S19772C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(1648,840), "S19772C3");
    check_base_class_offset(lv, (S19772C8*), ABISELECT(1152,580), "S19772C3");
    check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1152,580), "S19772C3");
    /*is_ambiguous_... S19772C10::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(1952,1004), "S19772C3");
    check_base_class_offset(lv, (S19772C9*), ABISELECT(1792,916), "S19772C3");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(2000,1032), "S19772C3");
    check_base_class_offset(lv, (S19772C12*), ABISELECT(2096,1108), "S19772C3");
    check_field_offset(lv, s19772c3f0, ABISELECT(8,4), "S19772C3.s19772c3f0");
    check_field_offset(lv, s19772c3f1, ABISELECT(16,8), "S19772C3.s19772c3f1");
    check_field_offset(lv, s19772c3f2, ABISELECT(592,296), "S19772C3.s19772c3f2");
    check_field_offset(lv, s19772c3f3, ABISELECT(784,392), "S19772C3.s19772c3f3");
    test_class_info(&lv, &cd_S19772C3);
    dp->~S19772C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C3(Test_S19772C3, "S19772C3", ABISELECT(2288,1204));

#else // __cplusplus

extern void _ZN8S19772C3C1Ev();
extern void _ZN8S19772C3D2Ev();
Name_Map name_map_S19772C3[] = {
  NSPAIR(_ZN8S19772C3C1Ev),
  NSPAIR(_ZN8S19772C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C4;
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
static Base_Class bases_S19772C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19772C5,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1056,528), //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
    3, //immediately_derived
  0, 1},
  {&cd_S19772C4,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1152,580), //bcp->offset
    -1, //bcp->virtual_function_table_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_S8033C7,    ABISELECT(1648,840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19772C5,    ABISELECT(1648,840), //bcp->offset
    31, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(1152,580), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C7,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19772C10,    ABISELECT(1792,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19772C11,    ABISELECT(1952,1004), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19772C9,    ABISELECT(1792,916), //bcp->offset
    36, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8033C4,    ABISELECT(2000,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19772C12,    ABISELECT(2096,1108), //bcp->offset
    52, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C3[];
extern void _ZN8S19772C3D1Ev();
extern void _ZN8S19772C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C3D1Ev,_ZThn396_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn800_N8S19772C3D0Ev,_ZThn396_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1056_N8S19772C3D1Ev,_ZThn528_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1056_N8S19772C3D0Ev,_ZThn528_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1152_N8S19772C3D1Ev,_ZThn580_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1152_N8S19772C3D0Ev,_ZThn580_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1648_N8S19772C3D1Ev,_ZThn840_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1648_N8S19772C3D0Ev,_ZThn840_N8S19772C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1792_N8S19772C3D1Ev,_ZThn916_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1792_N8S19772C3D0Ev,_ZThn916_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1952_N8S19772C3D1Ev,_ZThn1004_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1952_N8S19772C3D0Ev,_ZThn1004_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C3[] = {
  ABISELECT(2096,1108),
  ABISELECT(2000,1032),
  ABISELECT(1952,1004),
  ABISELECT(1792,916),
  ABISELECT(1648,840),
  ABISELECT(1152,580),
  ABISELECT(1056,528),
  ABISELECT(800,396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN8S19772C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C3D0Ev,
  ABISELECT(-800,-396),
  ABISELECT(256,132),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  ABISELECT(-1056,-528),
  ABISELECT(-1056,-528),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
  0,
  ABISELECT(-1152,-580),
  ABISELECT(496,260),
  ABISELECT(-1152,-580),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-1648,-840),
  ABISELECT(-1648,-840),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
  ABISELECT(-1792,-916),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-1792,-916),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev),
  ABISELECT(-1952,-1004),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1952,-1004),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev),
  0,
  ABISELECT(-2096,-1108),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19772C3[];
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C3[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C4__8S19772C3[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C3[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C3[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C3[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__8S19772C3[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__8S19772C3[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__8S19772C3[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__8S19772C3[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C3[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C3[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C3[] = {
  {&(_ZTV8S19772C3[10]),  10,56},
  {&(_ZTV8S19772C3[16]),  16,56},
  {&(_ZTV8S19772C3[21]),  21,56},
  {&(_ZTV8S19772C3[28]),  28,56},
  {&(_ZTV8S19772C3[34]),  34,56},
  {&(_ZTV8S19772C3[42]),  42,56},
  {&(_ZTV8S19772C3[49]),  49,56},
  {&(_ZTV8S19772C3[55]),  55,56},
  {&(_tg__ZTV8S19772C4__8S19772C3[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19772C4__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C3[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C3[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__8S19772C3[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C3[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__8S19772C3[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__8S19772C3[5]),  5,8},
  {&(_tg__ZTV9S19772C11__8S19772C3[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C3[];
extern  VTBL_ENTRY _ZTV8S19772C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C3[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19772C3D0Ev,_ZThn1004_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N8S19772C3D1Ev,_ZThn1004_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19772C3D0Ev,_ZThn916_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1792_N8S19772C3D1Ev,_ZThn916_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19772C3D0Ev,_ZThn840_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19772C3D0Ev,_ZThn528_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S19772C3D1Ev,_ZThn840_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S19772C3D1Ev,_ZThn528_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19772C3D0Ev,_ZThn580_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C3D0Ev,_ZThn396_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N8S19772C3D1Ev,_ZThn580_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19772C3D1Ev,_ZThn396_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C3 = {  "S19772C3", // class name
  bases_S19772C3, 14,
  &(vtc_S19772C3[0]), // expected_vtbl_contents
  &(vtt_S19772C3[0]), // expected_vtt_contents
  ABISELECT(2288,1204), // object size
  NSPAIRA(_ZTI8S19772C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19772C3),56, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C3),21, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19772C1  : virtual S8033C4 , S19772C3 , S19772C9 , S19772C12 {
  int s19772c1f0;
  ~S19772C1(); // tgen
  S19772C1(); // tgen
};
//SIG(1 S19772C1) C1{ VBC2{ m Fp[3] FL[8]} BC3{ VBC4{ BC5{ BC6{ vd m Fc Fc:0 Fl[8] FD} Fp FC7{} Fp FD} VBC6 vd FC6 Fp} VBC8{ BC6 VBC5 vd v1 Fi Fc Fp Fi Fp[2] FC4} VBC9{ BC10{ BC6 VBC8 vd Fp FL Fl Fc Fp Fi} VBC11{ VBC5 v2 Fc Fs FD Fp[2]} vd Fc FL:35} VBC2 VBC12{ v3 FD Fp FC6 FL FD Fi} vd Fp FC12[3] FC12 Fc} BC9 BC12 Fi}


S19772C1 ::~S19772C1(){ note_dtor("S19772C1", this);} // tgen
S19772C1 ::S19772C1(){ note_ctor("S19772C1", this);} // tgen

static void Test_S19772C1()
{
  extern Class_Descriptor cd_S19772C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,349)];
    init_test(&cd_S19772C1, buf);
    S19772C1 *dp, &lv = *(dp=new (buf) S19772C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,1392), "sizeof(S19772C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19772C1)");
    check_base_class_offset(lv, (S8033C4*), ABISELECT(1144,584), "S19772C1");
    check_base_class_offset(lv, (S8033C4*)(S19772C3*), ABISELECT(1144,584), "S19772C1");
    check_base_class_offset(lv, (S8033C7*)(S19772C5*)(S19772C4*), ABISELECT(1232,660), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C4*), ABISELECT(1232,660), "S19772C1");
    /*is_ambiguous_... S19772C4::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C4*), ABISELECT(1488,792), "S19772C1");
    check_base_class_offset(lv, (S19772C4*)(S19772C3*), ABISELECT(1232,660), "S19772C1");
    /*is_ambiguous_... S19772C8::S8033C7 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C8*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C5 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C5*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C8*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C5*)(S19772C11*), ABISELECT(2080,1104), "S19772C1");
    check_base_class_offset(lv, (S19772C8*)(S19772C3*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C8*)(S19772C10*)(S19772C9*), ABISELECT(1584,844), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(2224,1180), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(2224,1180), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(2384,1268), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C11*)(S19772C9*), ABISELECT(2384,1268), "S19772C1");
    check_base_class_offset(lv, (S19772C9*)(S19772C3*), ABISELECT(2224,1180), "S19772C1");
    check_base_class_offset(lv, (S19772C12*)(S19772C3*), ABISELECT(2432,1296), "S19772C1");
    check_base_class_offset(lv, (S19772C3*), 0, "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S8033C7*)(S19772C10*)(S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C10*)(S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C9 */ AMB_check_base_class_offset(lv, (S19772C9*), ABISELECT(800,396), "S19772C1");
    /*is_ambiguous_... S19772C1::S19772C12 */ AMB_check_base_class_offset(lv, (S19772C12*), ABISELECT(960,484), "S19772C1");
    check_field_offset(lv, s19772c1f0, ABISELECT(1140,580), "S19772C1.s19772c1f0");
    test_class_info(&lv, &cd_S19772C1);
    dp->~S19772C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19772C1(Test_S19772C1, "S19772C1", ABISELECT(2624,1392));

#else // __cplusplus

extern void _ZN8S19772C1C1Ev();
extern void _ZN8S19772C1D1Ev();
Name_Map name_map_S19772C1[] = {
  NSPAIR(_ZN8S19772C1C1Ev),
  NSPAIR(_ZN8S19772C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C4;
extern VTBL_ENTRY _ZTI7S8033C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C4;
extern VTBL_ENTRY _ZTI8S19772C4[];
extern  VTBL_ENTRY _ZTV8S19772C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C4[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C5;
extern VTBL_ENTRY _ZTI8S19772C5[];
extern  VTBL_ENTRY _ZTV8S19772C5[];
extern Class_Descriptor cd_S19772C8;
extern VTBL_ENTRY _ZTI8S19772C8[];
extern  VTBL_ENTRY _ZTV8S19772C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C8[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C11;
extern VTBL_ENTRY _ZTI9S19772C11[];
extern  VTBL_ENTRY _ZTV9S19772C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C11[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
extern Class_Descriptor cd_S19772C3;
extern VTBL_ENTRY _ZTI8S19772C3[];
extern  VTBL_ENTRY _ZTV8S19772C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C3[];
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19772C10;
extern VTBL_ENTRY _ZTI9S19772C10[];
extern  VTBL_ENTRY _ZTV9S19772C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19772C10[];
extern Class_Descriptor cd_S19772C9;
extern VTBL_ENTRY _ZTI8S19772C9[];
extern  VTBL_ENTRY _ZTV8S19772C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C9[];
extern Class_Descriptor cd_S19772C12;
extern VTBL_ENTRY _ZTI9S19772C12[];
extern  VTBL_ENTRY _ZTV9S19772C12[];
static Base_Class bases_S19772C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C4,    ABISELECT(1144,584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S8033C7,    ABISELECT(1232,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
    2, //immediately_derived
  0, 0},
  {&cd_S19772C5,    ABISELECT(1232,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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(1488,792), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19772C4,    ABISELECT(1232,660), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(1584,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8033C7,    ABISELECT(2080,1104), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19772C5,    ABISELECT(2080,1104), //bcp->offset
    41, //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19772C8,    ABISELECT(1584,844), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8033C7,    ABISELECT(2224,1180), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S19772C10,    ABISELECT(2224,1180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19772C11,    ABISELECT(2384,1268), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19772C9,    ABISELECT(2224,1180), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19772C12,    ABISELECT(2432,1296), //bcp->offset
    62, //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
    13, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19772C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8033C7,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19772C10,    ABISELECT(800,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19772C9,    ABISELECT(800,396), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19772C12,    ABISELECT(960,484), //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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19772C1[];
extern void _ZN8S19772C1D1Ev();
extern void _ZN8S19772C1D0Ev();
extern void ABISELECT(_ZThn800_N8S19772C1D1Ev,_ZThn396_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19772C1D0Ev,_ZThn396_N8S19772C1D0Ev)();
extern void _ZN9S19772C122v3Ev();
extern void ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C1D1Ev,_ZThn660_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C1D0Ev,_ZThn660_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C1D1Ev,_ZThn792_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C1D0Ev,_ZThn792_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C1D1Ev,_ZThn844_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C1D0Ev,_ZThn844_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C1D1Ev,_ZThn1104_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C1D0Ev,_ZThn1104_N8S19772C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C1D1Ev,_ZThn1180_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C1D0Ev,_ZThn1180_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C1D1Ev,_ZThn1268_N8S19772C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C1D0Ev,_ZThn1268_N8S19772C1D0Ev)() __attribute__((weak));
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY vtc_S19772C1[] = {
  ABISELECT(2432,1296),
  ABISELECT(1144,584),
  ABISELECT(2384,1268),
  ABISELECT(2224,1180),
  ABISELECT(2080,1104),
  ABISELECT(1584,844),
  ABISELECT(1488,792),
  ABISELECT(1232,660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN8S19772C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C1D0Ev,
  ABISELECT(1584,872),
  ABISELECT(1280,708),
  ABISELECT(784,448),
  ABISELECT(-800,-396),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19772C1D1Ev,_ZThn396_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S19772C1D0Ev,_ZThn396_N8S19772C1D0Ev),
  ABISELECT(-960,-484),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
  ABISELECT(-1232,-660),
  ABISELECT(256,132),
  ABISELECT(-1232,-660),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev),
  ABISELECT(-1488,-792),
  ABISELECT(-1488,-792),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev),
  0,
  ABISELECT(-1584,-844),
  ABISELECT(496,260),
  ABISELECT(-1584,-844),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
  ABISELECT(-2080,-1104),
  ABISELECT(-2080,-1104),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev),
  ABISELECT(-2224,-1180),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1180),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev),
  ABISELECT(-2384,-1268),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-2384,-1268),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev),
  0,
  ABISELECT(-2432,-1296),
  (VTBL_ENTRY)&(_ZTI8S19772C1[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern VTBL_ENTRY _ZTV8S19772C1[];
extern void _ZN8S19772C3D1Ev();
extern void _ZN8S19772C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C3__8S19772C1[] = {
  ABISELECT(2432,1296),
  ABISELECT(1144,584),
  ABISELECT(2384,1268),
  ABISELECT(2224,1180),
  ABISELECT(2080,1104),
  ABISELECT(1584,844),
  ABISELECT(1488,792),
  ABISELECT(1232,660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN8S19772C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C3D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C3D1Ev,_ZThn660_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19772C3D0Ev,_ZThn660_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C3__8S19772C1[] = {
  ABISELECT(-1232,-660),
  ABISELECT(256,132),
  ABISELECT(-1232,-660),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C3D1Ev,_ZThn792_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1488_N8S19772C3D0Ev,_ZThn792_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C3__8S19772C1[] = {
  ABISELECT(-1488,-792),
  ABISELECT(-1488,-792),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C3D1Ev,_ZThn844_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C3D0Ev,_ZThn844_N8S19772C3D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C3__8S19772C1[] = {
  0,
  ABISELECT(-1584,-844),
  ABISELECT(496,260),
  ABISELECT(-1584,-844),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C3D1Ev,_ZThn1104_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2080_N8S19772C3D0Ev,_ZThn1104_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__A1__8S19772C3__8S19772C1[] = {
  ABISELECT(-2080,-1104),
  ABISELECT(-2080,-1104),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C3D1Ev,_ZThn1180_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2224_N8S19772C3D0Ev,_ZThn1180_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C3__8S19772C1[] = {
  ABISELECT(-2224,-1180),
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  ABISELECT(-2224,-1180),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C3D1Ev,_ZThn1268_N8S19772C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev)();
extern void ABISELECT(_ZThn2384_N8S19772C3D0Ev,_ZThn1268_N8S19772C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C3__8S19772C1[] = {
  ABISELECT(-2384,-1268),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-2384,-1268),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev),
};
extern void _ZN9S19772C122v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C12__8S19772C3__8S19772C1[] = {
  0,
  ABISELECT(-2432,-1296),
  (VTBL_ENTRY)&(_ZTI8S19772C3[0]),
  (VTBL_ENTRY)&_ZN9S19772C122v3Ev,
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__A__8S19772C1[] = {
  ABISELECT(1584,872),
  ABISELECT(1280,708),
  ABISELECT(784,448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__A1__8S19772C1[] = {
  ABISELECT(1280,708),
  ABISELECT(784,448),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19772C10D1Ev,_ZThn448_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19772C10D0Ev,_ZThn448_N9S19772C10D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__A1__8S19772C1[] = {
  0,
  ABISELECT(-784,-448),
  ABISELECT(496,260),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZThn1280_N9S19772C10D1Ev,_ZThn708_N9S19772C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
extern void ABISELECT(_ZThn1280_N9S19772C10D0Ev,_ZThn708_N9S19772C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__A1__8S19772C1[] = {
  ABISELECT(-1280,-708),
  ABISELECT(-1280,-708),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19772C9D1Ev,_ZThn448_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19772C9D0Ev,_ZThn448_N8S19772C9D0Ev)() __attribute__((weak));
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__A__8S19772C1[] = {
  0,
  ABISELECT(-784,-448),
  ABISELECT(496,260),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn1280_N8S19772C9D1Ev,_ZThn708_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn1280_N8S19772C9D0Ev,_ZThn708_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__A__8S19772C1[] = {
  ABISELECT(-1280,-708),
  ABISELECT(-1280,-708),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C9D1Ev,_ZThn872_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn1584_N8S19772C9D0Ev,_ZThn872_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__A__8S19772C1[] = {
  ABISELECT(-1584,-872),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-1584,-872),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN8S19772C4D1Ev();
extern void _ZN8S19772C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C4__8S19772C1[] = {
  ABISELECT(256,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&_ZN8S19772C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8033C7__A1__8S19772C4__8S19772C1[] = {
  ABISELECT(-256,-132),
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI8S19772C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev),
};
extern void _ZN8S19772C8D1Ev();
extern void _ZN8S19772C8D0Ev();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C1[] = {
  ABISELECT(496,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&_ZN8S19772C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C8__8S19772C1[] = {
  ABISELECT(-496,-260),
  ABISELECT(-496,-260),
  (VTBL_ENTRY)&(_ZTI8S19772C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev),
};
extern void _ZN8S19772C9D1Ev();
extern void _ZN8S19772C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C9__8S19772C1[] = {
  ABISELECT(160,88),
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN8S19772C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19772C9D0Ev,
};
extern void _ZN9S19772C10D1Ev();
extern void _ZN9S19772C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C108S19772C9__8S19772C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-640,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&_ZN9S19772C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S19772C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev)();
extern void _ZN8S19772C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19772C8__8S19772C9__8S19772C1[] = {
  0,
  ABISELECT(640,336),
  ABISELECT(496,260),
  ABISELECT(640,336),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19772C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__8S19772C9__8S19772C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C9__8S19772C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-304,-164),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S19772C9[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev),
};
extern void _ZN9S19772C112v2Ev();
extern void _ZN9S19772C11D1Ev();
extern void _ZN9S19772C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19772C11__8S19772C1[] = {
  ABISELECT(-304,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&_ZN9S19772C112v2Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19772C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19772C5__9S19772C11__8S19772C1[] = {
  ABISELECT(304,164),
  ABISELECT(304,164),
  (VTBL_ENTRY)&(_ZTI9S19772C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D1Ev,_ZTv0_n12_N9S19772C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19772C11D0Ev,_ZTv0_n12_N9S19772C11D0Ev),
};
static  VTT_ENTRY vtt_S19772C1[] = {
  {&(_ZTV8S19772C1[10]),  10,66},
  {&(_tg__ZTV8S19772C3__8S19772C1[10]),  10,12},
  {&(_tg__ZTV8S19772C4__8S19772C3__8S19772C1[4]),  4,6},
  {&(_tg__ZTV7S8033C7__A1__8S19772C3__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C3__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__A1__8S19772C3__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C3__8S19772C1[6]),  6,8},
  {&(_tg__ZTV9S19772C11__8S19772C3__8S19772C1[5]),  5,8},
  {&(_tg__ZTV9S19772C12__8S19772C3__8S19772C1[3]),  3,4},
  {&(_tg__ZTV8S19772C9__A__8S19772C1[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__A1__8S19772C1[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__A1__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__A1__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__A__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__A__8S19772C1[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__A__8S19772C1[5]),  5,8},
  {&(_ZTV8S19772C1[26]),  26,66},
  {&(_ZTV8S19772C1[31]),  31,66},
  {&(_ZTV8S19772C1[38]),  38,66},
  {&(_ZTV8S19772C1[44]),  44,66},
  {&(_ZTV8S19772C1[52]),  52,66},
  {&(_ZTV8S19772C1[59]),  59,66},
  {&(_ZTV8S19772C1[65]),  65,66},
  {&(_ZTV8S19772C1[17]),  17,66},
  {&(_tg__ZTV8S19772C4__8S19772C1[3]),  3,5},
  {&(_tg__ZTV7S8033C7__A1__8S19772C4__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C1[3]),  3,6},
  {&(_tg__ZTV8S19772C5__8S19772C8__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C9__8S19772C1[5]),  5,7},
  {&(_tg__ZTV9S19772C108S19772C9__8S19772C1[4]),  4,6},
  {&(_tg__ZTV8S19772C8__9S19772C108S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__9S19772C108S19772C9__8S19772C1[3]),  3,5},
  {&(_tg__ZTV8S19772C8__8S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV8S19772C5__8S19772C9__8S19772C1[3]),  3,5},
  {&(_tg__ZTV9S19772C11__8S19772C9__8S19772C1[5]),  5,8},
  {&(_tg__ZTV9S19772C11__8S19772C1[3]),  3,6},
  {&(_tg__ZTV8S19772C5__9S19772C11__8S19772C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19772C1[];
extern  VTBL_ENTRY _ZTV8S19772C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19772C1[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D0Ev,_ZTv0_n12_N8S19772C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D0Ev,_ZThn260_N8S19772C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C8D1Ev,_ZTv0_n12_N8S19772C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19772C8D1Ev,_ZThn260_N8S19772C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D0Ev,_ZTv0_n12_N8S19772C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D0Ev,_ZThn132_N8S19772C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C4D1Ev,_ZTv0_n12_N8S19772C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19772C4D1Ev,_ZThn132_N8S19772C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D0Ev,_ZTv0_n20_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D0Ev,_ZThn88_N8S19772C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C9D0Ev,_ZThn872_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C9D1Ev,_ZTv0_n20_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19772C9D1Ev,_ZThn88_N8S19772C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C9D1Ev,_ZThn872_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D0Ev,_ZTv0_n12_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19772C9D0Ev,_ZThn708_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C9D1Ev,_ZTv0_n12_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N8S19772C9D1Ev,_ZThn708_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D0Ev,_ZTv0_n16_N8S19772C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19772C9D0Ev,_ZThn448_N8S19772C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C9D1Ev,_ZTv0_n16_N8S19772C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19772C9D1Ev,_ZThn448_N8S19772C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D0Ev,_ZTv0_n12_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19772C10D0Ev,_ZThn708_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19772C10D1Ev,_ZTv0_n12_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N9S19772C10D1Ev,_ZThn708_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D0Ev,_ZTv0_n16_N9S19772C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19772C10D0Ev,_ZThn448_N9S19772C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19772C10D1Ev,_ZTv0_n16_N9S19772C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19772C10D1Ev,_ZThn448_N9S19772C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D0Ev,_ZTv0_n20_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C3D0Ev,_ZThn1268_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C3D1Ev,_ZTv0_n20_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C3D1Ev,_ZThn1268_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D0Ev,_ZTv0_n24_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C3D0Ev,_ZThn1180_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C3D1Ev,_ZTv0_n24_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C3D1Ev,_ZThn1180_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D0Ev,_ZTv0_n12_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C3D0Ev,_ZThn1104_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C3D0Ev,_ZThn792_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C3D1Ev,_ZTv0_n12_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C3D1Ev,_ZThn1104_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C3D1Ev,_ZThn792_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D0Ev,_ZTv0_n16_N8S19772C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C3D0Ev,_ZThn844_N8S19772C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C3D0Ev,_ZThn660_N8S19772C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C3D1Ev,_ZTv0_n16_N8S19772C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C3D1Ev,_ZThn844_N8S19772C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C3D1Ev,_ZThn660_N8S19772C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C1D0Ev,_ZTv0_n20_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C1D0Ev,_ZThn1268_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19772C1D1Ev,_ZTv0_n20_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2384_N8S19772C1D1Ev,_ZThn1268_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C1D0Ev,_ZTv0_n24_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C1D0Ev,_ZThn1180_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19772C1D1Ev,_ZTv0_n24_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S19772C1D1Ev,_ZThn1180_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C1D0Ev,_ZTv0_n12_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C1D0Ev,_ZThn1104_N8S19772C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C1D0Ev,_ZThn792_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19772C1D1Ev,_ZTv0_n12_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S19772C1D1Ev,_ZThn1104_N8S19772C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S19772C1D1Ev,_ZThn792_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C1D0Ev,_ZTv0_n16_N8S19772C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C1D0Ev,_ZThn844_N8S19772C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C1D0Ev,_ZThn660_N8S19772C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19772C1D1Ev,_ZTv0_n16_N8S19772C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N8S19772C1D1Ev,_ZThn844_N8S19772C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19772C1D1Ev,_ZThn660_N8S19772C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19772C1 = {  "S19772C1", // class name
  bases_S19772C1, 19,
  &(vtc_S19772C1[0]), // expected_vtbl_contents
  &(vtt_S19772C1[0]), // expected_vtt_contents
  ABISELECT(2624,1392), // object size
  NSPAIRA(_ZTI8S19772C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19772C1),66, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19772C1),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C8  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S21120C8(); // tgen
  S21120C8(); // tgen
};
//SIG(-1 S21120C8) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S21120C8 ::~S21120C8(){ note_dtor("S21120C8", this);} // tgen
S21120C8 ::S21120C8(){ note_ctor("S21120C8", this);} // tgen

static void Test_S21120C8()
{
  extern Class_Descriptor cd_S21120C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21120C8, buf);
    S21120C8 *dp, &lv = *(dp=new (buf) S21120C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21120C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C8)");
    check_base_class_offset(lv, (S7856C24*), 0, "S21120C8");
    check_base_class_offset(lv, (S7856C15*), 0, "S21120C8");
    check_base_class_offset(lv, (S7856C12*), 0, "S21120C8");
    test_class_info(&lv, &cd_S21120C8);
    dp->~S21120C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C8(Test_S21120C8, "S21120C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21120C8C1Ev();
extern void _ZN8S21120C8D1Ev();
Name_Map name_map_S21120C8[] = {
  NSPAIR(_ZN8S21120C8C1Ev),
  NSPAIR(_ZN8S21120C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S21120C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S21120C8[];
static  VTBL_ENTRY vtc_S21120C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern VTBL_ENTRY _ZTV8S21120C8[];
static  VTT_ENTRY vtt_S21120C8[] = {
  {&(_ZTV8S21120C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
Class_Descriptor cd_S21120C8 = {  "S21120C8", // class name
  bases_S21120C8, 3,
  &(vtc_S21120C8[0]), // expected_vtbl_contents
  &(vtt_S21120C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21120C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C8),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C8),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  S21120C7  : S7856C24 , virtual S21120C8 , virtual S7856C15 {
  ~S21120C7(); // tgen
  S21120C7(); // tgen
};
//SIG(-1 S21120C7) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S21120C7 ::~S21120C7(){ note_dtor("S21120C7", this);} // tgen
S21120C7 ::S21120C7(){ note_ctor("S21120C7", this);} // tgen

static void Test_S21120C7()
{
  extern Class_Descriptor cd_S21120C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21120C7, buf);
    S21120C7 *dp, &lv = *(dp=new (buf) S21120C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21120C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C7)");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C7");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*), ABISELECT(8,4), "S21120C7");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C7");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C7");
    check_base_class_offset(lv, (S21120C8*), 0, "S21120C7");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C7");
    test_class_info(&lv, &cd_S21120C7);
    dp->~S21120C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C7(Test_S21120C7, "S21120C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21120C7C1Ev();
extern void _ZN8S21120C7D1Ev();
Name_Map name_map_S21120C7[] = {
  NSPAIR(_ZN8S21120C7C1Ev),
  NSPAIR(_ZN8S21120C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S21120C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    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},
  {&cd_S7856C15,    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 _ZTI8S21120C7[];
static  VTBL_ENTRY vtc_S21120C7[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern VTBL_ENTRY _ZTV8S21120C7[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C7[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C7[] = {
  {&(_ZTV8S21120C7[6]),  6,6},
  {&(_ZTV8S21120C7[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
Class_Descriptor cd_S21120C7 = {  "S21120C7", // class name
  bases_S21120C7, 6,
  &(vtc_S21120C7[0]), // expected_vtbl_contents
  &(vtt_S21120C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21120C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C7),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C7),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  S21120C10  : S7856C15 , virtual S7856C24 , virtual S7856C12 , S21120C8 , virtual S21120C7 {
  virtual  ~S21120C10(); // _ZN9S21120C10D2Ev
  S21120C10(); // tgen
};
//SIG(-1 S21120C10) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S21120C10 ::~S21120C10(){ note_dtor("S21120C10", this);}
S21120C10 ::S21120C10(){ note_ctor("S21120C10", this);} // tgen

static void Test_S21120C10()
{
  extern Class_Descriptor cd_S21120C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21120C10, buf);
    S21120C10 *dp, &lv = *(dp=new (buf) S21120C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21120C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C10)");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C10");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C10");
    check_base_class_offset(lv, (S7856C12*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*), 0, "S21120C10");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C10");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(16,8), "S21120C10");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(16,8), "S21120C10");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(24,12), "S21120C10");
    check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C10");
    test_class_info(&lv, &cd_S21120C10);
    dp->~S21120C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C10(Test_S21120C10, "S21120C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S21120C10C1Ev();
extern void _ZN9S21120C10D2Ev();
Name_Map name_map_S21120C10[] = {
  NSPAIR(_ZN9S21120C10C1Ev),
  NSPAIR(_ZN9S21120C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
static Base_Class bases_S21120C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    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_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C10[];
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY vtc_S21120C10[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern VTBL_ENTRY _ZTV9S21120C10[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__A__9S21120C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__A1__9S21120C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C10[] = {
  {&(_ZTV9S21120C10[7]),  7,15},
  {&(_tg__ZTV8S21120C8__A__9S21120C10[4]),  4,4},
  {&(_ZTV9S21120C10[15]),  15,15},
  {&(_ZTV9S21120C10[15]),  15,15},
  {&(_tg__ZTV8S21120C7__9S21120C10[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10[6]),  6,6},
  {&(_tg__ZTV8S21120C8__A1__9S21120C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
Class_Descriptor cd_S21120C10 = {  "S21120C10", // class name
  bases_S21120C10, 10,
  &(vtc_S21120C10[0]), // expected_vtbl_contents
  &(vtt_S21120C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S21120C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21120C10),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C10),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  S21120C4  : virtual S7856C24 , virtual S7856C15 , virtual S21120C7 , S7856C12 , S21120C10 {
  virtual  ~S21120C4(); // _ZN8S21120C4D2Ev
  S21120C4(); // tgen
};
//SIG(-1 S21120C4) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S21120C4 ::~S21120C4(){ note_dtor("S21120C4", this);}
S21120C4 ::S21120C4(){ note_ctor("S21120C4", this);} // tgen

static void Test_S21120C4()
{
  extern Class_Descriptor cd_S21120C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21120C4, buf);
    S21120C4 *dp, &lv = *(dp=new (buf) S21120C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21120C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C4)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(9,5), "S21120C4");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(9,5), "S21120C4");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(24,12), "S21120C4");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(24,12), "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C4");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(16,8), "S21120C4");
    check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C4");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(16,8), "S21120C4");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(8,4), "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), 0, "S21120C4");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), 0, "S21120C4");
    check_base_class_offset(lv, (S21120C10*), 0, "S21120C4");
    test_class_info(&lv, &cd_S21120C4);
    dp->~S21120C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C4(Test_S21120C4, "S21120C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21120C4C1Ev();
extern void _ZN8S21120C4D2Ev();
Name_Map name_map_S21120C4[] = {
  NSPAIR(_ZN8S21120C4C1Ev),
  NSPAIR(_ZN8S21120C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
static Base_Class bases_S21120C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    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
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C4[];
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY vtc_S21120C4[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
extern VTBL_ENTRY _ZTV8S21120C4[];
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__8S21120C4[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A1__8S21120C4[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__8S21120C4[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C4[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C4[] = {
  {&(_ZTV8S21120C4[7]),  7,15},
  {&(_tg__ZTV9S21120C10__8S21120C4[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A1__8S21120C4[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__8S21120C4[6]),  6,6},
  {&(_ZTV8S21120C4[15]),  15,15},
  {&(_ZTV8S21120C4[15]),  15,15},
  {&(_tg__ZTV8S21120C7__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C4[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
Class_Descriptor cd_S21120C4 = {  "S21120C4", // class name
  bases_S21120C4, 12,
  &(vtc_S21120C4[0]), // expected_vtbl_contents
  &(vtt_S21120C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21120C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21120C4),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C4),10, //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  S21120C11  : S7856C12 , S7856C15 , S21120C8 {
  int s21120c11f0;
  ~S21120C11(); // tgen
  S21120C11(); // tgen
};
//SIG(-1 S21120C11) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m} BC3 VBC2} Fi}


S21120C11 ::~S21120C11(){ note_dtor("S21120C11", this);} // tgen
S21120C11 ::S21120C11(){ note_ctor("S21120C11", this);} // tgen

static void Test_S21120C11()
{
  extern Class_Descriptor cd_S21120C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21120C11, buf);
    S21120C11 *dp, &lv = *(dp=new (buf) S21120C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21120C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C11)");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C11");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S21120C11");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C11");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C11");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(12,8), "S21120C11");
    check_base_class_offset(lv, (S21120C8*), 0, "S21120C11");
    check_field_offset(lv, s21120c11f0, ABISELECT(8,4), "S21120C11.s21120c11f0");
    test_class_info(&lv, &cd_S21120C11);
    dp->~S21120C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C11(Test_S21120C11, "S21120C11", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S21120C11C1Ev();
extern void _ZN9S21120C11D1Ev();
Name_Map name_map_S21120C11[] = {
  NSPAIR(_ZN9S21120C11C1Ev),
  NSPAIR(_ZN9S21120C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
static Base_Class bases_S21120C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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, 1},
  {&cd_S21120C8,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C11[];
static  VTBL_ENTRY vtc_S21120C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
extern VTBL_ENTRY _ZTV9S21120C11[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__9S21120C11[] = {
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C11[] = {
  {&(_ZTV9S21120C11[4]),  4,4},
  {&(_tg__ZTV8S21120C8__9S21120C11[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
Class_Descriptor cd_S21120C11 = {  "S21120C11", // class name
  bases_S21120C11, 6,
  &(vtc_S21120C11[0]), // expected_vtbl_contents
  &(vtt_S21120C11[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S21120C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21120C11),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C11),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  S21120C3  : virtual S21120C4 , virtual S21120C11 , virtual S21120C10 {
  int s21120c3f0[2];
  virtual  ~S21120C3(); // _ZN8S21120C3D2Ev
  S21120C3(); // tgen
};
//SIG(-1 S21120C3) C1{ VBC2{ VBC3{ m} VBC4{ m} VBC5{ BC3 VBC6{ VBC3 BC4 VBC7{ m}} VBC4} BC7 BC8{ BC4 VBC3 VBC7 BC6 VBC5 vd} vd} VBC9{ BC7 BC4 BC6 Fi} VBC8 vd Fi[2]}


 S21120C3 ::~S21120C3(){ note_dtor("S21120C3", this);}
S21120C3 ::S21120C3(){ note_ctor("S21120C3", this);} // tgen

static void Test_S21120C3()
{
  extern Class_Descriptor cd_S21120C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21120C3, buf);
    S21120C3 *dp, &lv = *(dp=new (buf) S21120C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21120C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C3)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(25,17), "S21120C3");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C3");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), 0, "S21120C3");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), 0, "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), 0, "S21120C3");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(24,16), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(16,12), "S21120C3");
    check_base_class_offset(lv, (S21120C4*), ABISELECT(16,12), "S21120C3");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(40,24), "S21120C3");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(32,20), "S21120C3");
    check_base_class_offset(lv, (S21120C11*), ABISELECT(32,20), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(56,32), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(48,28), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(48,28), "S21120C3");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*), ABISELECT(48,28), "S21120C3");
    check_field_offset(lv, s21120c3f0, ABISELECT(8,4), "S21120C3.s21120c3f0");
    test_class_info(&lv, &cd_S21120C3);
    dp->~S21120C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C3(Test_S21120C3, "S21120C3", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21120C3C1Ev();
extern void _ZN8S21120C3D2Ev();
Name_Map name_map_S21120C3[] = {
  NSPAIR(_ZN8S21120C3C1Ev),
  NSPAIR(_ZN8S21120C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
static Base_Class bases_S21120C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(32,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C3[];
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C3[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C3[];
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C3[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C3[] = {
  0,
  ABISELECT(25,17),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[] = {
  ABISELECT(25,17),
  0,
  0,
  ABISELECT(25,17),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTT_ENTRY vtt_S21120C3[] = {
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[20]),  20,36},
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[10]),  10,36},
  {&(_ZTV8S21120C3[26]),  26,36},
  {&(_ZTV8S21120C3[34]),  34,36},
  {&(_tg__ZTV8S21120C4__8S21120C3[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C3[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C3[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C3[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C3[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C3[6]),  6,6},
};
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C3 = {  "S21120C3", // class name
  bases_S21120C3, 22,
  &(vtc_S21120C3[0]), // expected_vtbl_contents
  &(vtt_S21120C3[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21120C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21120C3),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C3),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C14  : virtual S7856C15 {
  ~S21120C14(); // tgen
  S21120C14(); // tgen
};
//SIG(-1 S21120C14) C1{ VBC2{ m}}


S21120C14 ::~S21120C14(){ note_dtor("S21120C14", this);} // tgen
S21120C14 ::S21120C14(){ note_ctor("S21120C14", this);} // tgen

static void Test_S21120C14()
{
  extern Class_Descriptor cd_S21120C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21120C14, buf);
    S21120C14 *dp, &lv = *(dp=new (buf) S21120C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21120C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C14)");
    check_base_class_offset(lv, (S7856C15*), 0, "S21120C14");
    test_class_info(&lv, &cd_S21120C14);
    dp->~S21120C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C14(Test_S21120C14, "S21120C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S21120C14C1Ev();
extern void _ZN9S21120C14D1Ev();
Name_Map name_map_S21120C14[] = {
  NSPAIR(_ZN9S21120C14C1Ev),
  NSPAIR(_ZN9S21120C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S21120C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S21120C14[];
static  VTBL_ENTRY vtc_S21120C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
extern VTBL_ENTRY _ZTV9S21120C14[];
static  VTT_ENTRY vtt_S21120C14[] = {
  {&(_ZTV9S21120C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
Class_Descriptor cd_S21120C14 = {  "S21120C14", // class name
  bases_S21120C14, 1,
  &(vtc_S21120C14[0]), // expected_vtbl_contents
  &(vtt_S21120C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S21120C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21120C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C14),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  S21120C13  : virtual S21120C8 , virtual S21120C14 , virtual S21120C11 , S7856C12 , virtual S21120C4 {
  int s21120c13f0;
  virtual  ~S21120C13(); // _ZN9S21120C13D2Ev
  S21120C13(); // tgen
};
//SIG(-1 S21120C13) C1{ VBC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ VBC4} VBC7{ BC5 BC4 BC2 Fi} BC5 VBC8{ VBC3 VBC4 VBC9{ BC3 VBC2 VBC4} BC5 BC10{ BC4 VBC3 VBC5 BC2 VBC9 vd} vd} vd Fi}


 S21120C13 ::~S21120C13(){ note_dtor("S21120C13", this);}
S21120C13 ::S21120C13(){ note_ctor("S21120C13", this);} // tgen

static void Test_S21120C13()
{
  extern Class_Descriptor cd_S21120C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21120C13, buf);
    S21120C13 *dp, &lv = *(dp=new (buf) S21120C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21120C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C13)");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C13");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(48,28), "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(12,8), "S21120C13");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(12,8), "S21120C13");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), ABISELECT(12,8), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(12,8), "S21120C13");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), 0, "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), 0, "S21120C13");
    /*is_ambiguous_... S21120C7::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), 0, "S21120C13");
    check_base_class_offset(lv, (S21120C14*), 0, "S21120C13");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(24,16), "S21120C13");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(16,12), "S21120C13");
    check_base_class_offset(lv, (S21120C11*), ABISELECT(16,12), "S21120C13");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), 0, "S21120C13");
    /*is_ambiguous_... S21120C7::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(48,28), "S21120C13");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C13");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(40,24), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(32,20), "S21120C13");
    check_base_class_offset(lv, (S21120C4*), ABISELECT(32,20), "S21120C13");
    check_field_offset(lv, s21120c13f0, ABISELECT(8,4), "S21120C13.s21120c13f0");
    test_class_info(&lv, &cd_S21120C13);
    dp->~S21120C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C13(Test_S21120C13, "S21120C13", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S21120C13C1Ev();
extern void _ZN9S21120C13D2Ev();
Name_Map name_map_S21120C13[] = {
  NSPAIR(_ZN9S21120C13C1Ev),
  NSPAIR(_ZN9S21120C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
static Base_Class bases_S21120C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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_S7856C12,    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
    3, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    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
    13, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C13[];
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S21120C13D1Ev,_ZThn20_N9S21120C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S21120C13D0Ev,_ZThn20_N9S21120C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C13[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  ABISELECT(48,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern VTBL_ENTRY _ZTV9S21120C13[];
static  VTBL_ENTRY _tg__ZTV8S21120C8__9S21120C13[] = {
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__9S21120C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A1__9S21120C13[] = {
  -4,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__9S21120C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A2__9S21120C13[] = {
  ABISELECT(-20,-12),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13[] = {
  ABISELECT(-48,-28),
  0,
  ABISELECT(-36,-20),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTT_ENTRY vtt_S21120C13[] = {
  {&(_ZTV9S21120C13[10]),  10,32},
  {&(_ZTV9S21120C13[32]),  32,32},
  {&(_ZTV9S21120C13[10]),  10,32},
  {&(_ZTV9S21120C13[16]),  16,32},
  {&(_ZTV9S21120C13[24]),  24,32},
  {&(_ZTV9S21120C13[32]),  32,32},
  {&(_tg__ZTV8S21120C8__9S21120C13[4]),  4,4},
  {&(_tg__ZTV9S21120C14__9S21120C13[3]),  3,3},
  {&(_tg__ZTV9S21120C11__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A1__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__9S21120C13[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A2__9S21120C13[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C13[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C13[6]),  6,6},
};
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21120C13D0Ev,_ZThn20_N9S21120C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21120C13D1Ev,_ZThn20_N9S21120C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C13 = {  "S21120C13", // class name
  bases_S21120C13, 20,
  &(vtc_S21120C13[0]), // expected_vtbl_contents
  &(vtt_S21120C13[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S21120C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21120C13),32, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C15  : virtual S21120C10 , S21120C11 , S21120C7 , S7856C12 {
  virtual  ~S21120C15(); // _ZN9S21120C15D2Ev
  S21120C15(); // tgen
};
//SIG(-1 S21120C15) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ m} BC6{ VBC4 BC3 VBC5} VBC7{ BC4 VBC6 VBC3} vd} BC8{ BC5 BC3 BC6 Fi} BC7 BC5 vd}


 S21120C15 ::~S21120C15(){ note_dtor("S21120C15", this);}
S21120C15 ::S21120C15(){ note_ctor("S21120C15", this);} // tgen

static void Test_S21120C15()
{
  extern Class_Descriptor cd_S21120C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S21120C15, buf);
    S21120C15 *dp, &lv = *(dp=new (buf) S21120C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S21120C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C15)");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(32,16), "S21120C15");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C15");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(33,17), "S21120C15");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(33,17), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(40,20), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(48,24), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(48,24), "S21120C15");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(40,20), "S21120C15");
    check_base_class_offset(lv, (S21120C10*), ABISELECT(24,12), "S21120C15");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), 0, "S21120C15");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(8,4), "S21120C15");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*), 0, "S21120C15");
    check_base_class_offset(lv, (S21120C11*), 0, "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(16,8), "S21120C15");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*), ABISELECT(16,8), "S21120C15");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(24,12), "S21120C15");
    test_class_info(&lv, &cd_S21120C15);
    dp->~S21120C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C15(Test_S21120C15, "S21120C15", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN9S21120C15C1Ev();
extern void _ZN9S21120C15D2Ev();
Name_Map name_map_S21120C15[] = {
  NSPAIR(_ZN9S21120C15C1Ev),
  NSPAIR(_ZN9S21120C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S21120C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    7, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    9, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21120C10,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21120C11,    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},
  {&cd_S7856C24,    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
    17, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C12,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C15[];
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21120C15D1Ev,_ZThn12_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21120C15D0Ev,_ZThn12_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C15[] = {
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern VTBL_ENTRY _ZTV9S21120C15[];
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C15[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__9S21120C15[] = {
  ABISELECT(33,17),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C15[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(17,9),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C7__A__9S21120C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C15[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__9S21120C15[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__9S21120C15[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C15[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__A1__9S21120C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTT_ENTRY vtt_S21120C15[] = {
  {&(_ZTV9S21120C15[8]),  8,32},
  {&(_tg__ZTV9S21120C11__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C7__A__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C7__A__9S21120C15[4]),  4,4},
  {&(_ZTV9S21120C15[24]),  24,32},
  {&(_ZTV9S21120C15[32]),  32,32},
  {&(_ZTV9S21120C15[32]),  32,32},
  {&(_ZTV9S21120C15[16]),  16,32},
  {&(_tg__ZTV9S21120C10__9S21120C15[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__9S21120C15[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15[6]),  6,6},
  {&(_tg__ZTV8S21120C8__A1__9S21120C15[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21120C15D0Ev,_ZThn12_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21120C15D1Ev,_ZThn12_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C15 = {  "S21120C15", // class name
  bases_S21120C15, 19,
  &(vtc_S21120C15[0]), // expected_vtbl_contents
  &(vtt_S21120C15[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI9S21120C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21120C15),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C15),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C2  : virtual S21120C3 , virtual S7856C9_nt , virtual S21120C13 , S21120C15 {
  virtual  ~S21120C2(); // _ZN8S21120C2D2Ev
  S21120C2(); // tgen
};
//SIG(-1 S21120C2) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC8{ m}} VBC5} BC8 BC9{ BC5 VBC4 VBC8 BC7 VBC6 vd} vd} VBC10{ BC8 BC5 BC7 Fi} VBC9 vd Fi[2]} VBC11{ m} VBC12{ VBC7 VBC13{ VBC5} VBC10 BC8 VBC3 vd Fi} BC14{ VBC9 BC10 BC6 BC8 vd} vd}


 S21120C2 ::~S21120C2(){ note_dtor("S21120C2", this);}
S21120C2 ::S21120C2(){ note_ctor("S21120C2", this);} // tgen

static void Test_S21120C2()
{
  extern Class_Descriptor cd_S21120C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S21120C2, buf);
    S21120C2 *dp, &lv = *(dp=new (buf) S21120C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S21120C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C2)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C2");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C2");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*)(S21120C15*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), ABISELECT(57,33), "S21120C2");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*)(S21120C15*), ABISELECT(57,33), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C13*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*)(S21120C15*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(32,16), "S21120C2");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(56,32), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C4*)(S21120C3*), ABISELECT(48,28), "S21120C2");
    check_base_class_offset(lv, (S21120C4*)(S21120C13*), ABISELECT(48,28), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(72,40), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C11 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(64,36), "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C3*), ABISELECT(64,36), "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C13*), ABISELECT(64,36), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(88,48), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(80,44), "S21120C2");
    /*is_ambiguous_... S21120C2::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(80,44), "S21120C2");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*)(S21120C3*), ABISELECT(80,44), "S21120C2");
    check_base_class_offset(lv, (S21120C10*)(S21120C15*), ABISELECT(80,44), "S21120C2");
    check_base_class_offset(lv, (S21120C3*), ABISELECT(32,16), "S21120C2");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C14*)(S21120C13*), ABISELECT(96,52), "S21120C2");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C13*), ABISELECT(96,52), "S21120C2");
    check_base_class_offset(lv, (S21120C13*), ABISELECT(96,52), "S21120C2");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*)(S21120C15*), ABISELECT(8,4), "S21120C2");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*)(S21120C15*), 0, "S21120C2");
    check_base_class_offset(lv, (S21120C11*)(S21120C15*), 0, "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*)(S21120C15*), ABISELECT(16,8), "S21120C2");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C15*), ABISELECT(16,8), "S21120C2");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C15*), ABISELECT(24,12), "S21120C2");
    check_base_class_offset(lv, (S21120C15*), 0, "S21120C2");
    test_class_info(&lv, &cd_S21120C2);
    dp->~S21120C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C2(Test_S21120C2, "S21120C2", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S21120C2C1Ev();
extern void _ZN8S21120C2D2Ev();
Name_Map name_map_S21120C2[] = {
  NSPAIR(_ZN8S21120C2C1Ev),
  NSPAIR(_ZN8S21120C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C3;
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C13;
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C15;
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
static Base_Class bases_S21120C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 1},
  {&cd_S21120C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    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
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(80,44), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21120C3,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21120C14,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(96,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
    26, //immediately_derived
  0, 0},
  {&cd_S21120C13,    ABISELECT(96,52), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21120C11,    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
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S21120C15,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C2[];
extern void _ZN8S21120C2D1Ev();
extern void _ZN8S21120C2D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C2[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&_ZN8S21120C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C2D0Ev,
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C2[];
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C15__8S21120C2[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C119S21120C15__A1__8S21120C2[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C119S21120C15__A4__8S21120C2[] = {
  ABISELECT(57,33),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C15__A1__8S21120C2[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C79S21120C15__A1__8S21120C2[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C15__8S21120C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C15__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C15__8S21120C2[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(41,25),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C2[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3__8S21120C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3__8S21120C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C2[] = {
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C2[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13__8S21120C2[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(25,17),
  ABISELECT(-32,-16),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13__8S21120C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-64,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13__8S21120C2[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__8S21120C2[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C2[] = {
  {&(_ZTV8S21120C2[14]),  14,72},
  {&(_tg__ZTV9S21120C15__8S21120C2[8]),  8,10},
  {&(_tg__ZTV9S21120C119S21120C15__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C119S21120C15__A4__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C79S21120C15__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C79S21120C15__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__9S21120C15__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C15__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C15__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__A__9S21120C15__8S21120C2[6]),  6,6},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[43]),  43,72},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[33]),  33,72},
  {&(_ZTV8S21120C2[49]),  49,72},
  {&(_ZTV8S21120C2[57]),  57,72},
  {&(_ZTV8S21120C2[70]),  70,72},
  {&(_ZTV8S21120C2[70]),  70,72},
  {&(_ZTV8S21120C2[22]),  22,72},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C4__8S21120C3__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C3__8S21120C2[10]),  10,12},
  {&(_tg__ZTV9S21120C11__8S21120C3__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C4__8S21120C2[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C2[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C2[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C2[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C2[10]),  10,12},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C2[10]),  10,12},
  {&(_tg__ZTV9S21120C11__9S21120C13__8S21120C2[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13__8S21120C2[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C2[6]),  6,6},
  {&(_tg__ZTV9S21120C14__8S21120C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21120C2[];
extern  VTBL_ENTRY _ZTV8S21120C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C2[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C2 = {  "S21120C2", // class name
  bases_S21120C2, 36,
  &(vtc_S21120C2[0]), // expected_vtbl_contents
  &(vtt_S21120C2[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S21120C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21120C2),72, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C2),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21120C16  : S7856C15 , S21120C14 {
  virtual  ~S21120C16(); // _ZN9S21120C16D2Ev
  S21120C16(); // tgen
};
//SIG(-1 S21120C16) C1{ BC2{ m} BC3{ VBC2} vd}


 S21120C16 ::~S21120C16(){ note_dtor("S21120C16", this);}
S21120C16 ::S21120C16(){ note_ctor("S21120C16", this);} // tgen

static void Test_S21120C16()
{
  extern Class_Descriptor cd_S21120C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21120C16, buf);
    S21120C16 *dp, &lv = *(dp=new (buf) S21120C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21120C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C16)");
    /*is_ambiguous_... S21120C16::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S21120C16");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(8,4), "S21120C16");
    check_base_class_offset(lv, (S21120C14*), 0, "S21120C16");
    test_class_info(&lv, &cd_S21120C16);
    dp->~S21120C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C16(Test_S21120C16, "S21120C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S21120C16C1Ev();
extern void _ZN9S21120C16D2Ev();
Name_Map name_map_S21120C16[] = {
  NSPAIR(_ZN9S21120C16C1Ev),
  NSPAIR(_ZN9S21120C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
static Base_Class bases_S21120C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    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, 1},
  {&cd_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21120C16[];
extern void _ZN9S21120C16D1Ev();
extern void _ZN9S21120C16D0Ev();
static  VTBL_ENTRY vtc_S21120C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C16[0]),
  (VTBL_ENTRY)&_ZN9S21120C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S21120C16[];
static  VTBL_ENTRY _tg__ZTV9S21120C14__9S21120C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C16[] = {
  {&(_ZTV9S21120C16[3]),  3,5},
  {&(_tg__ZTV9S21120C14__9S21120C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21120C16[];
extern  VTBL_ENTRY _ZTV9S21120C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C16[];
Class_Descriptor cd_S21120C16 = {  "S21120C16", // class name
  bases_S21120C16, 3,
  &(vtc_S21120C16[0]), // expected_vtbl_contents
  &(vtt_S21120C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S21120C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21120C16),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21120C16),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  S21120C1  : virtual S21120C2 , virtual S21120C16 {
  short s21120c1f0:16;
  virtual  ~S21120C1(); // _ZN8S21120C1D2Ev
  S21120C1(); // tgen
};
//SIG(1 S21120C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m} VBC6{ m} VBC7{ BC5 VBC8{ VBC5 BC6 VBC9{ m}} VBC6} BC9 BC10{ BC6 VBC5 VBC9 BC8 VBC7 vd} vd} VBC11{ BC9 BC6 BC8 Fi} VBC10 vd Fi[2]} VBC12{ m} VBC13{ VBC8 VBC14{ VBC6} VBC11 BC9 VBC4 vd Fi} BC15{ VBC10 BC11 BC7 BC9 vd} vd} VBC16{ BC6 BC14 vd} vd Fs:16}


 S21120C1 ::~S21120C1(){ note_dtor("S21120C1", this);}
S21120C1 ::S21120C1(){ note_ctor("S21120C1", this);} // tgen

static void Test_S21120C1()
{
  extern Class_Descriptor cd_S21120C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S21120C1, buf);
    S21120C1 *dp, &lv = *(dp=new (buf) S21120C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S21120C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21120C1)");
    /*is_ambiguous_... S21120C4::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C10*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C10*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C24*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), 0, "S21120C1");
    /*is_ambiguous_... S21120C4::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C4*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C14 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C14*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(73,41), "S21120C1");
    check_base_class_offset(lv, (S7856C15*)(S21120C14*)(S21120C16*), ABISELECT(73,41), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C12*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*)(S21120C4*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C10*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C10*), 0, "S21120C1");
    check_base_class_offset(lv, (S7856C12*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), 0, "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C13::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C13*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S21120C7*)(S21120C4*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S21120C7*)(S21120C10*)(S21120C4*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C10*), ABISELECT(48,24), "S21120C1");
    /*is_ambiguous_... S21120C4::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C10::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*)(S21120C4*), ABISELECT(72,40), "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C10::S21120C8 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C10*)(S21120C4*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C4*)(S21120C3*), ABISELECT(64,36), "S21120C1");
    check_base_class_offset(lv, (S21120C4*)(S21120C13*), ABISELECT(64,36), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*), ABISELECT(88,48), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C11 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C11*), ABISELECT(80,44), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C3*), ABISELECT(80,44), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C13*), ABISELECT(80,44), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C10*), ABISELECT(104,56), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C10*), ABISELECT(96,52), "S21120C1");
    /*is_ambiguous_... S21120C1::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C8*)(S21120C10*), ABISELECT(96,52), "S21120C1");
    /*is_ambiguous_... S21120C3::S21120C10 */ AMB_check_base_class_offset(lv, (S21120C10*)(S21120C3*), ABISELECT(96,52), "S21120C1");
    check_base_class_offset(lv, (S21120C10*)(S21120C15*)(S21120C2*), ABISELECT(96,52), "S21120C1");
    check_base_class_offset(lv, (S21120C3*)(S21120C2*), ABISELECT(48,24), "S21120C1");
    check_base_class_offset(lv, (S7856C9_nt*)(S21120C2*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C14*)(S21120C13*), ABISELECT(112,60), "S21120C1");
    /*is_ambiguous_... S21120C13::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C13*), ABISELECT(112,60), "S21120C1");
    check_base_class_offset(lv, (S21120C13*)(S21120C2*), ABISELECT(112,60), "S21120C1");
    /*is_ambiguous_... S21120C11::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C11::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(24,12), "S21120C1");
    check_base_class_offset(lv, (S7856C15*)(S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C8*)(S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C11*)(S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(32,16), "S21120C1");
    /*is_ambiguous_... S21120C15::S21120C7 */ AMB_check_base_class_offset(lv, (S21120C7*)(S21120C15*)(S21120C2*), ABISELECT(32,16), "S21120C1");
    /*is_ambiguous_... S21120C15::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S21120C15*)(S21120C2*), ABISELECT(40,20), "S21120C1");
    check_base_class_offset(lv, (S21120C15*)(S21120C2*), ABISELECT(16,8), "S21120C1");
    check_base_class_offset(lv, (S21120C2*), ABISELECT(16,8), "S21120C1");
    /*is_ambiguous_... S21120C16::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S21120C16*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C14*)(S21120C16*), 0, "S21120C1");
    check_base_class_offset(lv, (S21120C16*), 0, "S21120C1");
    set_bf_and_test(lv, s21120c1f0, ABISELECT(8,4), 0, 16, 1, "S21120C1");
    set_bf_and_test(lv, s21120c1f0, ABISELECT(8,4), 0, 16, hide_sll(1LL<<15), "S21120C1");
    test_class_info(&lv, &cd_S21120C1);
    dp->~S21120C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21120C1(Test_S21120C1, "S21120C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S21120C1C1Ev();
extern void _ZN8S21120C1D2Ev();
Name_Map name_map_S21120C1[] = {
  NSPAIR(_ZN8S21120C1C1Ev),
  NSPAIR(_ZN8S21120C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C4;
extern VTBL_ENTRY _ZTI8S21120C4[];
extern  VTBL_ENTRY _ZTV8S21120C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C4[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C10;
extern VTBL_ENTRY _ZTI9S21120C10[];
extern  VTBL_ENTRY _ZTV9S21120C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C10[];
extern Class_Descriptor cd_S21120C3;
extern VTBL_ENTRY _ZTI8S21120C3[];
extern  VTBL_ENTRY _ZTV8S21120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C13;
extern VTBL_ENTRY _ZTI9S21120C13[];
extern  VTBL_ENTRY _ZTV9S21120C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C13[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C8;
extern VTBL_ENTRY _ZTI8S21120C8[];
extern  VTBL_ENTRY _ZTV8S21120C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C8[];
extern Class_Descriptor cd_S21120C11;
extern VTBL_ENTRY _ZTI9S21120C11[];
extern  VTBL_ENTRY _ZTV9S21120C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C11[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S21120C7;
extern VTBL_ENTRY _ZTI8S21120C7[];
extern  VTBL_ENTRY _ZTV8S21120C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S21120C15;
extern VTBL_ENTRY _ZTI9S21120C15[];
extern  VTBL_ENTRY _ZTV9S21120C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C15[];
extern Class_Descriptor cd_S21120C2;
extern VTBL_ENTRY _ZTI8S21120C2[];
extern  VTBL_ENTRY _ZTV8S21120C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S21120C14;
extern VTBL_ENTRY _ZTI9S21120C14[];
extern  VTBL_ENTRY _ZTV9S21120C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C14[];
extern Class_Descriptor cd_S21120C16;
extern VTBL_ENTRY _ZTI9S21120C16[];
extern  VTBL_ENTRY _ZTV9S21120C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21120C16[];
static Base_Class bases_S21120C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C8,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21120C7,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21120C4,    ABISELECT(64,36), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(80,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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(80,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
    16, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(80,44), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7856C15,    ABISELECT(96,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
    20, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(96,52), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21120C10,    ABISELECT(96,52), //bcp->offset
    69, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21120C3,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S21120C14,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    26, //immediately_derived
  0, 0},
  {&cd_S21120C13,    ABISELECT(112,60), //bcp->offset
    79, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S7856C12,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    31, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    30, //immediately_derived
  0, 0},
  {&cd_S21120C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21120C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    33, //immediately_derived
  0, 0},
  {&cd_S21120C7,    ABISELECT(32,16), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    35, //immediately_derived
  0, 0},
  {&cd_S21120C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21120C2,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21120C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21120C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21120C1[];
extern void _ZN8S21120C1D1Ev();
extern void _ZN8S21120C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C1D1Ev,_ZThn8_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C1D0Ev,_ZThn8_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C1D1Ev,_ZThn24_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C1D0Ev,_ZThn24_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S21120C1D1Ev,_ZThn36_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S21120C1D0Ev,_ZThn36_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C1D1Ev,_ZThn52_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C1D0Ev,_ZThn52_N8S21120C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21120C1D1Ev,_ZThn60_N8S21120C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21120C1D0Ev,_ZThn60_N8S21120C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21120C1[] = {
  0,
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  ABISELECT(96,52),
  ABISELECT(80,44),
  0,
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  ABISELECT(64,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  0,
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&_ZN8S21120C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev),
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  ABISELECT(-96,-52),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21120C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21120C1[];
extern void _ZN8S21120C2D1Ev();
extern void _ZN8S21120C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C2__8S21120C1[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(-16,-8),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(32,16),
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&_ZN8S21120C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C2D0Ev,
};
extern void _ZN9S21120C15D1Ev();
extern void _ZN9S21120C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(57,33),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&_ZN9S21120C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C119S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C119S21120C158S21120C2__A4__8S21120C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C79S21120C158S21120C2__A1__8S21120C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__A__9S21120C158S21120C2__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21120C15[0]),
};
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C2__8S21120C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C2__8S21120C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C2__8S21120C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21120C79S21120C15__A1__8S21120C2__8S21120C1[] = {
  ABISELECT(41,25),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21120C2[0]),
};
extern void _ZN8S21120C3D1Ev();
extern void _ZN8S21120C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C3__8S21120C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  ABISELECT(16,12),
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&_ZN8S21120C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C3D0Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C3__8S21120C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C3__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C3__8S21120C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21120C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev),
};
extern void _ZN8S21120C4D1Ev();
extern void _ZN8S21120C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21120C4__8S21120C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
  (VTBL_ENTRY)&_ZN8S21120C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21120C4D0Ev,
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C108S21120C4__8S21120C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C4__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21120C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C8__8S21120C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C11__A2__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
extern void _ZN9S21120C10D1Ev();
extern void _ZN9S21120C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C10__A1__8S21120C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
  (VTBL_ENTRY)&_ZN9S21120C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C10D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C89S21120C10__A3__8S21120C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21120C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21120C10[0]),
};
extern void _ZN9S21120C13D1Ev();
extern void _ZN9S21120C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C13__8S21120C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-64,-36),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&_ZN9S21120C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21120C7__9S21120C13__8S21120C1[] = {
  ABISELECT(25,17),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21120C11__9S21120C13__8S21120C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
};
extern void ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21120C4__9S21120C13__8S21120C1[] = {
  ABISELECT(48,24),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S21120C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D1Ev,_ZTv0_n32_N9S21120C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21120C13D0Ev,_ZTv0_n32_N9S21120C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S21120C14__8S21120C1[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
extern void _ZN9S21120C16D1Ev();
extern void _ZN9S21120C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21120C16__8S21120C1[] = {
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C16[0]),
  (VTBL_ENTRY)&_ZN9S21120C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21120C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S21120C149S21120C16__A1__8S21120C1[] = {
  ABISELECT(73,41),
  0,
  (VTBL_ENTRY)&(_ZTI9S21120C14[0]),
};
static  VTT_ENTRY vtt_S21120C1[] = {
  {&(_ZTV8S21120C1[17]),  17,92},
  {&(_ZTV8S21120C1[34]),  34,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[63]),  63,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[53]),  53,92},
  {&(_ZTV8S21120C1[69]),  69,92},
  {&(_ZTV8S21120C1[77]),  77,92},
  {&(_ZTV8S21120C1[90]),  90,92},
  {&(_ZTV8S21120C1[90]),  90,92},
  {&(_ZTV8S21120C1[42]),  42,92},
  {&(_ZTV8S21120C1[17]),  17,92},
  {&(_tg__ZTV8S21120C2__8S21120C1[14]),  14,16},
  {&(_tg__ZTV9S21120C158S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV9S21120C119S21120C158S21120C2__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C119S21120C158S21120C2__A4__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C79S21120C158S21120C2__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C79S21120C158S21120C2__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__9S21120C158S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__A__9S21120C158S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C4__8S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C3__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV9S21120C11__8S21120C2__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C2__8S21120C1[8]),  8,10},
  {&(_tg__ZTV9S21120C13__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV9S21120C13__8S21120C2__8S21120C1[11]),  11,13},
  {&(_tg__ZTV8S21120C79S21120C15__A1__8S21120C2__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C4__8S21120C3__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C3__8S21120C1[10]),  10,12},
  {&(_tg__ZTV9S21120C11__8S21120C3__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C3__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C4__8S21120C1[7]),  7,9},
  {&(_tg__ZTV9S21120C108S21120C4__8S21120C1[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C108S21120C4__A1__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C108S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C4__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C8__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C11__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C89S21120C11__A2__8S21120C1[4]),  4,4},
  {&(_tg__ZTV9S21120C10__A1__8S21120C1[7]),  7,9},
  {&(_tg__ZTV8S21120C89S21120C10__A3__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV8S21120C7__9S21120C10__A1__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C1[10]),  10,12},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C13__8S21120C1[10]),  10,12},
  {&(_tg__ZTV9S21120C11__9S21120C13__8S21120C1[4]),  4,4},
  {&(_tg__ZTV8S21120C4__9S21120C13__8S21120C1[8]),  8,10},
  {&(_tg__ZTV8S21120C7__9S21120C13__8S21120C1[6]),  6,6},
  {&(_tg__ZTV9S21120C14__8S21120C1[3]),  3,3},
  {&(_tg__ZTV9S21120C16__8S21120C1[3]),  3,5},
  {&(_tg__ZTV9S21120C149S21120C16__A1__8S21120C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21120C1[];
extern  VTBL_ENTRY _ZTV8S21120C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21120C1[];
static VTBL_ENTRY alt_thunk_names181[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D0Ev,_ZTv0_n32_N8S21120C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D0Ev,_ZThn28_N8S21120C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D0Ev,_ZThn12_N8S21120C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C3D1Ev,_ZTv0_n32_N8S21120C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C3D1Ev,_ZThn28_N8S21120C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C3D1Ev,_ZThn12_N8S21120C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D0Ev,_ZTv0_n32_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D0Ev,_ZThn44_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D0Ev,_ZThn28_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C2D1Ev,_ZTv0_n32_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21120C2D1Ev,_ZThn44_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C2D1Ev,_ZThn28_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D0Ev,_ZTv0_n44_N8S21120C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D0Ev,_ZThn52_N8S21120C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D0Ev,_ZThn16_N8S21120C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C2D1Ev,_ZTv0_n44_N8S21120C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C2D1Ev,_ZThn52_N8S21120C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21120C2D1Ev,_ZThn16_N8S21120C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D0Ev,_ZTv0_n32_N9S21120C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D0Ev,_ZThn44_N9S21120C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21120C15D1Ev,_ZTv0_n32_N9S21120C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21120C15D1Ev,_ZThn44_N9S21120C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C1D0Ev,_ZTv0_n32_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C1D0Ev,_ZThn52_N8S21120C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21120C1D0Ev,_ZThn36_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21120C1D1Ev,_ZTv0_n32_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21120C1D1Ev,_ZThn52_N8S21120C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21120C1D1Ev,_ZThn36_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C1D0Ev,_ZTv0_n44_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21120C1D0Ev,_ZThn60_N8S21120C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C1D0Ev,_ZThn24_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21120C1D1Ev,_ZTv0_n44_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21120C1D1Ev,_ZThn60_N8S21120C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21120C1D1Ev,_ZThn24_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21120C1D0Ev,_ZTv0_n60_N8S21120C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C1D0Ev,_ZThn8_N8S21120C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21120C1D1Ev,_ZTv0_n60_N8S21120C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21120C1D1Ev,_ZThn8_N8S21120C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21120C1 = {  "S21120C1", // class name
  bases_S21120C1, 40,
  &(vtc_S21120C1[0]), // expected_vtbl_contents
  &(vtt_S21120C1[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S21120C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21120C1),92, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21120C1),62, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names181,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C2_nt  {
  virtual  ~S8611C2_nt(); // _ZN10S8611C2_ntD1Ev
  virtual void  v14(); // _ZN10S8611C2_nt3v14Ev
  virtual void  v15(); // _ZN10S8611C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8611C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8611C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8611C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8611C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8611C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8611C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8611C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8611C2_nt3v23Ev
  virtual void  v24(); // _ZN10S8611C2_nt3v24Ev
  virtual void  v25(); // _ZN10S8611C2_nt3v25Ev
  virtual void  v26(); // _ZN10S8611C2_nt3v26Ev
  S8611C2_nt(); // tgen
};
//SIG(-1 S8611C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S8611C2_nt ::~S8611C2_nt(){ note_dtor("S8611C2_nt", this);}
void  S8611C2_nt ::v14(){vfunc_called(this, "_ZN10S8611C2_nt3v14Ev");}
void  S8611C2_nt ::v15(){vfunc_called(this, "_ZN10S8611C2_nt3v15Ev");}
void  S8611C2_nt ::v16(){vfunc_called(this, "_ZN10S8611C2_nt3v16Ev");}
void  S8611C2_nt ::v17(){vfunc_called(this, "_ZN10S8611C2_nt3v17Ev");}
void  S8611C2_nt ::v18(){vfunc_called(this, "_ZN10S8611C2_nt3v18Ev");}
void  S8611C2_nt ::v19(){vfunc_called(this, "_ZN10S8611C2_nt3v19Ev");}
void  S8611C2_nt ::v20(){vfunc_called(this, "_ZN10S8611C2_nt3v20Ev");}
void  S8611C2_nt ::v21(){vfunc_called(this, "_ZN10S8611C2_nt3v21Ev");}
void  S8611C2_nt ::v22(){vfunc_called(this, "_ZN10S8611C2_nt3v22Ev");}
void  S8611C2_nt ::v23(){vfunc_called(this, "_ZN10S8611C2_nt3v23Ev");}
void  S8611C2_nt ::v24(){vfunc_called(this, "_ZN10S8611C2_nt3v24Ev");}
void  S8611C2_nt ::v25(){vfunc_called(this, "_ZN10S8611C2_nt3v25Ev");}
void  S8611C2_nt ::v26(){vfunc_called(this, "_ZN10S8611C2_nt3v26Ev");}
S8611C2_nt ::S8611C2_nt(){ note_ctor("S8611C2_nt", this);} // tgen

//skip512 S8611C2_nt

#else // __cplusplus

extern void _ZN10S8611C2_ntC1Ev();
extern void _ZN10S8611C2_ntD1Ev();
Name_Map name_map_S8611C2_nt[] = {
  NSPAIR(_ZN10S8611C2_ntC1Ev),
  NSPAIR(_ZN10S8611C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
extern void _ZN10S8611C2_ntD1Ev();
extern void _ZN10S8611C2_ntD0Ev();
extern void _ZN10S8611C2_nt3v14Ev();
extern void _ZN10S8611C2_nt3v15Ev();
extern void _ZN10S8611C2_nt3v16Ev();
extern void _ZN10S8611C2_nt3v17Ev();
extern void _ZN10S8611C2_nt3v18Ev();
extern void _ZN10S8611C2_nt3v19Ev();
extern void _ZN10S8611C2_nt3v20Ev();
extern void _ZN10S8611C2_nt3v21Ev();
extern void _ZN10S8611C2_nt3v22Ev();
extern void _ZN10S8611C2_nt3v23Ev();
extern void _ZN10S8611C2_nt3v24Ev();
extern void _ZN10S8611C2_nt3v25Ev();
extern void _ZN10S8611C2_nt3v26Ev();
static  VTBL_ENTRY vtc_S8611C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8611C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8611C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
VTBL_ENTRY *P__ZTI10S8611C2_nt = _ZTI10S8611C2_nt; 
extern  VTBL_ENTRY _ZTV10S8611C2_nt[];
Class_Descriptor cd_S8611C2_nt = {  "S8611C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8611C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8611C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8611C2_nt),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C4_nt  {
  int s8611c4f0[3];
  void  mf8611c4(); // _ZN10S8611C4_nt8mf8611c4Ev
};
//SIG(-1 S8611C4_nt) C1{ m Fi[3]}


void  S8611C4_nt ::mf8611c4(){}

//skip512 S8611C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8611C1  : S8611C2_nt {
  void *s8611c1f0;
  int s8611c1f1;
  void *s8611c1f2[2];
  ::S40C18_nt s8611c1f3;
  ::S40C18_nt s8611c1f4;
  ::S8611C4_nt s8611c1f5;
  ::S40C18_nt s8611c1f6;
  ::S40C18_nt s8611c1f7;
  ::S40C18_nt s8611c1f8;
  int s8611c1f9;
  void *s8611c1f10[2];
  int s8611c1f11;
  ::S40C82 s8611c1f12;
  int s8611c1f13[2];
  ::S40C81 s8611c1f14;
  void *s8611c1f15;
  ::S40C18_nt s8611c1f16;
  int s8611c1f17[3];
  virtual  ~S8611C1(); // _ZN7S8611C1D1Ev
  virtual void  v1(); // _ZN7S8611C12v1Ev
  virtual void  v2(); // _ZN7S8611C12v2Ev
  virtual void  v3(); // _ZN7S8611C12v3Ev
  virtual void  v4(); // _ZN7S8611C12v4Ev
  virtual void  v5(); // _ZN7S8611C12v5Ev
  virtual void  v6(); // _ZN7S8611C12v6Ev
  virtual void  v7(); // _ZN7S8611C12v7Ev
  virtual void  v8(); // _ZN7S8611C12v8Ev
  virtual void  v9(); // _ZN7S8611C12v9Ev
  virtual void  v10(); // _ZN7S8611C13v10Ev
  virtual void  v11(); // _ZN7S8611C13v11Ev
  virtual void  v12(); // _ZN7S8611C13v12Ev
  virtual void  v13(); // _ZN7S8611C13v13Ev
  S8611C1(); // tgen
};
//SIG(1 S8611C1) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp Fi Fp[2] FC3{ m Fi[3]} FC3 FC4{ m Fi[3]} FC3 FC3 FC3 Fi Fp[2] Fi FC5{ m FC3 FC3 Fc} Fi[2] FC6{ BC7{ m Fp Fi[2]}} Fp FC3 Fi[3]}


 S8611C1 ::~S8611C1(){ note_dtor("S8611C1", this);}
void  S8611C1 ::v1(){vfunc_called(this, "_ZN7S8611C12v1Ev");}
void  S8611C1 ::v2(){vfunc_called(this, "_ZN7S8611C12v2Ev");}
void  S8611C1 ::v3(){vfunc_called(this, "_ZN7S8611C12v3Ev");}
void  S8611C1 ::v4(){vfunc_called(this, "_ZN7S8611C12v4Ev");}
void  S8611C1 ::v5(){vfunc_called(this, "_ZN7S8611C12v5Ev");}
void  S8611C1 ::v6(){vfunc_called(this, "_ZN7S8611C12v6Ev");}
void  S8611C1 ::v7(){vfunc_called(this, "_ZN7S8611C12v7Ev");}
void  S8611C1 ::v8(){vfunc_called(this, "_ZN7S8611C12v8Ev");}
void  S8611C1 ::v9(){vfunc_called(this, "_ZN7S8611C12v9Ev");}
void  S8611C1 ::v10(){vfunc_called(this, "_ZN7S8611C13v10Ev");}
void  S8611C1 ::v11(){vfunc_called(this, "_ZN7S8611C13v11Ev");}
void  S8611C1 ::v12(){vfunc_called(this, "_ZN7S8611C13v12Ev");}
void  S8611C1 ::v13(){vfunc_called(this, "_ZN7S8611C13v13Ev");}
S8611C1 ::S8611C1(){ note_ctor("S8611C1", this);} // tgen

static void Test_S8611C1()
{
  extern Class_Descriptor cd_S8611C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,47)];
    init_test(&cd_S8611C1, buf);
    S8611C1 *dp, &lv = *(dp=new (buf) S8611C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,184), "sizeof(S8611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8611C1)");
    check_base_class_offset(lv, (S8611C2_nt*), 0, "S8611C1");
    check_field_offset(lv, s8611c1f0, ABISELECT(8,4), "S8611C1.s8611c1f0");
    check_field_offset(lv, s8611c1f1, ABISELECT(16,8), "S8611C1.s8611c1f1");
    check_field_offset(lv, s8611c1f2, ABISELECT(24,12), "S8611C1.s8611c1f2");
    check_field_offset(lv, s8611c1f3, ABISELECT(40,20), "S8611C1.s8611c1f3");
    check_field_offset(lv, s8611c1f4, ABISELECT(52,32), "S8611C1.s8611c1f4");
    check_field_offset(lv, s8611c1f5, ABISELECT(64,44), "S8611C1.s8611c1f5");
    check_field_offset(lv, s8611c1f6, ABISELECT(76,56), "S8611C1.s8611c1f6");
    check_field_offset(lv, s8611c1f7, ABISELECT(88,68), "S8611C1.s8611c1f7");
    check_field_offset(lv, s8611c1f8, ABISELECT(100,80), "S8611C1.s8611c1f8");
    check_field_offset(lv, s8611c1f9, ABISELECT(112,92), "S8611C1.s8611c1f9");
    check_field_offset(lv, s8611c1f10, ABISELECT(120,96), "S8611C1.s8611c1f10");
    check_field_offset(lv, s8611c1f11, ABISELECT(136,104), "S8611C1.s8611c1f11");
    check_field_offset(lv, s8611c1f12, ABISELECT(140,108), "S8611C1.s8611c1f12");
    check_field_offset(lv, s8611c1f13, ABISELECT(168,136), "S8611C1.s8611c1f13");
    check_field_offset(lv, s8611c1f14, ABISELECT(176,144), "S8611C1.s8611c1f14");
    check_field_offset(lv, s8611c1f15, ABISELECT(192,156), "S8611C1.s8611c1f15");
    check_field_offset(lv, s8611c1f16, ABISELECT(200,160), "S8611C1.s8611c1f16");
    check_field_offset(lv, s8611c1f17, ABISELECT(212,172), "S8611C1.s8611c1f17");
    test_class_info(&lv, &cd_S8611C1);
    dp->~S8611C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8611C1(Test_S8611C1, "S8611C1", ABISELECT(224,184));

#else // __cplusplus

extern void _ZN7S8611C1C1Ev();
extern void _ZN7S8611C1D1Ev();
Name_Map name_map_S8611C1[] = {
  NSPAIR(_ZN7S8611C1C1Ev),
  NSPAIR(_ZN7S8611C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8611C2_nt;
extern VTBL_ENTRY _ZTI10S8611C2_nt[];
extern  VTBL_ENTRY _ZTV10S8611C2_nt[];
static Base_Class bases_S8611C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8611C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8611C1[];
extern void _ZN7S8611C1D1Ev();
extern void _ZN7S8611C1D0Ev();
extern void _ZN10S8611C2_nt3v14Ev();
extern void _ZN10S8611C2_nt3v15Ev();
extern void _ZN10S8611C2_nt3v16Ev();
extern void _ZN10S8611C2_nt3v17Ev();
extern void _ZN10S8611C2_nt3v18Ev();
extern void _ZN10S8611C2_nt3v19Ev();
extern void _ZN10S8611C2_nt3v20Ev();
extern void _ZN10S8611C2_nt3v21Ev();
extern void _ZN10S8611C2_nt3v22Ev();
extern void _ZN10S8611C2_nt3v23Ev();
extern void _ZN10S8611C2_nt3v24Ev();
extern void _ZN10S8611C2_nt3v25Ev();
extern void _ZN10S8611C2_nt3v26Ev();
extern void _ZN7S8611C12v1Ev();
extern void _ZN7S8611C12v2Ev();
extern void _ZN7S8611C12v3Ev();
extern void _ZN7S8611C12v4Ev();
extern void _ZN7S8611C12v5Ev();
extern void _ZN7S8611C12v6Ev();
extern void _ZN7S8611C12v7Ev();
extern void _ZN7S8611C12v8Ev();
extern void _ZN7S8611C12v9Ev();
extern void _ZN7S8611C13v10Ev();
extern void _ZN7S8611C13v11Ev();
extern void _ZN7S8611C13v12Ev();
extern void _ZN7S8611C13v13Ev();
static  VTBL_ENTRY vtc_S8611C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8611C1[0]),
  (VTBL_ENTRY)&_ZN7S8611C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8611C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8611C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8611C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8611C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S8611C1[];
extern  VTBL_ENTRY _ZTV7S8611C1[];
Class_Descriptor cd_S8611C1 = {  "S8611C1", // class name
  bases_S8611C1, 1,
  &(vtc_S8611C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,184), // object size
  NSPAIRA(_ZTI7S8611C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8611C1),30, //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  S465C4_nt  : S7856C24 {
  virtual  ~S465C4_nt(); // _ZN9S465C4_ntD1Ev
  virtual void  v8(); // _ZN9S465C4_nt2v8Ev
  S465C4_nt(); // tgen
};
//SIG(-1 S465C4_nt) C1{ BC2{ m} vd v1}


 S465C4_nt ::~S465C4_nt(){ note_dtor("S465C4_nt", this);}
void  S465C4_nt ::v8(){vfunc_called(this, "_ZN9S465C4_nt2v8Ev");}
S465C4_nt ::S465C4_nt(){ note_ctor("S465C4_nt", this);} // tgen

//skip512 S465C4_nt

#else // __cplusplus

extern void _ZN9S465C4_ntC1Ev();
extern void _ZN9S465C4_ntD1Ev();
Name_Map name_map_S465C4_nt[] = {
  NSPAIR(_ZN9S465C4_ntC1Ev),
  NSPAIR(_ZN9S465C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S465C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S465C4_nt[];
extern void _ZN9S465C4_ntD1Ev();
extern void _ZN9S465C4_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
static  VTBL_ENTRY vtc_S465C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI9S465C4_nt[];
VTBL_ENTRY *P__ZTI9S465C4_nt = _ZTI9S465C4_nt; 
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
Class_Descriptor cd_S465C4_nt = {  "S465C4_nt", // class name
  bases_S465C4_nt, 1,
  &(vtc_S465C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S465C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C4_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  S465C3_nt  : S465C4_nt {
  char s465c3f0[112];
  virtual  ~S465C3_nt(); // _ZN9S465C3_ntD1Ev
  virtual void  v9(); // _ZN9S465C3_nt2v9Ev
  virtual void  v10(); // _ZN9S465C3_nt3v10Ev
  virtual void  v11(); // _ZN9S465C3_nt3v11Ev
  virtual void  v12(); // _ZN9S465C3_nt3v12Ev
  virtual void  v13(); // _ZN9S465C3_nt3v13Ev
  S465C3_nt(); // tgen
};
//SIG(-1 S465C3_nt) C1{ BC2{ BC3{ m} vd v6} vd v1 v2 v3 v4 v5 Fc[112]}


 S465C3_nt ::~S465C3_nt(){ note_dtor("S465C3_nt", this);}
void  S465C3_nt ::v9(){vfunc_called(this, "_ZN9S465C3_nt2v9Ev");}
void  S465C3_nt ::v10(){vfunc_called(this, "_ZN9S465C3_nt3v10Ev");}
void  S465C3_nt ::v11(){vfunc_called(this, "_ZN9S465C3_nt3v11Ev");}
void  S465C3_nt ::v12(){vfunc_called(this, "_ZN9S465C3_nt3v12Ev");}
void  S465C3_nt ::v13(){vfunc_called(this, "_ZN9S465C3_nt3v13Ev");}
S465C3_nt ::S465C3_nt(){ note_ctor("S465C3_nt", this);} // tgen

//skip512 S465C3_nt

#else // __cplusplus

extern void _ZN9S465C3_ntC1Ev();
extern void _ZN9S465C3_ntD1Ev();
Name_Map name_map_S465C3_nt[] = {
  NSPAIR(_ZN9S465C3_ntC1Ev),
  NSPAIR(_ZN9S465C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
static Base_Class bases_S465C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S465C3_nt[];
extern void _ZN9S465C3_ntD1Ev();
extern void _ZN9S465C3_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
static  VTBL_ENTRY vtc_S465C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI9S465C3_nt[];
VTBL_ENTRY *P__ZTI9S465C3_nt = _ZTI9S465C3_nt; 
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
Class_Descriptor cd_S465C3_nt = {  "S465C3_nt", // class name
  bases_S465C3_nt, 2,
  &(vtc_S465C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,116), // object size
  NSPAIRA(_ZTI9S465C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C3_nt),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  S465C2_nt  : S465C3_nt {
  void *s465c2f0[2];
  virtual  ~S465C2_nt(); // _ZN9S465C2_ntD1Ev
  virtual void  v14(); // _ZN9S465C2_nt3v14Ev
  virtual void  v15(); // _ZN9S465C2_nt3v15Ev
  virtual void  v16(); // _ZN9S465C2_nt3v16Ev
  virtual void  v17(); // _ZN9S465C2_nt3v17Ev
  virtual void  v18(); // _ZN9S465C2_nt3v18Ev
  virtual void  v19(); // _ZN9S465C2_nt3v19Ev
  virtual void  v20(); // _ZN9S465C2_nt3v20Ev
  virtual void  v21(); // _ZN9S465C2_nt3v21Ev
  virtual void  v22(); // _ZN9S465C2_nt3v22Ev
  virtual void  v23(); // _ZN9S465C2_nt3v23Ev
  virtual void  v24(); // _ZN9S465C2_nt3v24Ev
  virtual void  v25(); // _ZN9S465C2_nt3v25Ev
  virtual void  v26(); // _ZN9S465C2_nt3v26Ev
  virtual void  v27(); // _ZN9S465C2_nt3v27Ev
  virtual void  v28(); // _ZN9S465C2_nt3v28Ev
  virtual void  v29(); // _ZN9S465C2_nt3v29Ev
  virtual void  v30(); // _ZN9S465C2_nt3v30Ev
  S465C2_nt(); // tgen
};
//SIG(-1 S465C2_nt) C1{ BC2{ BC3{ BC4{ m} vd v18} vd v19 v20 v21 v22 v23 Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 Fp[2]}


 S465C2_nt ::~S465C2_nt(){ note_dtor("S465C2_nt", this);}
void  S465C2_nt ::v14(){vfunc_called(this, "_ZN9S465C2_nt3v14Ev");}
void  S465C2_nt ::v15(){vfunc_called(this, "_ZN9S465C2_nt3v15Ev");}
void  S465C2_nt ::v16(){vfunc_called(this, "_ZN9S465C2_nt3v16Ev");}
void  S465C2_nt ::v17(){vfunc_called(this, "_ZN9S465C2_nt3v17Ev");}
void  S465C2_nt ::v18(){vfunc_called(this, "_ZN9S465C2_nt3v18Ev");}
void  S465C2_nt ::v19(){vfunc_called(this, "_ZN9S465C2_nt3v19Ev");}
void  S465C2_nt ::v20(){vfunc_called(this, "_ZN9S465C2_nt3v20Ev");}
void  S465C2_nt ::v21(){vfunc_called(this, "_ZN9S465C2_nt3v21Ev");}
void  S465C2_nt ::v22(){vfunc_called(this, "_ZN9S465C2_nt3v22Ev");}
void  S465C2_nt ::v23(){vfunc_called(this, "_ZN9S465C2_nt3v23Ev");}
void  S465C2_nt ::v24(){vfunc_called(this, "_ZN9S465C2_nt3v24Ev");}
void  S465C2_nt ::v25(){vfunc_called(this, "_ZN9S465C2_nt3v25Ev");}
void  S465C2_nt ::v26(){vfunc_called(this, "_ZN9S465C2_nt3v26Ev");}
void  S465C2_nt ::v27(){vfunc_called(this, "_ZN9S465C2_nt3v27Ev");}
void  S465C2_nt ::v28(){vfunc_called(this, "_ZN9S465C2_nt3v28Ev");}
void  S465C2_nt ::v29(){vfunc_called(this, "_ZN9S465C2_nt3v29Ev");}
void  S465C2_nt ::v30(){vfunc_called(this, "_ZN9S465C2_nt3v30Ev");}
S465C2_nt ::S465C2_nt(){ note_ctor("S465C2_nt", this);} // tgen

//skip512 S465C2_nt

#else // __cplusplus

extern void _ZN9S465C2_ntC1Ev();
extern void _ZN9S465C2_ntD1Ev();
Name_Map name_map_S465C2_nt[] = {
  NSPAIR(_ZN9S465C2_ntC1Ev),
  NSPAIR(_ZN9S465C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
extern Class_Descriptor cd_S465C3_nt;
extern VTBL_ENTRY _ZTI9S465C3_nt[];
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
static Base_Class bases_S465C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S465C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S465C2_nt[];
extern void _ZN9S465C2_ntD1Ev();
extern void _ZN9S465C2_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
extern void _ZN9S465C2_nt3v14Ev();
extern void _ZN9S465C2_nt3v15Ev();
extern void _ZN9S465C2_nt3v16Ev();
extern void _ZN9S465C2_nt3v17Ev();
extern void _ZN9S465C2_nt3v18Ev();
extern void _ZN9S465C2_nt3v19Ev();
extern void _ZN9S465C2_nt3v20Ev();
extern void _ZN9S465C2_nt3v21Ev();
extern void _ZN9S465C2_nt3v22Ev();
extern void _ZN9S465C2_nt3v23Ev();
extern void _ZN9S465C2_nt3v24Ev();
extern void _ZN9S465C2_nt3v25Ev();
extern void _ZN9S465C2_nt3v26Ev();
extern void _ZN9S465C2_nt3v27Ev();
extern void _ZN9S465C2_nt3v28Ev();
extern void _ZN9S465C2_nt3v29Ev();
extern void _ZN9S465C2_nt3v30Ev();
static  VTBL_ENTRY vtc_S465C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI9S465C2_nt[];
VTBL_ENTRY *P__ZTI9S465C2_nt = _ZTI9S465C2_nt; 
extern  VTBL_ENTRY _ZTV9S465C2_nt[];
Class_Descriptor cd_S465C2_nt = {  "S465C2_nt", // class name
  bases_S465C2_nt, 3,
  &(vtc_S465C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,124), // object size
  NSPAIRA(_ZTI9S465C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S465C2_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C6_nt  : S465C4_nt {
  char s465c6f0[22];
  int s465c6f1;
  void *s465c6f2;
  char s465c6f3[56];
  void *s465c6f4;
  char s465c6f5[57];
  virtual  ~S465C6_nt(); // _ZN9S465C6_ntD1Ev
  virtual void  v31(); // _ZN9S465C6_nt3v31Ev
  S465C6_nt(); // tgen
};
//SIG(-1 S465C6_nt) C1{ BC2{ BC3{ m} vd v2} vd v1 Fc[22] Fi Fp Fc[56] Fp Fc[57]}


 S465C6_nt ::~S465C6_nt(){ note_dtor("S465C6_nt", this);}
void  S465C6_nt ::v31(){vfunc_called(this, "_ZN9S465C6_nt3v31Ev");}
S465C6_nt ::S465C6_nt(){ note_ctor("S465C6_nt", this);} // tgen

//skip512 S465C6_nt

#else // __cplusplus

extern void _ZN9S465C6_ntC1Ev();
extern void _ZN9S465C6_ntD1Ev();
Name_Map name_map_S465C6_nt[] = {
  NSPAIR(_ZN9S465C6_ntC1Ev),
  NSPAIR(_ZN9S465C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
static Base_Class bases_S465C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI9S465C6_nt[];
extern void _ZN9S465C6_ntD1Ev();
extern void _ZN9S465C6_ntD0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C6_nt3v31Ev();
static  VTBL_ENTRY vtc_S465C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S465C6_nt[0]),
  (VTBL_ENTRY)&_ZN9S465C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S465C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C6_nt3v31Ev,
};
extern VTBL_ENTRY _ZTI9S465C6_nt[];
VTBL_ENTRY *P__ZTI9S465C6_nt = _ZTI9S465C6_nt; 
extern  VTBL_ENTRY _ZTV9S465C6_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S465C1  : S465C2_nt {
  void *s465c1f0[3];
  int s465c1f1[2];
  ::S465C6_nt s465c1f2;
  int s465c1f3[3];
  void *s465c1f4;
  virtual  ~S465C1(); // _ZN6S465C1D1Ev
  virtual void  v1(); // _ZN6S465C12v1Ev
  virtual void  v2(); // _ZN6S465C12v2Ev
  virtual void  v3(); // _ZN6S465C12v3Ev
  virtual void  v4(); // _ZN6S465C12v4Ev
  virtual void  v5(); // _ZN6S465C12v5Ev
  virtual void  v6(); // _ZN6S465C12v6Ev
  virtual void  v7(); // _ZN6S465C12v7Ev
  S465C1(); // tgen
};
//SIG(1 S465C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v8} vd v9 v10 v11 v12 v13 Fc[112]} vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 Fp[3] Fi[2] FC6{ BC4 vd v31 Fc[22] Fi Fp Fc[56] Fp Fc[57]} Fi[3] Fp}


 S465C1 ::~S465C1(){ note_dtor("S465C1", this);}
void  S465C1 ::v1(){vfunc_called(this, "_ZN6S465C12v1Ev");}
void  S465C1 ::v2(){vfunc_called(this, "_ZN6S465C12v2Ev");}
void  S465C1 ::v3(){vfunc_called(this, "_ZN6S465C12v3Ev");}
void  S465C1 ::v4(){vfunc_called(this, "_ZN6S465C12v4Ev");}
void  S465C1 ::v5(){vfunc_called(this, "_ZN6S465C12v5Ev");}
void  S465C1 ::v6(){vfunc_called(this, "_ZN6S465C12v6Ev");}
void  S465C1 ::v7(){vfunc_called(this, "_ZN6S465C12v7Ev");}
S465C1 ::S465C1(){ note_ctor("S465C1", this);} // tgen

static void Test_S465C1()
{
  extern Class_Descriptor cd_S465C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,80)];
    init_test(&cd_S465C1, buf);
    S465C1 *dp, &lv = *(dp=new (buf) S465C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,316), "sizeof(S465C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S465C1)");
    check_base_class_offset(lv, (S7856C24*)(S465C4_nt*)(S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C4_nt*)(S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C3_nt*)(S465C2_nt*), 0, "S465C1");
    check_base_class_offset(lv, (S465C2_nt*), 0, "S465C1");
    check_field_offset(lv, s465c1f0, ABISELECT(136,124), "S465C1.s465c1f0");
    check_field_offset(lv, s465c1f1, ABISELECT(160,136), "S465C1.s465c1f1");
    check_field_offset(lv, s465c1f2, ABISELECT(168,144), "S465C1.s465c1f2");
    check_field_offset(lv, s465c1f3, ABISELECT(344,300), "S465C1.s465c1f3");
    check_field_offset(lv, s465c1f4, ABISELECT(360,312), "S465C1.s465c1f4");
    test_class_info(&lv, &cd_S465C1);
    dp->~S465C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS465C1(Test_S465C1, "S465C1", ABISELECT(368,316));

#else // __cplusplus

extern void _ZN6S465C1C1Ev();
extern void _ZN6S465C1D1Ev();
Name_Map name_map_S465C1[] = {
  NSPAIR(_ZN6S465C1C1Ev),
  NSPAIR(_ZN6S465C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S465C4_nt;
extern VTBL_ENTRY _ZTI9S465C4_nt[];
extern  VTBL_ENTRY _ZTV9S465C4_nt[];
extern Class_Descriptor cd_S465C3_nt;
extern VTBL_ENTRY _ZTI9S465C3_nt[];
extern  VTBL_ENTRY _ZTV9S465C3_nt[];
extern Class_Descriptor cd_S465C2_nt;
extern VTBL_ENTRY _ZTI9S465C2_nt[];
extern  VTBL_ENTRY _ZTV9S465C2_nt[];
static Base_Class bases_S465C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S465C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S465C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S465C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S465C1[];
extern void _ZN6S465C1D1Ev();
extern void _ZN6S465C1D0Ev();
extern void _ZN9S465C4_nt2v8Ev();
extern void _ZN9S465C3_nt2v9Ev();
extern void _ZN9S465C3_nt3v10Ev();
extern void _ZN9S465C3_nt3v11Ev();
extern void _ZN9S465C3_nt3v12Ev();
extern void _ZN9S465C3_nt3v13Ev();
extern void _ZN9S465C2_nt3v14Ev();
extern void _ZN9S465C2_nt3v15Ev();
extern void _ZN9S465C2_nt3v16Ev();
extern void _ZN9S465C2_nt3v17Ev();
extern void _ZN9S465C2_nt3v18Ev();
extern void _ZN9S465C2_nt3v19Ev();
extern void _ZN9S465C2_nt3v20Ev();
extern void _ZN9S465C2_nt3v21Ev();
extern void _ZN9S465C2_nt3v22Ev();
extern void _ZN9S465C2_nt3v23Ev();
extern void _ZN9S465C2_nt3v24Ev();
extern void _ZN9S465C2_nt3v25Ev();
extern void _ZN9S465C2_nt3v26Ev();
extern void _ZN9S465C2_nt3v27Ev();
extern void _ZN9S465C2_nt3v28Ev();
extern void _ZN9S465C2_nt3v29Ev();
extern void _ZN9S465C2_nt3v30Ev();
extern void _ZN6S465C12v1Ev();
extern void _ZN6S465C12v2Ev();
extern void _ZN6S465C12v3Ev();
extern void _ZN6S465C12v4Ev();
extern void _ZN6S465C12v5Ev();
extern void _ZN6S465C12v6Ev();
extern void _ZN6S465C12v7Ev();
static  VTBL_ENTRY vtc_S465C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S465C1[0]),
  (VTBL_ENTRY)&_ZN6S465C1D1Ev,
  (VTBL_ENTRY)&_ZN6S465C1D0Ev,
  (VTBL_ENTRY)&_ZN9S465C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S465C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S465C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN6S465C12v1Ev,
  (VTBL_ENTRY)&_ZN6S465C12v2Ev,
  (VTBL_ENTRY)&_ZN6S465C12v3Ev,
  (VTBL_ENTRY)&_ZN6S465C12v4Ev,
  (VTBL_ENTRY)&_ZN6S465C12v5Ev,
  (VTBL_ENTRY)&_ZN6S465C12v6Ev,
  (VTBL_ENTRY)&_ZN6S465C12v7Ev,
};
extern VTBL_ENTRY _ZTI6S465C1[];
extern  VTBL_ENTRY _ZTV6S465C1[];
Class_Descriptor cd_S465C1 = {  "S465C1", // class name
  bases_S465C1, 4,
  &(vtc_S465C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,316), // object size
  NSPAIRA(_ZTI6S465C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S465C1),34, //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  S1954C3_nt  : S1868C4_nt {
  short s1954c3f0[2];
  virtual  ~S1954C3_nt(); // _ZN10S1954C3_ntD1Ev
  virtual void  v5(); // _ZN10S1954C3_nt2v5Ev
  S1954C3_nt(); // tgen
};
//SIG(-1 S1954C3_nt) C1{ BC2{ vd m} vd v1 Fs[2]}


 S1954C3_nt ::~S1954C3_nt(){ note_dtor("S1954C3_nt", this);}
void  S1954C3_nt ::v5(){vfunc_called(this, "_ZN10S1954C3_nt2v5Ev");}
S1954C3_nt ::S1954C3_nt(){ note_ctor("S1954C3_nt", this);} // tgen

//skip512 S1954C3_nt

#else // __cplusplus

extern void _ZN10S1954C3_ntC1Ev();
extern void _ZN10S1954C3_ntD1Ev();
Name_Map name_map_S1954C3_nt[] = {
  NSPAIR(_ZN10S1954C3_ntC1Ev),
  NSPAIR(_ZN10S1954C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1954C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S1954C3_nt[];
extern void _ZN10S1954C3_ntD1Ev();
extern void _ZN10S1954C3_ntD0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S1954C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1954C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1954C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
VTBL_ENTRY *P__ZTI10S1954C3_nt = _ZTI10S1954C3_nt; 
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
Class_Descriptor cd_S1954C3_nt = {  "S1954C3_nt", // class name
  bases_S1954C3_nt, 1,
  &(vtc_S1954C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1954C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1954C3_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C2  : S1954C3_nt {
  ::S40C35_nt s1954c2f0;
  virtual void  v6(); // _ZN7S1954C22v6Ev
  virtual void  v7(); // _ZN7S1954C22v7Ev
  virtual void  v8(); // _ZN7S1954C22v8Ev
  virtual void  v9(); // _ZN7S1954C22v9Ev
  ~S1954C2(); // tgen
  S1954C2(); // tgen
};
//SIG(-1 S1954C2) C1{ BC2{ BC3{ vd m} vd v5 Fs[2]} v1 v2 v3 v4 FC4{ m Fi[4]}}


void  S1954C2 ::v6(){vfunc_called(this, "_ZN7S1954C22v6Ev");}
void  S1954C2 ::v7(){vfunc_called(this, "_ZN7S1954C22v7Ev");}
void  S1954C2 ::v8(){vfunc_called(this, "_ZN7S1954C22v8Ev");}
void  S1954C2 ::v9(){vfunc_called(this, "_ZN7S1954C22v9Ev");}
S1954C2 ::~S1954C2(){ note_dtor("S1954C2", this);} // tgen
S1954C2 ::S1954C2(){ note_ctor("S1954C2", this);} // tgen

static void Test_S1954C2()
{
  extern Class_Descriptor cd_S1954C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S1954C2, buf);
    S1954C2 *dp, &lv = *(dp=new (buf) S1954C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1954C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1954C3_nt*), 0, "S1954C2");
    check_base_class_offset(lv, (S1954C3_nt*), 0, "S1954C2");
    check_field_offset(lv, s1954c2f0, ABISELECT(12,8), "S1954C2.s1954c2f0");
    test_class_info(&lv, &cd_S1954C2);
    dp->~S1954C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C2(Test_S1954C2, "S1954C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S1954C2C1Ev();
extern void _ZN7S1954C2D1Ev();
Name_Map name_map_S1954C2[] = {
  NSPAIR(_ZN7S1954C2C1Ev),
  NSPAIR(_ZN7S1954C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1954C3_nt;
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
static Base_Class bases_S1954C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1954C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1954C2[];
extern void _ZN7S1954C2D1Ev();
extern void _ZN7S1954C2D0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
extern void _ZN7S1954C22v6Ev();
extern void _ZN7S1954C22v7Ev();
extern void _ZN7S1954C22v8Ev();
extern void _ZN7S1954C22v9Ev();
static  VTBL_ENTRY vtc_S1954C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1954C2[0]),
  (VTBL_ENTRY)&_ZN7S1954C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1954C2D0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S1954C2[];
extern  VTBL_ENTRY _ZTV7S1954C2[];
Class_Descriptor cd_S1954C2 = {  "S1954C2", // class name
  bases_S1954C2, 2,
  &(vtc_S1954C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S1954C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1954C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C6_nt  {
  int s1954c6f0;
  short s1954c6f1[2];
  void  mf1954c6(); // _ZN10S1954C6_nt8mf1954c6Ev
};
//SIG(-1 S1954C6_nt) C1{ m Fi Fs[2]}


void  S1954C6_nt ::mf1954c6(){}

//skip512 S1954C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C10_nt  {
  void *s1954c10f0;
  int s1954c10f1[2];
  void  mf1954c10(); // _ZN11S1954C10_nt9mf1954c10Ev
};
//SIG(-1 S1954C10_nt) C1{ m Fp Fi[2]}


void  S1954C10_nt ::mf1954c10(){}

//skip512 S1954C10_nt

#else // __cplusplus

Class_Descriptor cd_S1954C10_nt = {  "S1954C10_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  S1954C9  : S1954C10_nt {
  __tsi64 s1954c9f0;
};
//SIG(-1 S1954C9) C1{ BC2{ m Fp Fi[2]} FL}



static void Test_S1954C9()
{
  extern Class_Descriptor cd_S1954C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S1954C9, buf);
    S1954C9 &lv = *(new (buf) S1954C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1954C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C9)");
    check_base_class_offset(lv, (S1954C10_nt*), 0, "S1954C9");
    check_field_offset(lv, s1954c9f0, ABISELECT(16,12), "S1954C9.s1954c9f0");
    test_class_info(&lv, &cd_S1954C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C9(Test_S1954C9, "S1954C9", ABISELECT(24,20));

#else // __cplusplus

extern Class_Descriptor cd_S1954C10_nt;
static Base_Class bases_S1954C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1954C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1954C9 = {  "S1954C9", // class name
  bases_S1954C9, 1,
  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  S1954C8  {
  ::S1954C9 s1954c8f0;
  int s1954c8f1;
  short s1954c8f2[2];
  void  mf1954c8(); // _ZN7S1954C88mf1954c8Ev
};
//SIG(-1 S1954C8) C1{ m FC2{ BC3{ m Fp Fi[2]} FL} Fi Fs[2]}


void  S1954C8 ::mf1954c8(){}

static void Test_S1954C8()
{
  {
    init_simple_test("S1954C8");
    S1954C8 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S1954C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C8)");
    check_field_offset(lv, s1954c8f0, 0, "S1954C8.s1954c8f0");
    check_field_offset(lv, s1954c8f1, ABISELECT(24,20), "S1954C8.s1954c8f1");
    check_field_offset(lv, s1954c8f2, ABISELECT(28,24), "S1954C8.s1954c8f2");
  }
}
static Arrange_To_Call_Me vS1954C8(Test_S1954C8, "S1954C8", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C11  {
  void *s1954c11f0;
  int s1954c11f1[2];
  void  mf1954c11(); // _ZN8S1954C119mf1954c11Ev
};
//SIG(-1 S1954C11) C1{ m Fp Fi[2]}


void  S1954C11 ::mf1954c11(){}

static void Test_S1954C11()
{
  {
    init_simple_test("S1954C11");
    S1954C11 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1954C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C11)");
    check_field_offset(lv, s1954c11f0, 0, "S1954C11.s1954c11f0");
    check_field_offset(lv, s1954c11f1, ABISELECT(8,4), "S1954C11.s1954c11f1");
  }
}
static Arrange_To_Call_Me vS1954C11(Test_S1954C11, "S1954C11", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1954C1  : S1954C2 {
  void *s1954c1f0;
  int s1954c1f1;
  short s1954c1f2[2];
  char s1954c1f3[3];
  char s1954c1f4:2;
  char s1954c1f5:2;
  char s1954c1f6:2;
  char s1954c1f7:2;
  char s1954c1f8:2;
  char s1954c1f9:2;
  char s1954c1f10:2;
  ::S1954C6_nt s1954c1f11;
  int s1954c1f12[2];
  ::S40C12_nt s1954c1f13;
  ::S1954C8 s1954c1f14;
  ::S1954C11 s1954c1f15;
  int s1954c1f16;
  virtual  ~S1954C1(); // _ZN7S1954C1D1Ev
  virtual void  v1(); // _ZN7S1954C12v1Ev
  virtual void  v2(); // _ZN7S1954C12v2Ev
  virtual void  v3(); // _ZN7S1954C12v3Ev
  virtual void  v4(); // _ZN7S1954C12v4Ev
  S1954C1(); // tgen
};
//SIG(1 S1954C1) C1{ BC2{ BC3{ BC4{ vd m} vd v5 Fs[2]} v6 v7 v8 v9 FC5{ m Fi[4]}} vd v1 v2 v3 v4 Fp Fi Fs[2] Fc[3] Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 FC6{ m Fi Fs[2]} Fi[2] FC7{ m Fp Fi[2]} FC8{ m FC9{ BC10{ m Fp Fi[2]} FL} Fi Fs[2]} FC11{ m Fp Fi[2]} Fi}


 S1954C1 ::~S1954C1(){ note_dtor("S1954C1", this);}
void  S1954C1 ::v1(){vfunc_called(this, "_ZN7S1954C12v1Ev");}
void  S1954C1 ::v2(){vfunc_called(this, "_ZN7S1954C12v2Ev");}
void  S1954C1 ::v3(){vfunc_called(this, "_ZN7S1954C12v3Ev");}
void  S1954C1 ::v4(){vfunc_called(this, "_ZN7S1954C12v4Ev");}
S1954C1 ::S1954C1(){ note_ctor("S1954C1", this);} // tgen

static void Test_S1954C1()
{
  extern Class_Descriptor cd_S1954C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S1954C1, buf);
    S1954C1 *dp, &lv = *(dp=new (buf) S1954C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S1954C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1954C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1954C3_nt*)(S1954C2*), 0, "S1954C1");
    check_base_class_offset(lv, (S1954C3_nt*)(S1954C2*), 0, "S1954C1");
    check_base_class_offset(lv, (S1954C2*), 0, "S1954C1");
    check_field_offset(lv, s1954c1f0, ABISELECT(32,24), "S1954C1.s1954c1f0");
    check_field_offset(lv, s1954c1f1, ABISELECT(40,28), "S1954C1.s1954c1f1");
    check_field_offset(lv, s1954c1f2, ABISELECT(44,32), "S1954C1.s1954c1f2");
    check_field_offset(lv, s1954c1f3, ABISELECT(48,36), "S1954C1.s1954c1f3");
    set_bf_and_test(lv, s1954c1f4, ABISELECT(51,39), 0, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f4, ABISELECT(51,39), 0, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f5, ABISELECT(51,39), 2, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f5, ABISELECT(51,39), 2, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f6, ABISELECT(51,39), 4, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f6, ABISELECT(51,39), 4, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f7, ABISELECT(51,39), 6, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f7, ABISELECT(51,39), 6, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f8, ABISELECT(52,40), 0, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f8, ABISELECT(52,40), 0, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f9, ABISELECT(52,40), 2, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f9, ABISELECT(52,40), 2, 2, hide_sll(1LL<<1), "S1954C1");
    set_bf_and_test(lv, s1954c1f10, ABISELECT(52,40), 4, 2, 1, "S1954C1");
    set_bf_and_test(lv, s1954c1f10, ABISELECT(52,40), 4, 2, hide_sll(1LL<<1), "S1954C1");
    check_field_offset(lv, s1954c1f11, ABISELECT(56,44), "S1954C1.s1954c1f11");
    check_field_offset(lv, s1954c1f12, ABISELECT(64,52), "S1954C1.s1954c1f12");
    check_field_offset(lv, s1954c1f13, ABISELECT(72,60), "S1954C1.s1954c1f13");
    check_field_offset(lv, s1954c1f14, ABISELECT(88,72), "S1954C1.s1954c1f14");
    check_field_offset(lv, s1954c1f15, ABISELECT(120,100), "S1954C1.s1954c1f15");
    check_field_offset(lv, s1954c1f16, ABISELECT(136,112), "S1954C1.s1954c1f16");
    test_class_info(&lv, &cd_S1954C1);
    dp->~S1954C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1954C1(Test_S1954C1, "S1954C1", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S1954C1C1Ev();
extern void _ZN7S1954C1D1Ev();
Name_Map name_map_S1954C1[] = {
  NSPAIR(_ZN7S1954C1C1Ev),
  NSPAIR(_ZN7S1954C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1954C3_nt;
extern VTBL_ENTRY _ZTI10S1954C3_nt[];
extern  VTBL_ENTRY _ZTV10S1954C3_nt[];
extern Class_Descriptor cd_S1954C2;
extern VTBL_ENTRY _ZTI7S1954C2[];
extern  VTBL_ENTRY _ZTV7S1954C2[];
static Base_Class bases_S1954C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1954C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1954C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1954C1[];
extern void _ZN7S1954C1D1Ev();
extern void _ZN7S1954C1D0Ev();
extern void _ZN10S1954C3_nt2v5Ev();
extern void _ZN7S1954C22v6Ev();
extern void _ZN7S1954C22v7Ev();
extern void _ZN7S1954C22v8Ev();
extern void _ZN7S1954C22v9Ev();
extern void _ZN7S1954C12v1Ev();
extern void _ZN7S1954C12v2Ev();
extern void _ZN7S1954C12v3Ev();
extern void _ZN7S1954C12v4Ev();
static  VTBL_ENTRY vtc_S1954C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1954C1[0]),
  (VTBL_ENTRY)&_ZN7S1954C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1954C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1954C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1954C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1954C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1954C1[];
extern  VTBL_ENTRY _ZTV7S1954C1[];
Class_Descriptor cd_S1954C1 = {  "S1954C1", // class name
  bases_S1954C1, 3,
  &(vtc_S1954C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S1954C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1954C1),13, //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  S1953C3  : S1868C4_nt {
  short s1953c3f0[2];
  virtual  ~S1953C3(); // _ZN7S1953C3D1Ev
  virtual void  v5(); // _ZN7S1953C32v5Ev
  S1953C3(); // tgen
};
//SIG(-1 S1953C3) C1{ BC2{ vd m} vd v1 Fs[2]}


 S1953C3 ::~S1953C3(){ note_dtor("S1953C3", this);}
void  S1953C3 ::v5(){vfunc_called(this, "_ZN7S1953C32v5Ev");}
S1953C3 ::S1953C3(){ note_ctor("S1953C3", this);} // tgen

static void Test_S1953C3()
{
  extern Class_Descriptor cd_S1953C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1953C3, buf);
    S1953C3 *dp, &lv = *(dp=new (buf) S1953C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1953C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C3)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S1953C3");
    check_field_offset(lv, s1953c3f0, ABISELECT(8,4), "S1953C3.s1953c3f0");
    test_class_info(&lv, &cd_S1953C3);
    dp->~S1953C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C3(Test_S1953C3, "S1953C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1953C3C1Ev();
extern void _ZN7S1953C3D1Ev();
Name_Map name_map_S1953C3[] = {
  NSPAIR(_ZN7S1953C3C1Ev),
  NSPAIR(_ZN7S1953C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S1953C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1953C3[];
extern void _ZN7S1953C3D1Ev();
extern void _ZN7S1953C3D0Ev();
extern void _ZN7S1953C32v5Ev();
static  VTBL_ENTRY vtc_S1953C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C3[0]),
  (VTBL_ENTRY)&_ZN7S1953C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
Class_Descriptor cd_S1953C3 = {  "S1953C3", // class name
  bases_S1953C3, 1,
  &(vtc_S1953C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1953C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C3),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  S1953C2  : S1953C3 {
  ::S40C35_nt s1953c2f0;
  virtual void  v6(); // _ZN7S1953C22v6Ev
  virtual void  v7(); // _ZN7S1953C22v7Ev
  virtual void  v8(); // _ZN7S1953C22v8Ev
  virtual void  v9(); // _ZN7S1953C22v9Ev
  ~S1953C2(); // tgen
  S1953C2(); // tgen
};
//SIG(-1 S1953C2) C1{ BC2{ BC3{ vd m} vd v5 Fs[2]} v1 v2 v3 v4 FC4{ m Fi[4]}}


void  S1953C2 ::v6(){vfunc_called(this, "_ZN7S1953C22v6Ev");}
void  S1953C2 ::v7(){vfunc_called(this, "_ZN7S1953C22v7Ev");}
void  S1953C2 ::v8(){vfunc_called(this, "_ZN7S1953C22v8Ev");}
void  S1953C2 ::v9(){vfunc_called(this, "_ZN7S1953C22v9Ev");}
S1953C2 ::~S1953C2(){ note_dtor("S1953C2", this);} // tgen
S1953C2 ::S1953C2(){ note_ctor("S1953C2", this);} // tgen

static void Test_S1953C2()
{
  extern Class_Descriptor cd_S1953C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S1953C2, buf);
    S1953C2 *dp, &lv = *(dp=new (buf) S1953C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1953C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C2)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1953C3*), 0, "S1953C2");
    check_base_class_offset(lv, (S1953C3*), 0, "S1953C2");
    check_field_offset(lv, s1953c2f0, ABISELECT(12,8), "S1953C2.s1953c2f0");
    test_class_info(&lv, &cd_S1953C2);
    dp->~S1953C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C2(Test_S1953C2, "S1953C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S1953C2C1Ev();
extern void _ZN7S1953C2D1Ev();
Name_Map name_map_S1953C2[] = {
  NSPAIR(_ZN7S1953C2C1Ev),
  NSPAIR(_ZN7S1953C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1953C3;
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
static Base_Class bases_S1953C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1953C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1953C2[];
extern void _ZN7S1953C2D1Ev();
extern void _ZN7S1953C2D0Ev();
extern void _ZN7S1953C32v5Ev();
extern void _ZN7S1953C22v6Ev();
extern void _ZN7S1953C22v7Ev();
extern void _ZN7S1953C22v8Ev();
extern void _ZN7S1953C22v9Ev();
static  VTBL_ENTRY vtc_S1953C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C2[0]),
  (VTBL_ENTRY)&_ZN7S1953C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S1953C2[];
extern  VTBL_ENTRY _ZTV7S1953C2[];
Class_Descriptor cd_S1953C2 = {  "S1953C2", // class name
  bases_S1953C2, 2,
  &(vtc_S1953C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S1953C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C9  : S1954C10_nt {
  int s1953c9f0;
};
//SIG(-1 S1953C9) C1{ BC2{ m Fp Fi[2]} Fi}



static void Test_S1953C9()
{
  extern Class_Descriptor cd_S1953C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1953C9, buf);
    S1953C9 &lv = *(new (buf) S1953C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1953C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C9)");
    check_base_class_offset(lv, (S1954C10_nt*), 0, "S1953C9");
    check_field_offset(lv, s1953c9f0, ABISELECT(16,12), "S1953C9.s1953c9f0");
    test_class_info(&lv, &cd_S1953C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C9(Test_S1953C9, "S1953C9", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S1954C10_nt;
static Base_Class bases_S1953C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1954C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1953C9 = {  "S1953C9", // class name
  bases_S1953C9, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C8  {
  ::S1953C9 s1953c8f0;
  int s1953c8f1;
  short s1953c8f2[2];
  void  mf1953c8(); // _ZN7S1953C88mf1953c8Ev
};
//SIG(-1 S1953C8) C1{ m FC2{ BC3{ m Fp Fi[2]} Fi} Fi Fs[2]}


void  S1953C8 ::mf1953c8(){}

static void Test_S1953C8()
{
  {
    init_simple_test("S1953C8");
    S1953C8 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1953C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C8)");
    check_field_offset(lv, s1953c8f0, 0, "S1953C8.s1953c8f0");
    check_field_offset(lv, s1953c8f1, ABISELECT(24,16), "S1953C8.s1953c8f1");
    check_field_offset(lv, s1953c8f2, ABISELECT(28,20), "S1953C8.s1953c8f2");
  }
}
static Arrange_To_Call_Me vS1953C8(Test_S1953C8, "S1953C8", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1953C1  : S1953C2 {
  void *s1953c1f0;
  int s1953c1f1;
  short s1953c1f2[2];
  char s1953c1f3[3];
  char s1953c1f4:2;
  char s1953c1f5:2;
  char s1953c1f6:2;
  char s1953c1f7:2;
  char s1953c1f8:2;
  char s1953c1f9:2;
  char s1953c1f10:2;
  ::S1954C6_nt s1953c1f11;
  int s1953c1f12[2];
  ::S1954C11 s1953c1f13;
  ::S1953C8 s1953c1f14;
  ::S40C12_nt s1953c1f15;
  int s1953c1f16;
  virtual  ~S1953C1(); // _ZN7S1953C1D1Ev
  virtual void  v1(); // _ZN7S1953C12v1Ev
  virtual void  v2(); // _ZN7S1953C12v2Ev
  virtual void  v3(); // _ZN7S1953C12v3Ev
  virtual void  v4(); // _ZN7S1953C12v4Ev
  S1953C1(); // tgen
};
//SIG(1 S1953C1) C1{ BC2{ BC3{ BC4{ vd m} vd v5 Fs[2]} v6 v7 v8 v9 FC5{ m Fi[4]}} vd v1 v2 v3 v4 Fp Fi Fs[2] Fc[3] Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 Fc:2 FC6{ m Fi Fs[2]} Fi[2] FC7{ m Fp Fi[2]} FC8{ m FC9{ BC10{ m Fp Fi[2]} Fi} Fi Fs[2]} FC11{ m Fp Fi[2]} Fi}


 S1953C1 ::~S1953C1(){ note_dtor("S1953C1", this);}
void  S1953C1 ::v1(){vfunc_called(this, "_ZN7S1953C12v1Ev");}
void  S1953C1 ::v2(){vfunc_called(this, "_ZN7S1953C12v2Ev");}
void  S1953C1 ::v3(){vfunc_called(this, "_ZN7S1953C12v3Ev");}
void  S1953C1 ::v4(){vfunc_called(this, "_ZN7S1953C12v4Ev");}
S1953C1 ::S1953C1(){ note_ctor("S1953C1", this);} // tgen

static void Test_S1953C1()
{
  extern Class_Descriptor cd_S1953C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,29)];
    init_test(&cd_S1953C1, buf);
    S1953C1 *dp, &lv = *(dp=new (buf) S1953C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S1953C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1953C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S1953C3*)(S1953C2*), 0, "S1953C1");
    check_base_class_offset(lv, (S1953C3*)(S1953C2*), 0, "S1953C1");
    check_base_class_offset(lv, (S1953C2*), 0, "S1953C1");
    check_field_offset(lv, s1953c1f0, ABISELECT(32,24), "S1953C1.s1953c1f0");
    check_field_offset(lv, s1953c1f1, ABISELECT(40,28), "S1953C1.s1953c1f1");
    check_field_offset(lv, s1953c1f2, ABISELECT(44,32), "S1953C1.s1953c1f2");
    check_field_offset(lv, s1953c1f3, ABISELECT(48,36), "S1953C1.s1953c1f3");
    set_bf_and_test(lv, s1953c1f4, ABISELECT(51,39), 0, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f4, ABISELECT(51,39), 0, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f5, ABISELECT(51,39), 2, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f5, ABISELECT(51,39), 2, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f6, ABISELECT(51,39), 4, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f6, ABISELECT(51,39), 4, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f7, ABISELECT(51,39), 6, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f7, ABISELECT(51,39), 6, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f8, ABISELECT(52,40), 0, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f8, ABISELECT(52,40), 0, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f9, ABISELECT(52,40), 2, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f9, ABISELECT(52,40), 2, 2, hide_sll(1LL<<1), "S1953C1");
    set_bf_and_test(lv, s1953c1f10, ABISELECT(52,40), 4, 2, 1, "S1953C1");
    set_bf_and_test(lv, s1953c1f10, ABISELECT(52,40), 4, 2, hide_sll(1LL<<1), "S1953C1");
    check_field_offset(lv, s1953c1f11, ABISELECT(56,44), "S1953C1.s1953c1f11");
    check_field_offset(lv, s1953c1f12, ABISELECT(64,52), "S1953C1.s1953c1f12");
    check_field_offset(lv, s1953c1f13, ABISELECT(72,60), "S1953C1.s1953c1f13");
    check_field_offset(lv, s1953c1f14, ABISELECT(88,72), "S1953C1.s1953c1f14");
    check_field_offset(lv, s1953c1f15, ABISELECT(120,96), "S1953C1.s1953c1f15");
    check_field_offset(lv, s1953c1f16, ABISELECT(136,108), "S1953C1.s1953c1f16");
    test_class_info(&lv, &cd_S1953C1);
    dp->~S1953C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1953C1(Test_S1953C1, "S1953C1", ABISELECT(144,112));

#else // __cplusplus

extern void _ZN7S1953C1C1Ev();
extern void _ZN7S1953C1D1Ev();
Name_Map name_map_S1953C1[] = {
  NSPAIR(_ZN7S1953C1C1Ev),
  NSPAIR(_ZN7S1953C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S1953C3;
extern VTBL_ENTRY _ZTI7S1953C3[];
extern  VTBL_ENTRY _ZTV7S1953C3[];
extern Class_Descriptor cd_S1953C2;
extern VTBL_ENTRY _ZTI7S1953C2[];
extern  VTBL_ENTRY _ZTV7S1953C2[];
static Base_Class bases_S1953C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1953C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1953C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1953C1[];
extern void _ZN7S1953C1D1Ev();
extern void _ZN7S1953C1D0Ev();
extern void _ZN7S1953C32v5Ev();
extern void _ZN7S1953C22v6Ev();
extern void _ZN7S1953C22v7Ev();
extern void _ZN7S1953C22v8Ev();
extern void _ZN7S1953C22v9Ev();
extern void _ZN7S1953C12v1Ev();
extern void _ZN7S1953C12v2Ev();
extern void _ZN7S1953C12v3Ev();
extern void _ZN7S1953C12v4Ev();
static  VTBL_ENTRY vtc_S1953C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1953C1[0]),
  (VTBL_ENTRY)&_ZN7S1953C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1953C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1953C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1953C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1953C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1953C1[];
extern  VTBL_ENTRY _ZTV7S1953C1[];
Class_Descriptor cd_S1953C1 = {  "S1953C1", // class name
  bases_S1953C1, 3,
  &(vtc_S1953C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,112), // object size
  NSPAIRA(_ZTI7S1953C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1953C1),13, //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  S1113C3_nt  : S40C13_nt {
};
//SIG(-1 S1113C3_nt) C1{ BC2{ m Fi}}



//skip512 S1113C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S1113C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S1113C3_nt[];
VTBL_ENTRY *P__ZTI10S1113C3_nt = _ZTI10S1113C3_nt; 
Class_Descriptor cd_S1113C3_nt = {  "S1113C3_nt", // class name
  bases_S1113C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1113C3_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  S1113C2  : S1113C3_nt {
  virtual  ~S1113C2(); // _ZN7S1113C2D1Ev
  virtual void  v6(); // _ZN7S1113C22v6Ev
  virtual void  v7(); // _ZN7S1113C22v7Ev
  virtual void  v8(); // _ZN7S1113C22v8Ev
  virtual void  v9(); // _ZN7S1113C22v9Ev
  virtual void  v10(); // _ZN7S1113C23v10Ev
  S1113C2(); // tgen
};
//SIG(-1 S1113C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5}


 S1113C2 ::~S1113C2(){ note_dtor("S1113C2", this);}
void  S1113C2 ::v6(){vfunc_called(this, "_ZN7S1113C22v6Ev");}
void  S1113C2 ::v7(){vfunc_called(this, "_ZN7S1113C22v7Ev");}
void  S1113C2 ::v8(){vfunc_called(this, "_ZN7S1113C22v8Ev");}
void  S1113C2 ::v9(){vfunc_called(this, "_ZN7S1113C22v9Ev");}
void  S1113C2 ::v10(){vfunc_called(this, "_ZN7S1113C23v10Ev");}
S1113C2 ::S1113C2(){ note_ctor("S1113C2", this);} // tgen

static void Test_S1113C2()
{
  extern Class_Descriptor cd_S1113C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1113C2, buf);
    S1113C2 *dp, &lv = *(dp=new (buf) S1113C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1113C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S1113C3_nt*), ABISELECT(8,4), "S1113C2");
    check_base_class_offset(lv, (S1113C3_nt*), ABISELECT(8,4), "S1113C2");
    test_class_info(&lv, &cd_S1113C2);
    dp->~S1113C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1113C2(Test_S1113C2, "S1113C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1113C2C1Ev();
extern void _ZN7S1113C2D1Ev();
Name_Map name_map_S1113C2[] = {
  NSPAIR(_ZN7S1113C2C1Ev),
  NSPAIR(_ZN7S1113C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1113C3_nt;
extern VTBL_ENTRY _ZTI10S1113C3_nt[];
static Base_Class bases_S1113C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_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_S1113C3_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 _ZTI7S1113C2[];
extern void _ZN7S1113C2D1Ev();
extern void _ZN7S1113C2D0Ev();
extern void _ZN7S1113C22v6Ev();
extern void _ZN7S1113C22v7Ev();
extern void _ZN7S1113C22v8Ev();
extern void _ZN7S1113C22v9Ev();
extern void _ZN7S1113C23v10Ev();
static  VTBL_ENTRY vtc_S1113C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1113C2[0]),
  (VTBL_ENTRY)&_ZN7S1113C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1113C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1113C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S1113C2[];
extern  VTBL_ENTRY _ZTV7S1113C2[];
Class_Descriptor cd_S1113C2 = {  "S1113C2", // class name
  bases_S1113C2, 2,
  &(vtc_S1113C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1113C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1113C2),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  S1113C6_nt  {
  void *s1113c6f0;
  int s1113c6f1[4];
  void  mf1113c6(); // _ZN10S1113C6_nt8mf1113c6Ev
};
//SIG(-1 S1113C6_nt) C1{ m Fp Fi[4]}


void  S1113C6_nt ::mf1113c6(){}

//skip512 S1113C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C5_nt  {
  ::S1113C6_nt s1113c5f0;
  void  mf1113c5(); // _ZN10S1113C5_nt8mf1113c5Ev
};
//SIG(-1 S1113C5_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S1113C5_nt ::mf1113c5(){}

//skip512 S1113C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C9  {
  ::S1113C6_nt s1113c9f0;
  void  mf1113c9(); // _ZN7S1113C98mf1113c9Ev
};
//SIG(-1 S1113C9) C1{ m FC2{ m Fp Fi[4]}}


void  S1113C9 ::mf1113c9(){}

static void Test_S1113C9()
{
  {
    init_simple_test("S1113C9");
    S1113C9 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1113C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C9)");
    check_field_offset(lv, s1113c9f0, 0, "S1113C9.s1113c9f0");
  }
}
static Arrange_To_Call_Me vS1113C9(Test_S1113C9, "S1113C9", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C13_nt  {
  void *s1113c13f0;
  int s1113c13f1;
  void  mf1113c13(); // _ZN11S1113C13_nt9mf1113c13Ev
};
//SIG(-1 S1113C13_nt) C1{ m Fp Fi}


void  S1113C13_nt ::mf1113c13(){}

//skip512 S1113C13_nt

#else // __cplusplus

Class_Descriptor cd_S1113C13_nt = {  "S1113C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C12_nt  : S1113C13_nt {
};
//SIG(-1 S1113C12_nt) C1{ BC2{ m Fp Fi}}



//skip512 S1113C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S1113C13_nt;
static Base_Class bases_S1113C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1113C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1113C11_nt  {
  int s1113c11f0;
  ::S1113C12_nt s1113c11f1;
  void  mf1113c11(); // _ZN11S1113C11_nt9mf1113c11Ev
};
//SIG(-1 S1113C11_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S1113C11_nt ::mf1113c11(){}

//skip512 S1113C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C15_nt  {
  __tsi64 s1113c15f0[2];
  int s1113c15f1[2];
  virtual  ~S1113C15_nt(); // _ZN11S1113C15_ntD1Ev
  virtual void  v12(); // _ZN11S1113C15_nt3v12Ev
  S1113C15_nt(); // tgen
};
//SIG(-1 S1113C15_nt) C1{ vd v1 FL[2] Fi[2]}


 S1113C15_nt ::~S1113C15_nt(){ note_dtor("S1113C15_nt", this);}
void  S1113C15_nt ::v12(){vfunc_called(this, "_ZN11S1113C15_nt3v12Ev");}
S1113C15_nt ::S1113C15_nt(){ note_ctor("S1113C15_nt", this);} // tgen

//skip512 S1113C15_nt

#else // __cplusplus

extern void _ZN11S1113C15_ntC1Ev();
extern void _ZN11S1113C15_ntD1Ev();
Name_Map name_map_S1113C15_nt[] = {
  NSPAIR(_ZN11S1113C15_ntC1Ev),
  NSPAIR(_ZN11S1113C15_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
extern void _ZN11S1113C15_ntD1Ev();
extern void _ZN11S1113C15_ntD0Ev();
extern void _ZN11S1113C15_nt3v12Ev();
static  VTBL_ENTRY vtc_S1113C15_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1113C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S1113C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
VTBL_ENTRY *P__ZTI11S1113C15_nt = _ZTI11S1113C15_nt; 
extern  VTBL_ENTRY _ZTV11S1113C15_nt[];
Class_Descriptor cd_S1113C15_nt = {  "S1113C15_nt", // class name
  0,0,//no base classes
  &(vtc_S1113C15_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI11S1113C15_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S1113C15_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  S1113C14_nt  : S1113C15_nt {
  void *s1113c14f0;
  ::S20291C14_nt s1113c14f1;
  virtual void  v11(); // _ZN11S1113C14_nt3v11Ev
  ~S1113C14_nt(); // tgen
  S1113C14_nt(); // tgen
};
//SIG(-1 S1113C14_nt) C1{ BC2{ vd v2 FL[2] Fi[2]} v1 Fp FC3{}}


void  S1113C14_nt ::v11(){vfunc_called(this, "_ZN11S1113C14_nt3v11Ev");}
S1113C14_nt ::~S1113C14_nt(){ note_dtor("S1113C14_nt", this);} // tgen
S1113C14_nt ::S1113C14_nt(){ note_ctor("S1113C14_nt", this);} // tgen

//skip512 S1113C14_nt

#else // __cplusplus

extern void _ZN11S1113C14_ntC1Ev();
extern void _ZN11S1113C14_ntD1Ev();
Name_Map name_map_S1113C14_nt[] = {
  NSPAIR(_ZN11S1113C14_ntC1Ev),
  NSPAIR(_ZN11S1113C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1113C15_nt;
extern VTBL_ENTRY _ZTI11S1113C15_nt[];
extern  VTBL_ENTRY _ZTV11S1113C15_nt[];
static Base_Class bases_S1113C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1113C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI11S1113C14_nt[];
extern void _ZN11S1113C14_ntD1Ev();
extern void _ZN11S1113C14_ntD0Ev();
extern void _ZN11S1113C15_nt3v12Ev();
extern void _ZN11S1113C14_nt3v11Ev();
static  VTBL_ENTRY vtc_S1113C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1113C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S1113C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1113C14_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S1113C15_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S1113C14_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI11S1113C14_nt[];
VTBL_ENTRY *P__ZTI11S1113C14_nt = _ZTI11S1113C14_nt; 
extern  VTBL_ENTRY _ZTV11S1113C14_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1113C1  : S1113C2 {
  void *s1113c1f0;
  ::S1113C5_nt s1113c1f1;
  ::S1113C5_nt s1113c1f2;
  ::S1113C5_nt s1113c1f3;
  ::S1113C9 s1113c1f4;
  ::S1113C11_nt s1113c1f5;
  ::S1113C14_nt s1113c1f6;
  int s1113c1f7;
  virtual  ~S1113C1(); // _ZN7S1113C1D1Ev
  virtual void  v1(); // _ZN7S1113C12v1Ev
  virtual void  v2(); // _ZN7S1113C12v2Ev
  virtual void  v3(); // _ZN7S1113C12v3Ev
  virtual void  v4(); // _ZN7S1113C12v4Ev
  virtual void  v5(); // _ZN7S1113C12v5Ev
  S1113C1(); // tgen
};
//SIG(1 S1113C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v6 v7 v8 v9 v10} vd v1 v2 v3 v4 v5 Fp FC5{ m FC6{ m Fp Fi[4]}} FC5 FC5 FC7{ m FC6} FC8{ m Fi FC9{ BC10{ m Fp Fi}}} FC11{ BC12{ vd v12 FL[2] Fi[2]} v11 Fp FC13{}} Fi}


 S1113C1 ::~S1113C1(){ note_dtor("S1113C1", this);}
void  S1113C1 ::v1(){vfunc_called(this, "_ZN7S1113C12v1Ev");}
void  S1113C1 ::v2(){vfunc_called(this, "_ZN7S1113C12v2Ev");}
void  S1113C1 ::v3(){vfunc_called(this, "_ZN7S1113C12v3Ev");}
void  S1113C1 ::v4(){vfunc_called(this, "_ZN7S1113C12v4Ev");}
void  S1113C1 ::v5(){vfunc_called(this, "_ZN7S1113C12v5Ev");}
S1113C1 ::S1113C1(){ note_ctor("S1113C1", this);} // tgen

static void Test_S1113C1()
{
  extern Class_Descriptor cd_S1113C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S1113C1, buf);
    S1113C1 *dp, &lv = *(dp=new (buf) S1113C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S1113C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1113C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S1113C3_nt*)(S1113C2*), ABISELECT(8,4), "S1113C1");
    check_base_class_offset(lv, (S1113C3_nt*)(S1113C2*), ABISELECT(8,4), "S1113C1");
    check_base_class_offset(lv, (S1113C2*), 0, "S1113C1");
    check_field_offset(lv, s1113c1f0, ABISELECT(16,8), "S1113C1.s1113c1f0");
    check_field_offset(lv, s1113c1f1, ABISELECT(24,12), "S1113C1.s1113c1f1");
    check_field_offset(lv, s1113c1f2, ABISELECT(48,32), "S1113C1.s1113c1f2");
    check_field_offset(lv, s1113c1f3, ABISELECT(72,52), "S1113C1.s1113c1f3");
    check_field_offset(lv, s1113c1f4, ABISELECT(96,72), "S1113C1.s1113c1f4");
    check_field_offset(lv, s1113c1f5, ABISELECT(120,92), "S1113C1.s1113c1f5");
    check_field_offset(lv, s1113c1f6, ABISELECT(144,104), "S1113C1.s1113c1f6");
    check_field_offset(lv, s1113c1f7, ABISELECT(192,140), "S1113C1.s1113c1f7");
    test_class_info(&lv, &cd_S1113C1);
    dp->~S1113C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1113C1(Test_S1113C1, "S1113C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S1113C1C1Ev();
extern void _ZN7S1113C1D1Ev();
Name_Map name_map_S1113C1[] = {
  NSPAIR(_ZN7S1113C1C1Ev),
  NSPAIR(_ZN7S1113C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1113C3_nt;
extern VTBL_ENTRY _ZTI10S1113C3_nt[];
extern Class_Descriptor cd_S1113C2;
extern VTBL_ENTRY _ZTI7S1113C2[];
extern  VTBL_ENTRY _ZTV7S1113C2[];
static Base_Class bases_S1113C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_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_S1113C3_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_S1113C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S1113C1[];
extern void _ZN7S1113C1D1Ev();
extern void _ZN7S1113C1D0Ev();
extern void _ZN7S1113C22v6Ev();
extern void _ZN7S1113C22v7Ev();
extern void _ZN7S1113C22v8Ev();
extern void _ZN7S1113C22v9Ev();
extern void _ZN7S1113C23v10Ev();
extern void _ZN7S1113C12v1Ev();
extern void _ZN7S1113C12v2Ev();
extern void _ZN7S1113C12v3Ev();
extern void _ZN7S1113C12v4Ev();
extern void _ZN7S1113C12v5Ev();
static  VTBL_ENTRY vtc_S1113C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1113C1[0]),
  (VTBL_ENTRY)&_ZN7S1113C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1113C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1113C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1113C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1113C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1113C1[];
extern  VTBL_ENTRY _ZTV7S1113C1[];
Class_Descriptor cd_S1113C1 = {  "S1113C1", // class name
  bases_S1113C1, 3,
  &(vtc_S1113C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S1113C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1113C1),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  S2442C4  {
  virtual  ~S2442C4(); // _ZN7S2442C4D1Ev
  virtual void  v9(); // _ZN7S2442C42v9Ev
  virtual void  v10(); // _ZN7S2442C43v10Ev
  virtual void  v11(); // _ZN7S2442C43v11Ev
  S2442C4(); // tgen
};
//SIG(-1 S2442C4) C1{ vd v1 v2 v3}


 S2442C4 ::~S2442C4(){ note_dtor("S2442C4", this);}
void  S2442C4 ::v9(){vfunc_called(this, "_ZN7S2442C42v9Ev");}
void  S2442C4 ::v10(){vfunc_called(this, "_ZN7S2442C43v10Ev");}
void  S2442C4 ::v11(){vfunc_called(this, "_ZN7S2442C43v11Ev");}
S2442C4 ::S2442C4(){ note_ctor("S2442C4", this);} // tgen

static void Test_S2442C4()
{
  extern Class_Descriptor cd_S2442C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2442C4, buf);
    S2442C4 *dp, &lv = *(dp=new (buf) S2442C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2442C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C4)");
    test_class_info(&lv, &cd_S2442C4);
    dp->~S2442C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C4(Test_S2442C4, "S2442C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2442C4C1Ev();
extern void _ZN7S2442C4D1Ev();
Name_Map name_map_S2442C4[] = {
  NSPAIR(_ZN7S2442C4C1Ev),
  NSPAIR(_ZN7S2442C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2442C4[];
extern void _ZN7S2442C4D1Ev();
extern void _ZN7S2442C4D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
static  VTBL_ENTRY vtc_S2442C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C4[0]),
  (VTBL_ENTRY)&_ZN7S2442C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
Class_Descriptor cd_S2442C4 = {  "S2442C4", // class name
  0,0,//no base classes
  &(vtc_S2442C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2442C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2442C4),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  S2442C3  : S2442C4 {
  virtual  ~S2442C3(); // _ZN7S2442C3D1Ev
  virtual void  v12(); // _ZN7S2442C33v12Ev
  virtual void  v13(); // _ZN7S2442C33v13Ev
  virtual void  v14(); // _ZN7S2442C33v14Ev
  virtual void  v15(); // _ZN7S2442C33v15Ev
  virtual void  v16(); // _ZN7S2442C33v16Ev
  virtual void  v17(); // _ZN7S2442C33v17Ev
  virtual void  v18(); // _ZN7S2442C33v18Ev
  virtual void  v19(); // _ZN7S2442C33v19Ev
  S2442C3(); // tgen
};
//SIG(-1 S2442C3) C1{ BC2{ vd v9 v10 v11} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S2442C3 ::~S2442C3(){ note_dtor("S2442C3", this);}
void  S2442C3 ::v12(){vfunc_called(this, "_ZN7S2442C33v12Ev");}
void  S2442C3 ::v13(){vfunc_called(this, "_ZN7S2442C33v13Ev");}
void  S2442C3 ::v14(){vfunc_called(this, "_ZN7S2442C33v14Ev");}
void  S2442C3 ::v15(){vfunc_called(this, "_ZN7S2442C33v15Ev");}
void  S2442C3 ::v16(){vfunc_called(this, "_ZN7S2442C33v16Ev");}
void  S2442C3 ::v17(){vfunc_called(this, "_ZN7S2442C33v17Ev");}
void  S2442C3 ::v18(){vfunc_called(this, "_ZN7S2442C33v18Ev");}
void  S2442C3 ::v19(){vfunc_called(this, "_ZN7S2442C33v19Ev");}
S2442C3 ::S2442C3(){ note_ctor("S2442C3", this);} // tgen

static void Test_S2442C3()
{
  extern Class_Descriptor cd_S2442C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2442C3, buf);
    S2442C3 *dp, &lv = *(dp=new (buf) S2442C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2442C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C3)");
    check_base_class_offset(lv, (S2442C4*), 0, "S2442C3");
    test_class_info(&lv, &cd_S2442C3);
    dp->~S2442C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C3(Test_S2442C3, "S2442C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2442C3C1Ev();
extern void _ZN7S2442C3D1Ev();
Name_Map name_map_S2442C3[] = {
  NSPAIR(_ZN7S2442C3C1Ev),
  NSPAIR(_ZN7S2442C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
static Base_Class bases_S2442C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2442C3[];
extern void _ZN7S2442C3D1Ev();
extern void _ZN7S2442C3D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
static  VTBL_ENTRY vtc_S2442C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C3[0]),
  (VTBL_ENTRY)&_ZN7S2442C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
Class_Descriptor cd_S2442C3 = {  "S2442C3", // class name
  bases_S2442C3, 1,
  &(vtc_S2442C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2442C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C3),15, //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  S2442C2  : S2442C3 {
  ::S17556C15_nt s2442c2f0;
  ::S17556C3_nt s2442c2f1;
  char s2442c2f2;
  virtual  ~S2442C2(); // _ZN7S2442C2D1Ev
  virtual void  v20(); // _ZN7S2442C23v20Ev
  virtual void  v21(); // _ZN7S2442C23v21Ev
  virtual void  v22(); // _ZN7S2442C23v22Ev
  S2442C2(); // tgen
};
//SIG(-1 S2442C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S2442C2 ::~S2442C2(){ note_dtor("S2442C2", this);}
void  S2442C2 ::v20(){vfunc_called(this, "_ZN7S2442C23v20Ev");}
void  S2442C2 ::v21(){vfunc_called(this, "_ZN7S2442C23v21Ev");}
void  S2442C2 ::v22(){vfunc_called(this, "_ZN7S2442C23v22Ev");}
S2442C2 ::S2442C2(){ note_ctor("S2442C2", this);} // tgen

static void Test_S2442C2()
{
  extern Class_Descriptor cd_S2442C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2442C2, buf);
    S2442C2 *dp, &lv = *(dp=new (buf) S2442C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2442C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C2)");
    check_base_class_offset(lv, (S2442C4*)(S2442C3*), 0, "S2442C2");
    check_base_class_offset(lv, (S2442C3*), 0, "S2442C2");
    check_field_offset(lv, s2442c2f0, ABISELECT(8,4), "S2442C2.s2442c2f0");
    check_field_offset(lv, s2442c2f1, ABISELECT(32,20), "S2442C2.s2442c2f1");
    check_field_offset(lv, s2442c2f2, ABISELECT(64,52), "S2442C2.s2442c2f2");
    test_class_info(&lv, &cd_S2442C2);
    dp->~S2442C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C2(Test_S2442C2, "S2442C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2442C2C1Ev();
extern void _ZN7S2442C2D1Ev();
Name_Map name_map_S2442C2[] = {
  NSPAIR(_ZN7S2442C2C1Ev),
  NSPAIR(_ZN7S2442C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
extern Class_Descriptor cd_S2442C3;
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
static Base_Class bases_S2442C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2442C2[];
extern void _ZN7S2442C2D1Ev();
extern void _ZN7S2442C2D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
extern void _ZN7S2442C23v20Ev();
extern void _ZN7S2442C23v21Ev();
extern void _ZN7S2442C23v22Ev();
static  VTBL_ENTRY vtc_S2442C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C2[0]),
  (VTBL_ENTRY)&_ZN7S2442C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S2442C2[];
extern  VTBL_ENTRY _ZTV7S2442C2[];
Class_Descriptor cd_S2442C2 = {  "S2442C2", // class name
  bases_S2442C2, 2,
  &(vtc_S2442C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2442C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C2),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  S2442C9_nt  {
  ::S17556C4_nt s2442c9f0;
  void  mf2442c9(); // _ZN10S2442C9_nt8mf2442c9Ev
};
//SIG(-1 S2442C9_nt) C1{ m FC2{ FL[4]}}


void  S2442C9_nt ::mf2442c9(){}

//skip512 S2442C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C12_nt  {
  int s2442c12f0[4];
};
//SIG(-1 S2442C12_nt) C1{ Fi[4]}



//skip512 S2442C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C11_nt  {
  void *s2442c11f0;
  ::S2442C12_nt s2442c11f1;
  void  mf2442c11(); // _ZN11S2442C11_nt9mf2442c11Ev
};
//SIG(-1 S2442C11_nt) C1{ m Fp FC2{ Fi[4]}}


void  S2442C11_nt ::mf2442c11(){}

//skip512 S2442C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C10_nt  {
  void *s2442c10f0;
  ::S2442C9_nt s2442c10f1;
  ::S2442C11_nt s2442c10f2;
  int s2442c10f3;
  char s2442c10f4;
  void  mf2442c10(); // _ZN11S2442C10_nt9mf2442c10Ev
};
//SIG(-1 S2442C10_nt) C1{ m Fp FC2{ m FC3{ FL[4]}} FC4{ m Fp FC5{ Fi[4]}} Fi Fc}


void  S2442C10_nt ::mf2442c10(){}

//skip512 S2442C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2442C1  : S2442C2 {
  int s2442c1f0;
  ::S2442C9_nt s2442c1f1;
  ::S2442C10_nt s2442c1f2;
  virtual  ~S2442C1(); // _ZN7S2442C1D1Ev
  virtual void  v1(); // _ZN7S2442C12v1Ev
  virtual void  v2(); // _ZN7S2442C12v2Ev
  virtual void  v3(); // _ZN7S2442C12v3Ev
  virtual void  v4(); // _ZN7S2442C12v4Ev
  virtual void  v5(); // _ZN7S2442C12v5Ev
  virtual void  v6(); // _ZN7S2442C12v6Ev
  virtual void  v7(); // _ZN7S2442C12v7Ev
  virtual void  v8(); // _ZN7S2442C12v8Ev
  S2442C1(); // tgen
};
//SIG(1 S2442C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11} vd v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 v22 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ FL[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi FC9{ m FC8} FC10{ m Fp FC9 FC11{ m Fp FC12{ Fi[4]}} Fi Fc}}


 S2442C1 ::~S2442C1(){ note_dtor("S2442C1", this);}
void  S2442C1 ::v1(){vfunc_called(this, "_ZN7S2442C12v1Ev");}
void  S2442C1 ::v2(){vfunc_called(this, "_ZN7S2442C12v2Ev");}
void  S2442C1 ::v3(){vfunc_called(this, "_ZN7S2442C12v3Ev");}
void  S2442C1 ::v4(){vfunc_called(this, "_ZN7S2442C12v4Ev");}
void  S2442C1 ::v5(){vfunc_called(this, "_ZN7S2442C12v5Ev");}
void  S2442C1 ::v6(){vfunc_called(this, "_ZN7S2442C12v6Ev");}
void  S2442C1 ::v7(){vfunc_called(this, "_ZN7S2442C12v7Ev");}
void  S2442C1 ::v8(){vfunc_called(this, "_ZN7S2442C12v8Ev");}
S2442C1 ::S2442C1(){ note_ctor("S2442C1", this);} // tgen

static void Test_S2442C1()
{
  extern Class_Descriptor cd_S2442C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,40)];
    init_test(&cd_S2442C1, buf);
    S2442C1 *dp, &lv = *(dp=new (buf) S2442C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,156), "sizeof(S2442C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2442C1)");
    check_base_class_offset(lv, (S2442C4*)(S2442C3*)(S2442C2*), 0, "S2442C1");
    check_base_class_offset(lv, (S2442C3*)(S2442C2*), 0, "S2442C1");
    check_base_class_offset(lv, (S2442C2*), 0, "S2442C1");
    check_field_offset(lv, s2442c1f0, ABISELECT(68,56), "S2442C1.s2442c1f0");
    check_field_offset(lv, s2442c1f1, ABISELECT(72,60), "S2442C1.s2442c1f1");
    check_field_offset(lv, s2442c1f2, ABISELECT(104,92), "S2442C1.s2442c1f2");
    test_class_info(&lv, &cd_S2442C1);
    dp->~S2442C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2442C1(Test_S2442C1, "S2442C1", ABISELECT(176,156));

#else // __cplusplus

extern void _ZN7S2442C1C1Ev();
extern void _ZN7S2442C1D1Ev();
Name_Map name_map_S2442C1[] = {
  NSPAIR(_ZN7S2442C1C1Ev),
  NSPAIR(_ZN7S2442C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2442C4;
extern VTBL_ENTRY _ZTI7S2442C4[];
extern  VTBL_ENTRY _ZTV7S2442C4[];
extern Class_Descriptor cd_S2442C3;
extern VTBL_ENTRY _ZTI7S2442C3[];
extern  VTBL_ENTRY _ZTV7S2442C3[];
extern Class_Descriptor cd_S2442C2;
extern VTBL_ENTRY _ZTI7S2442C2[];
extern  VTBL_ENTRY _ZTV7S2442C2[];
static Base_Class bases_S2442C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2442C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2442C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2442C1[];
extern void _ZN7S2442C1D1Ev();
extern void _ZN7S2442C1D0Ev();
extern void _ZN7S2442C42v9Ev();
extern void _ZN7S2442C43v10Ev();
extern void _ZN7S2442C43v11Ev();
extern void _ZN7S2442C33v12Ev();
extern void _ZN7S2442C33v13Ev();
extern void _ZN7S2442C33v14Ev();
extern void _ZN7S2442C33v15Ev();
extern void _ZN7S2442C33v16Ev();
extern void _ZN7S2442C33v17Ev();
extern void _ZN7S2442C33v18Ev();
extern void _ZN7S2442C33v19Ev();
extern void _ZN7S2442C23v20Ev();
extern void _ZN7S2442C23v21Ev();
extern void _ZN7S2442C23v22Ev();
extern void _ZN7S2442C12v1Ev();
extern void _ZN7S2442C12v2Ev();
extern void _ZN7S2442C12v3Ev();
extern void _ZN7S2442C12v4Ev();
extern void _ZN7S2442C12v5Ev();
extern void _ZN7S2442C12v6Ev();
extern void _ZN7S2442C12v7Ev();
extern void _ZN7S2442C12v8Ev();
static  VTBL_ENTRY vtc_S2442C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2442C1[0]),
  (VTBL_ENTRY)&_ZN7S2442C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2442C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2442C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2442C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2442C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2442C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2442C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2442C1[];
extern  VTBL_ENTRY _ZTV7S2442C1[];
Class_Descriptor cd_S2442C1 = {  "S2442C1", // class name
  bases_S2442C1, 3,
  &(vtc_S2442C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,156), // object size
  NSPAIRA(_ZTI7S2442C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2442C1),26, //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  S3750C3_nt  {
  int s3750c3f0;
  void  mf3750c3(); // _ZN10S3750C3_nt8mf3750c3Ev
  virtual  ~S3750C3_nt(); // _ZN10S3750C3_ntD1Ev
  S3750C3_nt(); // tgen
};
//SIG(-1 S3750C3_nt) C1{ vd m Fi}


void  S3750C3_nt ::mf3750c3(){}
 S3750C3_nt ::~S3750C3_nt(){ note_dtor("S3750C3_nt", this);}
S3750C3_nt ::S3750C3_nt(){ note_ctor("S3750C3_nt", this);} // tgen

//skip512 S3750C3_nt

#else // __cplusplus

extern void _ZN10S3750C3_ntC1Ev();
extern void _ZN10S3750C3_ntD1Ev();
Name_Map name_map_S3750C3_nt[] = {
  NSPAIR(_ZN10S3750C3_ntC1Ev),
  NSPAIR(_ZN10S3750C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern void _ZN10S3750C3_ntD1Ev();
extern void _ZN10S3750C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3750C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3750C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3750C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3750C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
VTBL_ENTRY *P__ZTI10S3750C3_nt = _ZTI10S3750C3_nt; 
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
Class_Descriptor cd_S3750C3_nt = {  "S3750C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3750C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3750C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3750C3_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  S3750C2_nt  : S3750C3_nt {
  virtual void  v8(); // _ZN10S3750C2_nt2v8Ev
  virtual void  v9(); // _ZN10S3750C2_nt2v9Ev
  virtual void  v10(); // _ZN10S3750C2_nt3v10Ev
  virtual void  v11(); // _ZN10S3750C2_nt3v11Ev
  virtual void  v12(); // _ZN10S3750C2_nt3v12Ev
  virtual void  v13(); // _ZN10S3750C2_nt3v13Ev
  virtual void  v14(); // _ZN10S3750C2_nt3v14Ev
  virtual void  v15(); // _ZN10S3750C2_nt3v15Ev
  virtual void  v16(); // _ZN10S3750C2_nt3v16Ev
  virtual void  v17(); // _ZN10S3750C2_nt3v17Ev
  virtual void  v18(); // _ZN10S3750C2_nt3v18Ev
  virtual void  v19(); // _ZN10S3750C2_nt3v19Ev
  ~S3750C2_nt(); // tgen
  S3750C2_nt(); // tgen
};
//SIG(-1 S3750C2_nt) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3750C2_nt ::v8(){vfunc_called(this, "_ZN10S3750C2_nt2v8Ev");}
void  S3750C2_nt ::v9(){vfunc_called(this, "_ZN10S3750C2_nt2v9Ev");}
void  S3750C2_nt ::v10(){vfunc_called(this, "_ZN10S3750C2_nt3v10Ev");}
void  S3750C2_nt ::v11(){vfunc_called(this, "_ZN10S3750C2_nt3v11Ev");}
void  S3750C2_nt ::v12(){vfunc_called(this, "_ZN10S3750C2_nt3v12Ev");}
void  S3750C2_nt ::v13(){vfunc_called(this, "_ZN10S3750C2_nt3v13Ev");}
void  S3750C2_nt ::v14(){vfunc_called(this, "_ZN10S3750C2_nt3v14Ev");}
void  S3750C2_nt ::v15(){vfunc_called(this, "_ZN10S3750C2_nt3v15Ev");}
void  S3750C2_nt ::v16(){vfunc_called(this, "_ZN10S3750C2_nt3v16Ev");}
void  S3750C2_nt ::v17(){vfunc_called(this, "_ZN10S3750C2_nt3v17Ev");}
void  S3750C2_nt ::v18(){vfunc_called(this, "_ZN10S3750C2_nt3v18Ev");}
void  S3750C2_nt ::v19(){vfunc_called(this, "_ZN10S3750C2_nt3v19Ev");}
S3750C2_nt ::~S3750C2_nt(){ note_dtor("S3750C2_nt", this);} // tgen
S3750C2_nt ::S3750C2_nt(){ note_ctor("S3750C2_nt", this);} // tgen

//skip512 S3750C2_nt

#else // __cplusplus

extern void _ZN10S3750C2_ntC1Ev();
extern void _ZN10S3750C2_ntD1Ev();
Name_Map name_map_S3750C2_nt[] = {
  NSPAIR(_ZN10S3750C2_ntC1Ev),
  NSPAIR(_ZN10S3750C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3750C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S3750C2_nt[];
extern void _ZN10S3750C2_ntD1Ev();
extern void _ZN10S3750C2_ntD0Ev();
extern void _ZN10S3750C2_nt2v8Ev();
extern void _ZN10S3750C2_nt2v9Ev();
extern void _ZN10S3750C2_nt3v10Ev();
extern void _ZN10S3750C2_nt3v11Ev();
extern void _ZN10S3750C2_nt3v12Ev();
extern void _ZN10S3750C2_nt3v13Ev();
extern void _ZN10S3750C2_nt3v14Ev();
extern void _ZN10S3750C2_nt3v15Ev();
extern void _ZN10S3750C2_nt3v16Ev();
extern void _ZN10S3750C2_nt3v17Ev();
extern void _ZN10S3750C2_nt3v18Ev();
extern void _ZN10S3750C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S3750C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3750C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3750C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S3750C2_nt[];
VTBL_ENTRY *P__ZTI10S3750C2_nt = _ZTI10S3750C2_nt; 
extern  VTBL_ENTRY _ZTV10S3750C2_nt[];
Class_Descriptor cd_S3750C2_nt = {  "S3750C2_nt", // class name
  bases_S3750C2_nt, 1,
  &(vtc_S3750C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3750C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3750C2_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C9_nt  {
  ::S1868C13_nt s3750c9f0;
  void *s3750c9f1[2];
  void  mf3750c9(); // _ZN10S3750C9_nt8mf3750c9Ev
};
//SIG(-1 S3750C9_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S3750C9_nt ::mf3750c9(){}

//skip512 S3750C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3750C1  : S3750C2_nt {
  ::S17556C28_nt s3750c1f0;
  ::S18423C15_nt s3750c1f1;
  int s3750c1f2;
  ::S17556C15_nt s3750c1f3;
  ::S17556C15_nt s3750c1f4;
  ::S3750C9_nt s3750c1f5;
  int s3750c1f6;
  char s3750c1f7;
  int s3750c1f8;
  void *s3750c1f9[2];
  virtual  ~S3750C1(); // _ZN7S3750C1D1Ev
  virtual void  v1(); // _ZN7S3750C12v1Ev
  virtual void  v2(); // _ZN7S3750C12v2Ev
  virtual void  v3(); // _ZN7S3750C12v3Ev
  virtual void  v4(); // _ZN7S3750C12v4Ev
  virtual void  v5(); // _ZN7S3750C12v5Ev
  virtual void  v6(); // _ZN7S3750C12v6Ev
  virtual void  v7(); // _ZN7S3750C12v7Ev
  S3750C1(); // tgen
};
//SIG(1 S3750C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} FC5{ m Fp Fi FC6{ m}} Fi FC7{ m Fp Fi[2] FC8{ m}} FC7 FC9{ m FC10{ m Fp Fi[2] FC6} Fp[2]} Fi Fc Fi Fp[2]}


 S3750C1 ::~S3750C1(){ note_dtor("S3750C1", this);}
void  S3750C1 ::v1(){vfunc_called(this, "_ZN7S3750C12v1Ev");}
void  S3750C1 ::v2(){vfunc_called(this, "_ZN7S3750C12v2Ev");}
void  S3750C1 ::v3(){vfunc_called(this, "_ZN7S3750C12v3Ev");}
void  S3750C1 ::v4(){vfunc_called(this, "_ZN7S3750C12v4Ev");}
void  S3750C1 ::v5(){vfunc_called(this, "_ZN7S3750C12v5Ev");}
void  S3750C1 ::v6(){vfunc_called(this, "_ZN7S3750C12v6Ev");}
void  S3750C1 ::v7(){vfunc_called(this, "_ZN7S3750C12v7Ev");}
S3750C1 ::S3750C1(){ note_ctor("S3750C1", this);} // tgen

static void Test_S3750C1()
{
  extern Class_Descriptor cd_S3750C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S3750C1, buf);
    S3750C1 *dp, &lv = *(dp=new (buf) S3750C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S3750C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3750C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3750C2_nt*), 0, "S3750C1");
    check_base_class_offset(lv, (S3750C2_nt*), 0, "S3750C1");
    check_field_offset(lv, s3750c1f0, ABISELECT(16,8), "S3750C1.s3750c1f0");
    check_field_offset(lv, s3750c1f1, ABISELECT(32,16), "S3750C1.s3750c1f1");
    check_field_offset(lv, s3750c1f2, ABISELECT(48,28), "S3750C1.s3750c1f2");
    check_field_offset(lv, s3750c1f3, ABISELECT(56,32), "S3750C1.s3750c1f3");
    check_field_offset(lv, s3750c1f4, ABISELECT(80,48), "S3750C1.s3750c1f4");
    check_field_offset(lv, s3750c1f5, ABISELECT(104,64), "S3750C1.s3750c1f5");
    check_field_offset(lv, s3750c1f6, ABISELECT(144,88), "S3750C1.s3750c1f6");
    check_field_offset(lv, s3750c1f7, ABISELECT(148,92), "S3750C1.s3750c1f7");
    check_field_offset(lv, s3750c1f8, ABISELECT(152,96), "S3750C1.s3750c1f8");
    check_field_offset(lv, s3750c1f9, ABISELECT(160,100), "S3750C1.s3750c1f9");
    test_class_info(&lv, &cd_S3750C1);
    dp->~S3750C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3750C1(Test_S3750C1, "S3750C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S3750C1C1Ev();
extern void _ZN7S3750C1D1Ev();
Name_Map name_map_S3750C1[] = {
  NSPAIR(_ZN7S3750C1C1Ev),
  NSPAIR(_ZN7S3750C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3750C2_nt;
extern VTBL_ENTRY _ZTI10S3750C2_nt[];
extern  VTBL_ENTRY _ZTV10S3750C2_nt[];
static Base_Class bases_S3750C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3750C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3750C1[];
extern void _ZN7S3750C1D1Ev();
extern void _ZN7S3750C1D0Ev();
extern void _ZN10S3750C2_nt2v8Ev();
extern void _ZN10S3750C2_nt2v9Ev();
extern void _ZN10S3750C2_nt3v10Ev();
extern void _ZN10S3750C2_nt3v11Ev();
extern void _ZN10S3750C2_nt3v12Ev();
extern void _ZN10S3750C2_nt3v13Ev();
extern void _ZN10S3750C2_nt3v14Ev();
extern void _ZN10S3750C2_nt3v15Ev();
extern void _ZN10S3750C2_nt3v16Ev();
extern void _ZN10S3750C2_nt3v17Ev();
extern void _ZN10S3750C2_nt3v18Ev();
extern void _ZN10S3750C2_nt3v19Ev();
extern void _ZN7S3750C12v1Ev();
extern void _ZN7S3750C12v2Ev();
extern void _ZN7S3750C12v3Ev();
extern void _ZN7S3750C12v4Ev();
extern void _ZN7S3750C12v5Ev();
extern void _ZN7S3750C12v6Ev();
extern void _ZN7S3750C12v7Ev();
static  VTBL_ENTRY vtc_S3750C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3750C1[0]),
  (VTBL_ENTRY)&_ZN7S3750C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3750C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3750C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3750C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3750C1[];
extern  VTBL_ENTRY _ZTV7S3750C1[];
Class_Descriptor cd_S3750C1 = {  "S3750C1", // class name
  bases_S3750C1, 2,
  &(vtc_S3750C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S3750C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3750C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C6_nt  {
  void *s5925c6f0[2];
  void  mf5925c6(); // _ZN10S5925C6_nt8mf5925c6Ev
};
//SIG(-1 S5925C6_nt) C1{ m Fp[2]}


void  S5925C6_nt ::mf5925c6(){}

//skip512 S5925C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C2_nt  {
  __tsi64 s5925c2f0[2];
  void *s5925c2f1;
  ::S18423C15_nt s5925c2f2;
  void *s5925c2f3;
  ::S17556C28_nt s5925c2f4;
  ::S5925C6_nt s5925c2f5;
  void  mf5925c2(); // _ZN10S5925C2_nt8mf5925c2Ev
};
//SIG(-1 S5925C2_nt) C1{ m FL[2] Fp FC2{ m Fp Fi FC3{ m}} Fp FC4{ m Fp[2]} FC5{ m Fp[2]}}


void  S5925C2_nt ::mf5925c2(){}

//skip512 S5925C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S5925C2_nt[];
VTBL_ENTRY *P__ZTI10S5925C2_nt = _ZTI10S5925C2_nt; 
Class_Descriptor cd_S5925C2_nt = {  "S5925C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI10S5925C2_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  S5925C7_nt  {
  __tsi64 s5925c7f0[2];
  char s5925c7f1;
  int s5925c7f2;
  ::S18423C15_nt s5925c7f3;
  ::S18423C15_nt s5925c7f4;
  ::S18423C15_nt s5925c7f5;
  ::S18423C15_nt s5925c7f6;
  ::S18423C15_nt s5925c7f7;
  ::S18423C15_nt s5925c7f8;
  ::S18423C15_nt s5925c7f9;
  ::S18423C15_nt s5925c7f10;
  ::S18423C15_nt s5925c7f11;
  ::S18423C15_nt s5925c7f12;
  ::S18423C15_nt s5925c7f13;
  ::S18423C15_nt s5925c7f14;
  int s5925c7f15[3];
  ::S18423C15_nt s5925c7f16;
  ::S18423C15_nt s5925c7f17;
  ::S18423C15_nt s5925c7f18;
  __tsi64 s5925c7f19[2];
  int s5925c7f20[4];
  ::S18423C15_nt s5925c7f21;
  ::S18423C15_nt s5925c7f22;
  int s5925c7f23[2];
  __tsi64 s5925c7f24;
  int s5925c7f25[5];
  __tsi64 s5925c7f26;
  char s5925c7f27;
  void  mf5925c7(); // _ZN10S5925C7_nt8mf5925c7Ev
};
//SIG(-1 S5925C7_nt) C1{ m FL[2] Fc Fi FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 Fi[3] FC2 FC2 FC2 FL[2] Fi[4] FC2 FC2 Fi[2] FL Fi[5] FL Fc}


void  S5925C7_nt ::mf5925c7(){}

//skip512 S5925C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5925C1  : S5925C2_nt {
  int s5925c1f0;
  ::S5925C7_nt s5925c1f1;
  virtual  ~S5925C1(); // _ZN7S5925C1D1Ev
  S5925C1(); // tgen
};
//SIG(1 S5925C1) C1{ BC2{ m FL[2] Fp FC3{ m Fp Fi FC4{ m}} Fp FC5{ m Fp[2]} FC6{ m Fp[2]}} vd Fi FC7{ m FL[2] Fc Fi FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 Fi[3] FC3 FC3 FC3 FL[2] Fi[4] FC3 FC3 Fi[2] FL Fi[5] FL Fc}}


 S5925C1 ::~S5925C1(){ note_dtor("S5925C1", this);}
S5925C1 ::S5925C1(){ note_ctor("S5925C1", this);} // tgen

static void Test_S5925C1()
{
  extern Class_Descriptor cd_S5925C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,96)];
    init_test(&cd_S5925C1, buf);
    S5925C1 *dp, &lv = *(dp=new (buf) S5925C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,380), "sizeof(S5925C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5925C1)");
    check_base_class_offset(lv, (S5925C2_nt*), ABISELECT(8,4), "S5925C1");
    check_field_offset(lv, s5925c1f0, ABISELECT(88,56), "S5925C1.s5925c1f0");
    check_field_offset(lv, s5925c1f1, ABISELECT(96,60), "S5925C1.s5925c1f1");
    test_class_info(&lv, &cd_S5925C1);
    dp->~S5925C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5925C1(Test_S5925C1, "S5925C1", ABISELECT(496,380));

#else // __cplusplus

extern void _ZN7S5925C1C1Ev();
extern void _ZN7S5925C1D1Ev();
Name_Map name_map_S5925C1[] = {
  NSPAIR(_ZN7S5925C1C1Ev),
  NSPAIR(_ZN7S5925C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5925C2_nt;
extern VTBL_ENTRY _ZTI10S5925C2_nt[];
static Base_Class bases_S5925C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5925C2_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 _ZTI7S5925C1[];
extern void _ZN7S5925C1D1Ev();
extern void _ZN7S5925C1D0Ev();
static  VTBL_ENTRY vtc_S5925C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5925C1[0]),
  (VTBL_ENTRY)&_ZN7S5925C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5925C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5925C1[];
extern  VTBL_ENTRY _ZTV7S5925C1[];
Class_Descriptor cd_S5925C1 = {  "S5925C1", // class name
  bases_S5925C1, 1,
  &(vtc_S5925C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(496,380), // object size
  NSPAIRA(_ZTI7S5925C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5925C1),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  S2436C4_nt  {
  char s2436c4f0;
  int s2436c4f1;
  virtual  ~S2436C4_nt(); // _ZN10S2436C4_ntD1Ev
  virtual void  v9(); // _ZN10S2436C4_nt2v9Ev
  S2436C4_nt(); // tgen
};
//SIG(-1 S2436C4_nt) C1{ vd v1 Fc Fi}


 S2436C4_nt ::~S2436C4_nt(){ note_dtor("S2436C4_nt", this);}
void  S2436C4_nt ::v9(){vfunc_called(this, "_ZN10S2436C4_nt2v9Ev");}
S2436C4_nt ::S2436C4_nt(){ note_ctor("S2436C4_nt", this);} // tgen

//skip512 S2436C4_nt

#else // __cplusplus

extern void _ZN10S2436C4_ntC1Ev();
extern void _ZN10S2436C4_ntD1Ev();
Name_Map name_map_S2436C4_nt[] = {
  NSPAIR(_ZN10S2436C4_ntC1Ev),
  NSPAIR(_ZN10S2436C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern void _ZN10S2436C4_ntD1Ev();
extern void _ZN10S2436C4_ntD0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S2436C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2436C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2436C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
VTBL_ENTRY *P__ZTI10S2436C4_nt = _ZTI10S2436C4_nt; 
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
Class_Descriptor cd_S2436C4_nt = {  "S2436C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2436C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S2436C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2436C4_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  S2436C5_nt  {
  void *s2436c5f0;
};
//SIG(-1 S2436C5_nt) C1{ Fp}



//skip512 S2436C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C6  : S2436C4_nt {
  __tsi64 s2436c6f0[4];
  virtual  ~S2436C6(); // _ZN7S2436C6D1Ev
  virtual void  v20(); // _ZN7S2436C63v20Ev
  virtual void  v21(); // _ZN7S2436C63v21Ev
  S2436C6(); // tgen
};
//SIG(-1 S2436C6) C1{ BC2{ vd v3 Fc Fi} vd v1 v2 FL[4]}


 S2436C6 ::~S2436C6(){ note_dtor("S2436C6", this);}
void  S2436C6 ::v20(){vfunc_called(this, "_ZN7S2436C63v20Ev");}
void  S2436C6 ::v21(){vfunc_called(this, "_ZN7S2436C63v21Ev");}
S2436C6 ::S2436C6(){ note_ctor("S2436C6", this);} // tgen

static void Test_S2436C6()
{
  extern Class_Descriptor cd_S2436C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2436C6, buf);
    S2436C6 *dp, &lv = *(dp=new (buf) S2436C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2436C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C6)");
    check_base_class_offset(lv, (S2436C4_nt*), 0, "S2436C6");
    check_field_offset(lv, s2436c6f0, ABISELECT(16,12), "S2436C6.s2436c6f0");
    test_class_info(&lv, &cd_S2436C6);
    dp->~S2436C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C6(Test_S2436C6, "S2436C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S2436C6C1Ev();
extern void _ZN7S2436C6D1Ev();
Name_Map name_map_S2436C6[] = {
  NSPAIR(_ZN7S2436C6C1Ev),
  NSPAIR(_ZN7S2436C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
static Base_Class bases_S2436C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2436C6[];
extern void _ZN7S2436C6D1Ev();
extern void _ZN7S2436C6D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C63v20Ev();
extern void _ZN7S2436C63v21Ev();
static  VTBL_ENTRY vtc_S2436C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C6[0]),
  (VTBL_ENTRY)&_ZN7S2436C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C6D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C63v20Ev,
  (VTBL_ENTRY)&_ZN7S2436C63v21Ev,
};
extern VTBL_ENTRY _ZTI7S2436C6[];
extern  VTBL_ENTRY _ZTV7S2436C6[];
Class_Descriptor cd_S2436C6 = {  "S2436C6", // class name
  bases_S2436C6, 1,
  &(vtc_S2436C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S2436C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2436C3  : S2436C4_nt {
  int s2436c3f0[2];
  char s2436c3f1;
  ::S2436C5_nt s2436c3f2;
  ::S2436C6 s2436c3f3;
  virtual  ~S2436C3(); // _ZN7S2436C3D1Ev
  virtual void  v10(); // _ZN7S2436C33v10Ev
  S2436C3(); // tgen
};
//SIG(-1 S2436C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC2 vd v3 v4 FL[4]}}


 S2436C3 ::~S2436C3(){ note_dtor("S2436C3", this);}
void  S2436C3 ::v10(){vfunc_called(this, "_ZN7S2436C33v10Ev");}
S2436C3 ::S2436C3(){ note_ctor("S2436C3", this);} // tgen

static void Test_S2436C3()
{
  extern Class_Descriptor cd_S2436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2436C3, buf);
    S2436C3 *dp, &lv = *(dp=new (buf) S2436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C3)");
    check_base_class_offset(lv, (S2436C4_nt*), 0, "S2436C3");
    check_field_offset(lv, s2436c3f0, ABISELECT(16,12), "S2436C3.s2436c3f0");
    check_field_offset(lv, s2436c3f1, ABISELECT(24,20), "S2436C3.s2436c3f1");
    check_field_offset(lv, s2436c3f2, ABISELECT(32,24), "S2436C3.s2436c3f2");
    check_field_offset(lv, s2436c3f3, ABISELECT(40,28), "S2436C3.s2436c3f3");
    test_class_info(&lv, &cd_S2436C3);
    dp->~S2436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C3(Test_S2436C3, "S2436C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2436C3C1Ev();
extern void _ZN7S2436C3D1Ev();
Name_Map name_map_S2436C3[] = {
  NSPAIR(_ZN7S2436C3C1Ev),
  NSPAIR(_ZN7S2436C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
static Base_Class bases_S2436C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2436C3[];
extern void _ZN7S2436C3D1Ev();
extern void _ZN7S2436C3D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
static  VTBL_ENTRY vtc_S2436C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C3[0]),
  (VTBL_ENTRY)&_ZN7S2436C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C3D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
Class_Descriptor cd_S2436C3 = {  "S2436C3", // class name
  bases_S2436C3, 1,
  &(vtc_S2436C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2436C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C3),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  S2436C2  : S2436C3 {
  void *s2436c2f0[3];
  int s2436c2f1;
  void *s2436c2f2[2];
  int s2436c2f3[3];
  char s2436c2f4[2];
  void *s2436c2f5;
  char s2436c2f6;
  void *s2436c2f7;
  __tsi64 s2436c2f8[2];
  virtual  ~S2436C2(); // _ZN7S2436C2D1Ev
  virtual void  v11(); // _ZN7S2436C23v11Ev
  virtual void  v12(); // _ZN7S2436C23v12Ev
  virtual void  v13(); // _ZN7S2436C23v13Ev
  virtual void  v14(); // _ZN7S2436C23v14Ev
  virtual void  v15(); // _ZN7S2436C23v15Ev
  virtual void  v16(); // _ZN7S2436C23v16Ev
  virtual void  v17(); // _ZN7S2436C23v17Ev
  virtual void  v18(); // _ZN7S2436C23v18Ev
  virtual void  v19(); // _ZN7S2436C23v19Ev
  S2436C2(); // tgen
};
//SIG(-1 S2436C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC3 vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2436C2 ::~S2436C2(){ note_dtor("S2436C2", this);}
void  S2436C2 ::v11(){vfunc_called(this, "_ZN7S2436C23v11Ev");}
void  S2436C2 ::v12(){vfunc_called(this, "_ZN7S2436C23v12Ev");}
void  S2436C2 ::v13(){vfunc_called(this, "_ZN7S2436C23v13Ev");}
void  S2436C2 ::v14(){vfunc_called(this, "_ZN7S2436C23v14Ev");}
void  S2436C2 ::v15(){vfunc_called(this, "_ZN7S2436C23v15Ev");}
void  S2436C2 ::v16(){vfunc_called(this, "_ZN7S2436C23v16Ev");}
void  S2436C2 ::v17(){vfunc_called(this, "_ZN7S2436C23v17Ev");}
void  S2436C2 ::v18(){vfunc_called(this, "_ZN7S2436C23v18Ev");}
void  S2436C2 ::v19(){vfunc_called(this, "_ZN7S2436C23v19Ev");}
S2436C2 ::S2436C2(){ note_ctor("S2436C2", this);} // tgen

static void Test_S2436C2()
{
  extern Class_Descriptor cd_S2436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2436C2, buf);
    S2436C2 *dp, &lv = *(dp=new (buf) S2436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C2)");
    check_base_class_offset(lv, (S2436C4_nt*)(S2436C3*), 0, "S2436C2");
    check_base_class_offset(lv, (S2436C3*), 0, "S2436C2");
    check_field_offset(lv, s2436c2f0, ABISELECT(88,72), "S2436C2.s2436c2f0");
    check_field_offset(lv, s2436c2f1, ABISELECT(112,84), "S2436C2.s2436c2f1");
    check_field_offset(lv, s2436c2f2, ABISELECT(120,88), "S2436C2.s2436c2f2");
    check_field_offset(lv, s2436c2f3, ABISELECT(136,96), "S2436C2.s2436c2f3");
    check_field_offset(lv, s2436c2f4, ABISELECT(148,108), "S2436C2.s2436c2f4");
    check_field_offset(lv, s2436c2f5, ABISELECT(152,112), "S2436C2.s2436c2f5");
    check_field_offset(lv, s2436c2f6, ABISELECT(160,116), "S2436C2.s2436c2f6");
    check_field_offset(lv, s2436c2f7, ABISELECT(168,120), "S2436C2.s2436c2f7");
    check_field_offset(lv, s2436c2f8, ABISELECT(176,124), "S2436C2.s2436c2f8");
    test_class_info(&lv, &cd_S2436C2);
    dp->~S2436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C2(Test_S2436C2, "S2436C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2436C2C1Ev();
extern void _ZN7S2436C2D1Ev();
Name_Map name_map_S2436C2[] = {
  NSPAIR(_ZN7S2436C2C1Ev),
  NSPAIR(_ZN7S2436C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
extern Class_Descriptor cd_S2436C3;
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
static Base_Class bases_S2436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2436C2[];
extern void _ZN7S2436C2D1Ev();
extern void _ZN7S2436C2D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
extern void _ZN7S2436C23v11Ev();
extern void _ZN7S2436C23v12Ev();
extern void _ZN7S2436C23v13Ev();
extern void _ZN7S2436C23v14Ev();
extern void _ZN7S2436C23v15Ev();
extern void _ZN7S2436C23v16Ev();
extern void _ZN7S2436C23v17Ev();
extern void _ZN7S2436C23v18Ev();
extern void _ZN7S2436C23v19Ev();
static  VTBL_ENTRY vtc_S2436C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C2[0]),
  (VTBL_ENTRY)&_ZN7S2436C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C2D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2436C2[];
extern  VTBL_ENTRY _ZTV7S2436C2[];
Class_Descriptor cd_S2436C2 = {  "S2436C2", // class name
  bases_S2436C2, 2,
  &(vtc_S2436C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C2),15, //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  S2436C1  : S2436C2 {
  int s2436c1f0;
  void *s2436c1f1[2];
  virtual  ~S2436C1(); // _ZN7S2436C1D1Ev
  virtual void  v1(); // _ZN7S2436C12v1Ev
  virtual void  v2(); // _ZN7S2436C12v2Ev
  virtual void  v3(); // _ZN7S2436C12v3Ev
  virtual void  v4(); // _ZN7S2436C12v4Ev
  virtual void  v5(); // _ZN7S2436C12v5Ev
  virtual void  v6(); // _ZN7S2436C12v6Ev
  virtual void  v7(); // _ZN7S2436C12v7Ev
  virtual void  v8(); // _ZN7S2436C12v8Ev
  S2436C1(); // tgen
};
//SIG(1 S2436C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC4 vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fp[2]}


 S2436C1 ::~S2436C1(){ note_dtor("S2436C1", this);}
void  S2436C1 ::v1(){vfunc_called(this, "_ZN7S2436C12v1Ev");}
void  S2436C1 ::v2(){vfunc_called(this, "_ZN7S2436C12v2Ev");}
void  S2436C1 ::v3(){vfunc_called(this, "_ZN7S2436C12v3Ev");}
void  S2436C1 ::v4(){vfunc_called(this, "_ZN7S2436C12v4Ev");}
void  S2436C1 ::v5(){vfunc_called(this, "_ZN7S2436C12v5Ev");}
void  S2436C1 ::v6(){vfunc_called(this, "_ZN7S2436C12v6Ev");}
void  S2436C1 ::v7(){vfunc_called(this, "_ZN7S2436C12v7Ev");}
void  S2436C1 ::v8(){vfunc_called(this, "_ZN7S2436C12v8Ev");}
S2436C1 ::S2436C1(){ note_ctor("S2436C1", this);} // tgen

static void Test_S2436C1()
{
  extern Class_Descriptor cd_S2436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,39)];
    init_test(&cd_S2436C1, buf);
    S2436C1 *dp, &lv = *(dp=new (buf) S2436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,152), "sizeof(S2436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2436C1)");
    check_base_class_offset(lv, (S2436C4_nt*)(S2436C3*)(S2436C2*), 0, "S2436C1");
    check_base_class_offset(lv, (S2436C3*)(S2436C2*), 0, "S2436C1");
    check_base_class_offset(lv, (S2436C2*), 0, "S2436C1");
    check_field_offset(lv, s2436c1f0, ABISELECT(192,140), "S2436C1.s2436c1f0");
    check_field_offset(lv, s2436c1f1, ABISELECT(200,144), "S2436C1.s2436c1f1");
    test_class_info(&lv, &cd_S2436C1);
    dp->~S2436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2436C1(Test_S2436C1, "S2436C1", ABISELECT(216,152));

#else // __cplusplus

extern void _ZN7S2436C1C1Ev();
extern void _ZN7S2436C1D1Ev();
Name_Map name_map_S2436C1[] = {
  NSPAIR(_ZN7S2436C1C1Ev),
  NSPAIR(_ZN7S2436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2436C4_nt;
extern VTBL_ENTRY _ZTI10S2436C4_nt[];
extern  VTBL_ENTRY _ZTV10S2436C4_nt[];
extern Class_Descriptor cd_S2436C3;
extern VTBL_ENTRY _ZTI7S2436C3[];
extern  VTBL_ENTRY _ZTV7S2436C3[];
extern Class_Descriptor cd_S2436C2;
extern VTBL_ENTRY _ZTI7S2436C2[];
extern  VTBL_ENTRY _ZTV7S2436C2[];
static Base_Class bases_S2436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2436C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2436C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2436C1[];
extern void _ZN7S2436C1D1Ev();
extern void _ZN7S2436C1D0Ev();
extern void _ZN10S2436C4_nt2v9Ev();
extern void _ZN7S2436C33v10Ev();
extern void _ZN7S2436C23v11Ev();
extern void _ZN7S2436C23v12Ev();
extern void _ZN7S2436C23v13Ev();
extern void _ZN7S2436C23v14Ev();
extern void _ZN7S2436C23v15Ev();
extern void _ZN7S2436C23v16Ev();
extern void _ZN7S2436C23v17Ev();
extern void _ZN7S2436C23v18Ev();
extern void _ZN7S2436C23v19Ev();
extern void _ZN7S2436C12v1Ev();
extern void _ZN7S2436C12v2Ev();
extern void _ZN7S2436C12v3Ev();
extern void _ZN7S2436C12v4Ev();
extern void _ZN7S2436C12v5Ev();
extern void _ZN7S2436C12v6Ev();
extern void _ZN7S2436C12v7Ev();
extern void _ZN7S2436C12v8Ev();
static  VTBL_ENTRY vtc_S2436C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2436C1[0]),
  (VTBL_ENTRY)&_ZN7S2436C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2436C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2436C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S2436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2436C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2436C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2436C1[];
extern  VTBL_ENTRY _ZTV7S2436C1[];
Class_Descriptor cd_S2436C1 = {  "S2436C1", // class name
  bases_S2436C1, 3,
  &(vtc_S2436C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,152), // object size
  NSPAIRA(_ZTI7S2436C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2436C1),23, //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  S2435C4  {
  char s2435c4f0;
  int s2435c4f1;
  virtual  ~S2435C4(); // _ZN7S2435C4D1Ev
  virtual void  v9(); // _ZN7S2435C42v9Ev
  S2435C4(); // tgen
};
//SIG(-1 S2435C4) C1{ vd v1 Fc Fi}


 S2435C4 ::~S2435C4(){ note_dtor("S2435C4", this);}
void  S2435C4 ::v9(){vfunc_called(this, "_ZN7S2435C42v9Ev");}
S2435C4 ::S2435C4(){ note_ctor("S2435C4", this);} // tgen

static void Test_S2435C4()
{
  extern Class_Descriptor cd_S2435C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2435C4, buf);
    S2435C4 *dp, &lv = *(dp=new (buf) S2435C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2435C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C4)");
    check_field_offset(lv, s2435c4f0, ABISELECT(8,4), "S2435C4.s2435c4f0");
    check_field_offset(lv, s2435c4f1, ABISELECT(12,8), "S2435C4.s2435c4f1");
    test_class_info(&lv, &cd_S2435C4);
    dp->~S2435C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C4(Test_S2435C4, "S2435C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2435C4C1Ev();
extern void _ZN7S2435C4D1Ev();
Name_Map name_map_S2435C4[] = {
  NSPAIR(_ZN7S2435C4C1Ev),
  NSPAIR(_ZN7S2435C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2435C4[];
extern void _ZN7S2435C4D1Ev();
extern void _ZN7S2435C4D0Ev();
extern void _ZN7S2435C42v9Ev();
static  VTBL_ENTRY vtc_S2435C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C4[0]),
  (VTBL_ENTRY)&_ZN7S2435C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
Class_Descriptor cd_S2435C4 = {  "S2435C4", // class name
  0,0,//no base classes
  &(vtc_S2435C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2435C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2435C4),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  S2435C3  : S2435C4 {
  int s2435c3f0[2];
  char s2435c3f1;
  ::S2436C5_nt s2435c3f2;
  ::S2436C6 s2435c3f3;
  virtual  ~S2435C3(); // _ZN7S2435C3D1Ev
  virtual void  v10(); // _ZN7S2435C33v10Ev
  S2435C3(); // tgen
};
//SIG(-1 S2435C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S2435C3 ::~S2435C3(){ note_dtor("S2435C3", this);}
void  S2435C3 ::v10(){vfunc_called(this, "_ZN7S2435C33v10Ev");}
S2435C3 ::S2435C3(){ note_ctor("S2435C3", this);} // tgen

static void Test_S2435C3()
{
  extern Class_Descriptor cd_S2435C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2435C3, buf);
    S2435C3 *dp, &lv = *(dp=new (buf) S2435C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2435C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C3)");
    check_base_class_offset(lv, (S2435C4*), 0, "S2435C3");
    check_field_offset(lv, s2435c3f0, ABISELECT(16,12), "S2435C3.s2435c3f0");
    check_field_offset(lv, s2435c3f1, ABISELECT(24,20), "S2435C3.s2435c3f1");
    check_field_offset(lv, s2435c3f2, ABISELECT(32,24), "S2435C3.s2435c3f2");
    check_field_offset(lv, s2435c3f3, ABISELECT(40,28), "S2435C3.s2435c3f3");
    test_class_info(&lv, &cd_S2435C3);
    dp->~S2435C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C3(Test_S2435C3, "S2435C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2435C3C1Ev();
extern void _ZN7S2435C3D1Ev();
Name_Map name_map_S2435C3[] = {
  NSPAIR(_ZN7S2435C3C1Ev),
  NSPAIR(_ZN7S2435C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
static Base_Class bases_S2435C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2435C3[];
extern void _ZN7S2435C3D1Ev();
extern void _ZN7S2435C3D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
static  VTBL_ENTRY vtc_S2435C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C3[0]),
  (VTBL_ENTRY)&_ZN7S2435C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
Class_Descriptor cd_S2435C3 = {  "S2435C3", // class name
  bases_S2435C3, 1,
  &(vtc_S2435C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2435C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C3),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  S2435C2  : S2435C3 {
  void *s2435c2f0[3];
  int s2435c2f1;
  void *s2435c2f2[2];
  int s2435c2f3[3];
  char s2435c2f4[2];
  void *s2435c2f5;
  char s2435c2f6;
  void *s2435c2f7;
  __tsi64 s2435c2f8[2];
  virtual  ~S2435C2(); // _ZN7S2435C2D1Ev
  virtual void  v11(); // _ZN7S2435C23v11Ev
  virtual void  v12(); // _ZN7S2435C23v12Ev
  virtual void  v13(); // _ZN7S2435C23v13Ev
  virtual void  v14(); // _ZN7S2435C23v14Ev
  virtual void  v15(); // _ZN7S2435C23v15Ev
  virtual void  v16(); // _ZN7S2435C23v16Ev
  virtual void  v17(); // _ZN7S2435C23v17Ev
  virtual void  v18(); // _ZN7S2435C23v18Ev
  virtual void  v19(); // _ZN7S2435C23v19Ev
  S2435C2(); // tgen
};
//SIG(-1 S2435C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v14 Fc Fi} vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2435C2 ::~S2435C2(){ note_dtor("S2435C2", this);}
void  S2435C2 ::v11(){vfunc_called(this, "_ZN7S2435C23v11Ev");}
void  S2435C2 ::v12(){vfunc_called(this, "_ZN7S2435C23v12Ev");}
void  S2435C2 ::v13(){vfunc_called(this, "_ZN7S2435C23v13Ev");}
void  S2435C2 ::v14(){vfunc_called(this, "_ZN7S2435C23v14Ev");}
void  S2435C2 ::v15(){vfunc_called(this, "_ZN7S2435C23v15Ev");}
void  S2435C2 ::v16(){vfunc_called(this, "_ZN7S2435C23v16Ev");}
void  S2435C2 ::v17(){vfunc_called(this, "_ZN7S2435C23v17Ev");}
void  S2435C2 ::v18(){vfunc_called(this, "_ZN7S2435C23v18Ev");}
void  S2435C2 ::v19(){vfunc_called(this, "_ZN7S2435C23v19Ev");}
S2435C2 ::S2435C2(){ note_ctor("S2435C2", this);} // tgen

static void Test_S2435C2()
{
  extern Class_Descriptor cd_S2435C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2435C2, buf);
    S2435C2 *dp, &lv = *(dp=new (buf) S2435C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2435C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C2)");
    check_base_class_offset(lv, (S2435C4*)(S2435C3*), 0, "S2435C2");
    check_base_class_offset(lv, (S2435C3*), 0, "S2435C2");
    check_field_offset(lv, s2435c2f0, ABISELECT(88,72), "S2435C2.s2435c2f0");
    check_field_offset(lv, s2435c2f1, ABISELECT(112,84), "S2435C2.s2435c2f1");
    check_field_offset(lv, s2435c2f2, ABISELECT(120,88), "S2435C2.s2435c2f2");
    check_field_offset(lv, s2435c2f3, ABISELECT(136,96), "S2435C2.s2435c2f3");
    check_field_offset(lv, s2435c2f4, ABISELECT(148,108), "S2435C2.s2435c2f4");
    check_field_offset(lv, s2435c2f5, ABISELECT(152,112), "S2435C2.s2435c2f5");
    check_field_offset(lv, s2435c2f6, ABISELECT(160,116), "S2435C2.s2435c2f6");
    check_field_offset(lv, s2435c2f7, ABISELECT(168,120), "S2435C2.s2435c2f7");
    check_field_offset(lv, s2435c2f8, ABISELECT(176,124), "S2435C2.s2435c2f8");
    test_class_info(&lv, &cd_S2435C2);
    dp->~S2435C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C2(Test_S2435C2, "S2435C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2435C2C1Ev();
extern void _ZN7S2435C2D1Ev();
Name_Map name_map_S2435C2[] = {
  NSPAIR(_ZN7S2435C2C1Ev),
  NSPAIR(_ZN7S2435C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
extern Class_Descriptor cd_S2435C3;
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
static Base_Class bases_S2435C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2435C2[];
extern void _ZN7S2435C2D1Ev();
extern void _ZN7S2435C2D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
extern void _ZN7S2435C23v11Ev();
extern void _ZN7S2435C23v12Ev();
extern void _ZN7S2435C23v13Ev();
extern void _ZN7S2435C23v14Ev();
extern void _ZN7S2435C23v15Ev();
extern void _ZN7S2435C23v16Ev();
extern void _ZN7S2435C23v17Ev();
extern void _ZN7S2435C23v18Ev();
extern void _ZN7S2435C23v19Ev();
static  VTBL_ENTRY vtc_S2435C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C2[0]),
  (VTBL_ENTRY)&_ZN7S2435C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2435C2[];
extern  VTBL_ENTRY _ZTV7S2435C2[];
Class_Descriptor cd_S2435C2 = {  "S2435C2", // class name
  bases_S2435C2, 2,
  &(vtc_S2435C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2435C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C2),15, //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  S2435C1  : S2435C2 {
  char s2435c1f0[4];
  virtual  ~S2435C1(); // _ZN7S2435C1D1Ev
  virtual void  v1(); // _ZN7S2435C12v1Ev
  virtual void  v2(); // _ZN7S2435C12v2Ev
  virtual void  v3(); // _ZN7S2435C12v3Ev
  virtual void  v4(); // _ZN7S2435C12v4Ev
  virtual void  v5(); // _ZN7S2435C12v5Ev
  virtual void  v6(); // _ZN7S2435C12v6Ev
  virtual void  v7(); // _ZN7S2435C12v7Ev
  virtual void  v8(); // _ZN7S2435C12v8Ev
  S2435C1(); // tgen
};
//SIG(1 S2435C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC7{ vd v22 Fc Fi} vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fc[4]}


 S2435C1 ::~S2435C1(){ note_dtor("S2435C1", this);}
void  S2435C1 ::v1(){vfunc_called(this, "_ZN7S2435C12v1Ev");}
void  S2435C1 ::v2(){vfunc_called(this, "_ZN7S2435C12v2Ev");}
void  S2435C1 ::v3(){vfunc_called(this, "_ZN7S2435C12v3Ev");}
void  S2435C1 ::v4(){vfunc_called(this, "_ZN7S2435C12v4Ev");}
void  S2435C1 ::v5(){vfunc_called(this, "_ZN7S2435C12v5Ev");}
void  S2435C1 ::v6(){vfunc_called(this, "_ZN7S2435C12v6Ev");}
void  S2435C1 ::v7(){vfunc_called(this, "_ZN7S2435C12v7Ev");}
void  S2435C1 ::v8(){vfunc_called(this, "_ZN7S2435C12v8Ev");}
S2435C1 ::S2435C1(){ note_ctor("S2435C1", this);} // tgen

static void Test_S2435C1()
{
  extern Class_Descriptor cd_S2435C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S2435C1, buf);
    S2435C1 *dp, &lv = *(dp=new (buf) S2435C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S2435C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2435C1)");
    check_base_class_offset(lv, (S2435C4*)(S2435C3*)(S2435C2*), 0, "S2435C1");
    check_base_class_offset(lv, (S2435C3*)(S2435C2*), 0, "S2435C1");
    check_base_class_offset(lv, (S2435C2*), 0, "S2435C1");
    check_field_offset(lv, s2435c1f0, ABISELECT(192,140), "S2435C1.s2435c1f0");
    test_class_info(&lv, &cd_S2435C1);
    dp->~S2435C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2435C1(Test_S2435C1, "S2435C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S2435C1C1Ev();
extern void _ZN7S2435C1D1Ev();
Name_Map name_map_S2435C1[] = {
  NSPAIR(_ZN7S2435C1C1Ev),
  NSPAIR(_ZN7S2435C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2435C4;
extern VTBL_ENTRY _ZTI7S2435C4[];
extern  VTBL_ENTRY _ZTV7S2435C4[];
extern Class_Descriptor cd_S2435C3;
extern VTBL_ENTRY _ZTI7S2435C3[];
extern  VTBL_ENTRY _ZTV7S2435C3[];
extern Class_Descriptor cd_S2435C2;
extern VTBL_ENTRY _ZTI7S2435C2[];
extern  VTBL_ENTRY _ZTV7S2435C2[];
static Base_Class bases_S2435C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2435C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2435C1[];
extern void _ZN7S2435C1D1Ev();
extern void _ZN7S2435C1D0Ev();
extern void _ZN7S2435C42v9Ev();
extern void _ZN7S2435C33v10Ev();
extern void _ZN7S2435C23v11Ev();
extern void _ZN7S2435C23v12Ev();
extern void _ZN7S2435C23v13Ev();
extern void _ZN7S2435C23v14Ev();
extern void _ZN7S2435C23v15Ev();
extern void _ZN7S2435C23v16Ev();
extern void _ZN7S2435C23v17Ev();
extern void _ZN7S2435C23v18Ev();
extern void _ZN7S2435C23v19Ev();
extern void _ZN7S2435C12v1Ev();
extern void _ZN7S2435C12v2Ev();
extern void _ZN7S2435C12v3Ev();
extern void _ZN7S2435C12v4Ev();
extern void _ZN7S2435C12v5Ev();
extern void _ZN7S2435C12v6Ev();
extern void _ZN7S2435C12v7Ev();
extern void _ZN7S2435C12v8Ev();
static  VTBL_ENTRY vtc_S2435C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2435C1[0]),
  (VTBL_ENTRY)&_ZN7S2435C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2435C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2435C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2435C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2435C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2435C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2435C1[];
extern  VTBL_ENTRY _ZTV7S2435C1[];
Class_Descriptor cd_S2435C1 = {  "S2435C1", // class name
  bases_S2435C1, 3,
  &(vtc_S2435C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S2435C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2435C1),23, //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  S2437C4  {
  char s2437c4f0;
  int s2437c4f1;
  virtual  ~S2437C4(); // _ZN7S2437C4D1Ev
  virtual void  v9(); // _ZN7S2437C42v9Ev
  S2437C4(); // tgen
};
//SIG(-1 S2437C4) C1{ vd v1 Fc Fi}


 S2437C4 ::~S2437C4(){ note_dtor("S2437C4", this);}
void  S2437C4 ::v9(){vfunc_called(this, "_ZN7S2437C42v9Ev");}
S2437C4 ::S2437C4(){ note_ctor("S2437C4", this);} // tgen

static void Test_S2437C4()
{
  extern Class_Descriptor cd_S2437C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2437C4, buf);
    S2437C4 *dp, &lv = *(dp=new (buf) S2437C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2437C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C4)");
    check_field_offset(lv, s2437c4f0, ABISELECT(8,4), "S2437C4.s2437c4f0");
    check_field_offset(lv, s2437c4f1, ABISELECT(12,8), "S2437C4.s2437c4f1");
    test_class_info(&lv, &cd_S2437C4);
    dp->~S2437C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C4(Test_S2437C4, "S2437C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2437C4C1Ev();
extern void _ZN7S2437C4D1Ev();
Name_Map name_map_S2437C4[] = {
  NSPAIR(_ZN7S2437C4C1Ev),
  NSPAIR(_ZN7S2437C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2437C4[];
extern void _ZN7S2437C4D1Ev();
extern void _ZN7S2437C4D0Ev();
extern void _ZN7S2437C42v9Ev();
static  VTBL_ENTRY vtc_S2437C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C4[0]),
  (VTBL_ENTRY)&_ZN7S2437C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
Class_Descriptor cd_S2437C4 = {  "S2437C4", // class name
  0,0,//no base classes
  &(vtc_S2437C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2437C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2437C4),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  S2437C3  : S2437C4 {
  int s2437c3f0[2];
  char s2437c3f1;
  ::S2436C5_nt s2437c3f2;
  ::S2436C6 s2437c3f3;
  virtual  ~S2437C3(); // _ZN7S2437C3D1Ev
  virtual void  v10(); // _ZN7S2437C33v10Ev
  S2437C3(); // tgen
};
//SIG(-1 S2437C3) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S2437C3 ::~S2437C3(){ note_dtor("S2437C3", this);}
void  S2437C3 ::v10(){vfunc_called(this, "_ZN7S2437C33v10Ev");}
S2437C3 ::S2437C3(){ note_ctor("S2437C3", this);} // tgen

static void Test_S2437C3()
{
  extern Class_Descriptor cd_S2437C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2437C3, buf);
    S2437C3 *dp, &lv = *(dp=new (buf) S2437C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2437C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C3)");
    check_base_class_offset(lv, (S2437C4*), 0, "S2437C3");
    check_field_offset(lv, s2437c3f0, ABISELECT(16,12), "S2437C3.s2437c3f0");
    check_field_offset(lv, s2437c3f1, ABISELECT(24,20), "S2437C3.s2437c3f1");
    check_field_offset(lv, s2437c3f2, ABISELECT(32,24), "S2437C3.s2437c3f2");
    check_field_offset(lv, s2437c3f3, ABISELECT(40,28), "S2437C3.s2437c3f3");
    test_class_info(&lv, &cd_S2437C3);
    dp->~S2437C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C3(Test_S2437C3, "S2437C3", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2437C3C1Ev();
extern void _ZN7S2437C3D1Ev();
Name_Map name_map_S2437C3[] = {
  NSPAIR(_ZN7S2437C3C1Ev),
  NSPAIR(_ZN7S2437C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
static Base_Class bases_S2437C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2437C3[];
extern void _ZN7S2437C3D1Ev();
extern void _ZN7S2437C3D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
static  VTBL_ENTRY vtc_S2437C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C3[0]),
  (VTBL_ENTRY)&_ZN7S2437C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
Class_Descriptor cd_S2437C3 = {  "S2437C3", // class name
  bases_S2437C3, 1,
  &(vtc_S2437C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2437C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C3),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  S2437C2  : S2437C3 {
  void *s2437c2f0[3];
  int s2437c2f1;
  void *s2437c2f2[2];
  int s2437c2f3[3];
  char s2437c2f4[2];
  void *s2437c2f5;
  char s2437c2f6;
  void *s2437c2f7;
  __tsi64 s2437c2f8[2];
  virtual  ~S2437C2(); // _ZN7S2437C2D1Ev
  virtual void  v11(); // _ZN7S2437C23v11Ev
  virtual void  v12(); // _ZN7S2437C23v12Ev
  virtual void  v13(); // _ZN7S2437C23v13Ev
  virtual void  v14(); // _ZN7S2437C23v14Ev
  virtual void  v15(); // _ZN7S2437C23v15Ev
  virtual void  v16(); // _ZN7S2437C23v16Ev
  virtual void  v17(); // _ZN7S2437C23v17Ev
  virtual void  v18(); // _ZN7S2437C23v18Ev
  virtual void  v19(); // _ZN7S2437C23v19Ev
  S2437C2(); // tgen
};
//SIG(-1 S2437C2) C1{ BC2{ BC3{ vd v10 Fc Fi} vd v11 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v14 Fc Fi} vd v12 v13 FL[4]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]}


 S2437C2 ::~S2437C2(){ note_dtor("S2437C2", this);}
void  S2437C2 ::v11(){vfunc_called(this, "_ZN7S2437C23v11Ev");}
void  S2437C2 ::v12(){vfunc_called(this, "_ZN7S2437C23v12Ev");}
void  S2437C2 ::v13(){vfunc_called(this, "_ZN7S2437C23v13Ev");}
void  S2437C2 ::v14(){vfunc_called(this, "_ZN7S2437C23v14Ev");}
void  S2437C2 ::v15(){vfunc_called(this, "_ZN7S2437C23v15Ev");}
void  S2437C2 ::v16(){vfunc_called(this, "_ZN7S2437C23v16Ev");}
void  S2437C2 ::v17(){vfunc_called(this, "_ZN7S2437C23v17Ev");}
void  S2437C2 ::v18(){vfunc_called(this, "_ZN7S2437C23v18Ev");}
void  S2437C2 ::v19(){vfunc_called(this, "_ZN7S2437C23v19Ev");}
S2437C2 ::S2437C2(){ note_ctor("S2437C2", this);} // tgen

static void Test_S2437C2()
{
  extern Class_Descriptor cd_S2437C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,36)];
    init_test(&cd_S2437C2, buf);
    S2437C2 *dp, &lv = *(dp=new (buf) S2437C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S2437C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C2)");
    check_base_class_offset(lv, (S2437C4*)(S2437C3*), 0, "S2437C2");
    check_base_class_offset(lv, (S2437C3*), 0, "S2437C2");
    check_field_offset(lv, s2437c2f0, ABISELECT(88,72), "S2437C2.s2437c2f0");
    check_field_offset(lv, s2437c2f1, ABISELECT(112,84), "S2437C2.s2437c2f1");
    check_field_offset(lv, s2437c2f2, ABISELECT(120,88), "S2437C2.s2437c2f2");
    check_field_offset(lv, s2437c2f3, ABISELECT(136,96), "S2437C2.s2437c2f3");
    check_field_offset(lv, s2437c2f4, ABISELECT(148,108), "S2437C2.s2437c2f4");
    check_field_offset(lv, s2437c2f5, ABISELECT(152,112), "S2437C2.s2437c2f5");
    check_field_offset(lv, s2437c2f6, ABISELECT(160,116), "S2437C2.s2437c2f6");
    check_field_offset(lv, s2437c2f7, ABISELECT(168,120), "S2437C2.s2437c2f7");
    check_field_offset(lv, s2437c2f8, ABISELECT(176,124), "S2437C2.s2437c2f8");
    test_class_info(&lv, &cd_S2437C2);
    dp->~S2437C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C2(Test_S2437C2, "S2437C2", ABISELECT(192,140));

#else // __cplusplus

extern void _ZN7S2437C2C1Ev();
extern void _ZN7S2437C2D1Ev();
Name_Map name_map_S2437C2[] = {
  NSPAIR(_ZN7S2437C2C1Ev),
  NSPAIR(_ZN7S2437C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
extern Class_Descriptor cd_S2437C3;
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
static Base_Class bases_S2437C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2437C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2437C2[];
extern void _ZN7S2437C2D1Ev();
extern void _ZN7S2437C2D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
extern void _ZN7S2437C23v11Ev();
extern void _ZN7S2437C23v12Ev();
extern void _ZN7S2437C23v13Ev();
extern void _ZN7S2437C23v14Ev();
extern void _ZN7S2437C23v15Ev();
extern void _ZN7S2437C23v16Ev();
extern void _ZN7S2437C23v17Ev();
extern void _ZN7S2437C23v18Ev();
extern void _ZN7S2437C23v19Ev();
static  VTBL_ENTRY vtc_S2437C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C2[0]),
  (VTBL_ENTRY)&_ZN7S2437C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S2437C2[];
extern  VTBL_ENTRY _ZTV7S2437C2[];
Class_Descriptor cd_S2437C2 = {  "S2437C2", // class name
  bases_S2437C2, 2,
  &(vtc_S2437C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,140), // object size
  NSPAIRA(_ZTI7S2437C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C2),15, //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  S2437C1  : S2437C2 {
  void *s2437c1f0;
  virtual  ~S2437C1(); // _ZN7S2437C1D1Ev
  virtual void  v1(); // _ZN7S2437C12v1Ev
  virtual void  v2(); // _ZN7S2437C12v2Ev
  virtual void  v3(); // _ZN7S2437C12v3Ev
  virtual void  v4(); // _ZN7S2437C12v4Ev
  virtual void  v5(); // _ZN7S2437C12v5Ev
  virtual void  v6(); // _ZN7S2437C12v6Ev
  virtual void  v7(); // _ZN7S2437C12v7Ev
  virtual void  v8(); // _ZN7S2437C12v8Ev
  S2437C1(); // tgen
};
//SIG(1 S2437C1) C1{ BC2{ BC3{ BC4{ vd v9 Fc Fi} vd v10 Fi[2] Fc FC5{ Fp} FC6{ BC7{ vd v22 Fc Fi} vd v20 v21 FL[4]}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 Fp[3] Fi Fp[2] Fi[3] Fc[2] Fp Fc Fp FL[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp}


 S2437C1 ::~S2437C1(){ note_dtor("S2437C1", this);}
void  S2437C1 ::v1(){vfunc_called(this, "_ZN7S2437C12v1Ev");}
void  S2437C1 ::v2(){vfunc_called(this, "_ZN7S2437C12v2Ev");}
void  S2437C1 ::v3(){vfunc_called(this, "_ZN7S2437C12v3Ev");}
void  S2437C1 ::v4(){vfunc_called(this, "_ZN7S2437C12v4Ev");}
void  S2437C1 ::v5(){vfunc_called(this, "_ZN7S2437C12v5Ev");}
void  S2437C1 ::v6(){vfunc_called(this, "_ZN7S2437C12v6Ev");}
void  S2437C1 ::v7(){vfunc_called(this, "_ZN7S2437C12v7Ev");}
void  S2437C1 ::v8(){vfunc_called(this, "_ZN7S2437C12v8Ev");}
S2437C1 ::S2437C1(){ note_ctor("S2437C1", this);} // tgen

static void Test_S2437C1()
{
  extern Class_Descriptor cd_S2437C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,37)];
    init_test(&cd_S2437C1, buf);
    S2437C1 *dp, &lv = *(dp=new (buf) S2437C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,144), "sizeof(S2437C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2437C1)");
    check_base_class_offset(lv, (S2437C4*)(S2437C3*)(S2437C2*), 0, "S2437C1");
    check_base_class_offset(lv, (S2437C3*)(S2437C2*), 0, "S2437C1");
    check_base_class_offset(lv, (S2437C2*), 0, "S2437C1");
    check_field_offset(lv, s2437c1f0, ABISELECT(192,140), "S2437C1.s2437c1f0");
    test_class_info(&lv, &cd_S2437C1);
    dp->~S2437C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2437C1(Test_S2437C1, "S2437C1", ABISELECT(200,144));

#else // __cplusplus

extern void _ZN7S2437C1C1Ev();
extern void _ZN7S2437C1D1Ev();
Name_Map name_map_S2437C1[] = {
  NSPAIR(_ZN7S2437C1C1Ev),
  NSPAIR(_ZN7S2437C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2437C4;
extern VTBL_ENTRY _ZTI7S2437C4[];
extern  VTBL_ENTRY _ZTV7S2437C4[];
extern Class_Descriptor cd_S2437C3;
extern VTBL_ENTRY _ZTI7S2437C3[];
extern  VTBL_ENTRY _ZTV7S2437C3[];
extern Class_Descriptor cd_S2437C2;
extern VTBL_ENTRY _ZTI7S2437C2[];
extern  VTBL_ENTRY _ZTV7S2437C2[];
static Base_Class bases_S2437C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2437C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2437C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2437C1[];
extern void _ZN7S2437C1D1Ev();
extern void _ZN7S2437C1D0Ev();
extern void _ZN7S2437C42v9Ev();
extern void _ZN7S2437C33v10Ev();
extern void _ZN7S2437C23v11Ev();
extern void _ZN7S2437C23v12Ev();
extern void _ZN7S2437C23v13Ev();
extern void _ZN7S2437C23v14Ev();
extern void _ZN7S2437C23v15Ev();
extern void _ZN7S2437C23v16Ev();
extern void _ZN7S2437C23v17Ev();
extern void _ZN7S2437C23v18Ev();
extern void _ZN7S2437C23v19Ev();
extern void _ZN7S2437C12v1Ev();
extern void _ZN7S2437C12v2Ev();
extern void _ZN7S2437C12v3Ev();
extern void _ZN7S2437C12v4Ev();
extern void _ZN7S2437C12v5Ev();
extern void _ZN7S2437C12v6Ev();
extern void _ZN7S2437C12v7Ev();
extern void _ZN7S2437C12v8Ev();
static  VTBL_ENTRY vtc_S2437C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2437C1[0]),
  (VTBL_ENTRY)&_ZN7S2437C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2437C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2437C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2437C33v10Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2437C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2437C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2437C1[];
extern  VTBL_ENTRY _ZTV7S2437C1[];
Class_Descriptor cd_S2437C1 = {  "S2437C1", // class name
  bases_S2437C1, 3,
  &(vtc_S2437C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,144), // object size
  NSPAIRA(_ZTI7S2437C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2437C1),23, //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  S7630C3_nt  {
  virtual void  v5(); // _ZN10S7630C3_nt2v5Ev
  ~S7630C3_nt(); // tgen
  S7630C3_nt(); // tgen
};
//SIG(-1 S7630C3_nt) C1{ v1}


void  S7630C3_nt ::v5(){vfunc_called(this, "_ZN10S7630C3_nt2v5Ev");}
S7630C3_nt ::~S7630C3_nt(){ note_dtor("S7630C3_nt", this);} // tgen
S7630C3_nt ::S7630C3_nt(){ note_ctor("S7630C3_nt", this);} // tgen

//skip512 S7630C3_nt

#else // __cplusplus

extern void _ZN10S7630C3_ntC1Ev();
extern void _ZN10S7630C3_ntD1Ev();
Name_Map name_map_S7630C3_nt[] = {
  NSPAIR(_ZN10S7630C3_ntC1Ev),
  NSPAIR(_ZN10S7630C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern void _ZN10S7630C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S7630C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7630C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
VTBL_ENTRY *P__ZTI10S7630C3_nt = _ZTI10S7630C3_nt; 
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
Class_Descriptor cd_S7630C3_nt = {  "S7630C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7630C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7630C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7630C3_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  S7630C2  : virtual S7630C3_nt {
  int s7630c2f0;
  __tsi64 s7630c2f1;
  int s7630c2f2;
  char s7630c2f3;
  virtual void  v6(); // _ZN7S7630C22v6Ev
  virtual void  v7(); // _ZN7S7630C22v7Ev
  virtual void  v8(); // _ZN7S7630C22v8Ev
  virtual void  v9(); // _ZN7S7630C22v9Ev
  ~S7630C2(); // tgen
  S7630C2(); // tgen
};
//SIG(-1 S7630C2) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S7630C2 ::v6(){vfunc_called(this, "_ZN7S7630C22v6Ev");}
void  S7630C2 ::v7(){vfunc_called(this, "_ZN7S7630C22v7Ev");}
void  S7630C2 ::v8(){vfunc_called(this, "_ZN7S7630C22v8Ev");}
void  S7630C2 ::v9(){vfunc_called(this, "_ZN7S7630C22v9Ev");}
S7630C2 ::~S7630C2(){ note_dtor("S7630C2", this);} // tgen
S7630C2 ::S7630C2(){ note_ctor("S7630C2", this);} // tgen

static void Test_S7630C2()
{
  extern Class_Descriptor cd_S7630C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7630C2, buf);
    S7630C2 *dp, &lv = *(dp=new (buf) S7630C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7630C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C2)");
    check_base_class_offset(lv, (S7630C3_nt*), 0, "S7630C2");
    check_field_offset(lv, s7630c2f0, ABISELECT(8,4), "S7630C2.s7630c2f0");
    check_field_offset(lv, s7630c2f1, ABISELECT(16,8), "S7630C2.s7630c2f1");
    check_field_offset(lv, s7630c2f2, ABISELECT(24,16), "S7630C2.s7630c2f2");
    check_field_offset(lv, s7630c2f3, ABISELECT(28,20), "S7630C2.s7630c2f3");
    test_class_info(&lv, &cd_S7630C2);
    dp->~S7630C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C2(Test_S7630C2, "S7630C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S7630C2C1Ev();
extern void _ZN7S7630C2D1Ev();
Name_Map name_map_S7630C2[] = {
  NSPAIR(_ZN7S7630C2C1Ev),
  NSPAIR(_ZN7S7630C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C3_nt;
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
static Base_Class bases_S7630C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C2[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
static  VTBL_ENTRY vtc_S7630C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C2[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
};
extern VTBL_ENTRY _ZTV7S7630C2[];
static  VTT_ENTRY vtt_S7630C2[] = {
  {&(_ZTV7S7630C2[4]),  4,9},
  {&(_ZTV7S7630C2[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7630C2[];
extern  VTBL_ENTRY _ZTV7S7630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C2[];
Class_Descriptor cd_S7630C2 = {  "S7630C2", // class name
  bases_S7630C2, 1,
  &(vtc_S7630C2[0]), // expected_vtbl_contents
  &(vtt_S7630C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S7630C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7630C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C2),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  S7630C6  {
  int s7630c6f0;
  char s7630c6f1[2];
  virtual void  v10(); // _ZN7S7630C63v10Ev
  virtual void  v11(); // _ZN7S7630C63v11Ev
  virtual void  v12(); // _ZN7S7630C63v12Ev
  virtual void  v13(); // _ZN7S7630C63v13Ev
  virtual void  v14(); // _ZN7S7630C63v14Ev
  ~S7630C6(); // tgen
  S7630C6(); // tgen
};
//SIG(-1 S7630C6) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S7630C6 ::v10(){vfunc_called(this, "_ZN7S7630C63v10Ev");}
void  S7630C6 ::v11(){vfunc_called(this, "_ZN7S7630C63v11Ev");}
void  S7630C6 ::v12(){vfunc_called(this, "_ZN7S7630C63v12Ev");}
void  S7630C6 ::v13(){vfunc_called(this, "_ZN7S7630C63v13Ev");}
void  S7630C6 ::v14(){vfunc_called(this, "_ZN7S7630C63v14Ev");}
S7630C6 ::~S7630C6(){ note_dtor("S7630C6", this);} // tgen
S7630C6 ::S7630C6(){ note_ctor("S7630C6", this);} // tgen

static void Test_S7630C6()
{
  extern Class_Descriptor cd_S7630C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7630C6, buf);
    S7630C6 *dp, &lv = *(dp=new (buf) S7630C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7630C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C6)");
    check_field_offset(lv, s7630c6f0, ABISELECT(8,4), "S7630C6.s7630c6f0");
    check_field_offset(lv, s7630c6f1, ABISELECT(12,8), "S7630C6.s7630c6f1");
    test_class_info(&lv, &cd_S7630C6);
    dp->~S7630C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C6(Test_S7630C6, "S7630C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7630C6C1Ev();
extern void _ZN7S7630C6D1Ev();
Name_Map name_map_S7630C6[] = {
  NSPAIR(_ZN7S7630C6C1Ev),
  NSPAIR(_ZN7S7630C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7630C6[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C6[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
Class_Descriptor cd_S7630C6 = {  "S7630C6", // class name
  0,0,//no base classes
  &(vtc_S7630C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7630C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7630C6),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  S7630C5  : S7630C6 {
  virtual  ~S7630C5(); // _ZN7S7630C5D1Ev
  virtual void  v15(); // _ZN7S7630C53v15Ev
  virtual void  v16(); // _ZN7S7630C53v16Ev
  virtual void  v17(); // _ZN7S7630C53v17Ev
  virtual void  v18(); // _ZN7S7630C53v18Ev
  virtual void  v19(); // _ZN7S7630C53v19Ev
  virtual void  v20(); // _ZN7S7630C53v20Ev
  virtual void  v21(); // _ZN7S7630C53v21Ev
  virtual void  v22(); // _ZN7S7630C53v22Ev
  S7630C5(); // tgen
};
//SIG(-1 S7630C5) C1{ BC2{ v9 v10 v11 v12 v13 Fi Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S7630C5 ::~S7630C5(){ note_dtor("S7630C5", this);}
void  S7630C5 ::v15(){vfunc_called(this, "_ZN7S7630C53v15Ev");}
void  S7630C5 ::v16(){vfunc_called(this, "_ZN7S7630C53v16Ev");}
void  S7630C5 ::v17(){vfunc_called(this, "_ZN7S7630C53v17Ev");}
void  S7630C5 ::v18(){vfunc_called(this, "_ZN7S7630C53v18Ev");}
void  S7630C5 ::v19(){vfunc_called(this, "_ZN7S7630C53v19Ev");}
void  S7630C5 ::v20(){vfunc_called(this, "_ZN7S7630C53v20Ev");}
void  S7630C5 ::v21(){vfunc_called(this, "_ZN7S7630C53v21Ev");}
void  S7630C5 ::v22(){vfunc_called(this, "_ZN7S7630C53v22Ev");}
S7630C5 ::S7630C5(){ note_ctor("S7630C5", this);} // tgen

static void Test_S7630C5()
{
  extern Class_Descriptor cd_S7630C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7630C5, buf);
    S7630C5 *dp, &lv = *(dp=new (buf) S7630C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7630C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C5)");
    check_base_class_offset(lv, (S7630C6*), 0, "S7630C5");
    test_class_info(&lv, &cd_S7630C5);
    dp->~S7630C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C5(Test_S7630C5, "S7630C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7630C5C1Ev();
extern void _ZN7S7630C5D1Ev();
Name_Map name_map_S7630C5[] = {
  NSPAIR(_ZN7S7630C5C1Ev),
  NSPAIR(_ZN7S7630C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
static Base_Class bases_S7630C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S7630C5[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C5D1Ev();
extern void _ZN7S7630C5D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
static  VTBL_ENTRY vtc_S7630C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C5[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
};
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
Class_Descriptor cd_S7630C5 = {  "S7630C5", // class name
  bases_S7630C5, 1,
  &(vtc_S7630C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7630C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7630C5),17, //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  S7630C4  : S7630C5 , virtual S7630C6 {
  short s7630c4f0:13;
  int s7630c4f1;
  void *s7630c4f2;
  virtual  ~S7630C4(); // _ZN7S7630C4D2Ev
  virtual void  v23(); // _ZN7S7630C43v23Ev
  virtual void  v24(); // _ZN7S7630C43v24Ev
  virtual void  v25(); // _ZN7S7630C43v25Ev
  virtual void  v26(); // _ZN7S7630C43v26Ev
  virtual void  v27(); // _ZN7S7630C43v27Ev
  virtual void  v28(); // _ZN7S7630C43v28Ev
  virtual void  v29(); // _ZN7S7630C43v29Ev
  S7630C4(); // tgen
};
//SIG(-1 S7630C4) C1{ BC2{ BC3{ v8 v9 v10 v11 v12 Fi Fc[2]} vd v13 v14 v15 v16 v17 v18 v19 v20} VBC3 vd v1 v2 v3 v4 v5 v6 v7 Fs:13 Fi Fp}


 S7630C4 ::~S7630C4(){ note_dtor("S7630C4", this);}
void  S7630C4 ::v23(){vfunc_called(this, "_ZN7S7630C43v23Ev");}
void  S7630C4 ::v24(){vfunc_called(this, "_ZN7S7630C43v24Ev");}
void  S7630C4 ::v25(){vfunc_called(this, "_ZN7S7630C43v25Ev");}
void  S7630C4 ::v26(){vfunc_called(this, "_ZN7S7630C43v26Ev");}
void  S7630C4 ::v27(){vfunc_called(this, "_ZN7S7630C43v27Ev");}
void  S7630C4 ::v28(){vfunc_called(this, "_ZN7S7630C43v28Ev");}
void  S7630C4 ::v29(){vfunc_called(this, "_ZN7S7630C43v29Ev");}
S7630C4 ::S7630C4(){ note_ctor("S7630C4", this);} // tgen

static void Test_S7630C4()
{
  extern Class_Descriptor cd_S7630C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7630C4, buf);
    S7630C4 *dp, &lv = *(dp=new (buf) S7630C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7630C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7630C4)");
    check_base_class_offset(lv, (S7630C6*)(S7630C5*), 0, "S7630C4");
    check_base_class_offset(lv, (S7630C5*), 0, "S7630C4");
    /*is_ambiguous_... S7630C4::S7630C6 */ AMB_check_base_class_offset(lv, (S7630C6*), ABISELECT(32,20), "S7630C4");
    set_bf_and_test(lv, s7630c4f0, ABISELECT(14,10), 0, 13, 1, "S7630C4");
    set_bf_and_test(lv, s7630c4f0, ABISELECT(14,10), 0, 13, hide_sll(1LL<<12), "S7630C4");
    check_field_offset(lv, s7630c4f1, ABISELECT(16,12), "S7630C4.s7630c4f1");
    check_field_offset(lv, s7630c4f2, ABISELECT(24,16), "S7630C4.s7630c4f2");
    test_class_info(&lv, &cd_S7630C4);
    dp->~S7630C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C4(Test_S7630C4, "S7630C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7630C4C1Ev();
extern void _ZN7S7630C4D2Ev();
Name_Map name_map_S7630C4[] = {
  NSPAIR(_ZN7S7630C4C1Ev),
  NSPAIR(_ZN7S7630C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C5;
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
static Base_Class bases_S7630C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7630C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7630C6,    ABISELECT(32,20), //bcp->offset
    25, //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 _ZTI7S7630C4[];
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C4D1Ev();
extern void _ZN7S7630C4D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C4[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7630C4[];
static  VTT_ENTRY vtt_S7630C4[] = {
  {&(_ZTV7S7630C4[3]),  3,37},
  {&(_ZTV7S7630C4[32]),  32,37},
};
extern VTBL_ENTRY _ZTI7S7630C4[];
extern  VTBL_ENTRY _ZTV7S7630C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C4[];
Class_Descriptor cd_S7630C4 = {  "S7630C4", // class name
  bases_S7630C4, 3,
  &(vtc_S7630C4[0]), // expected_vtbl_contents
  &(vtt_S7630C4[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7630C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7630C4),37, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C4),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  S7630C1  : S7630C2 , S7630C4 {
  long double s7630c1f0;
  virtual  ~S7630C1(); // _ZN7S7630C1D2Ev
  virtual void  v1(); // _ZN7S7630C12v1Ev
  virtual void  v2(); // _ZN7S7630C12v2Ev
  virtual void  v3(); // _ZN7S7630C12v3Ev
  virtual void  v4(); // _ZN7S7630C12v4Ev
  S7630C1(); // tgen
};
//SIG(1 S7630C1) C1{ BC2{ VBC3{ v5} v6 v7 v8 v9 Fi FL Fi Fc} BC4{ BC5{ BC6{ v10 v11 v12 v13 v14 Fi Fc[2]} vd v15 v16 v17 v18 v19 v20 v21 v22} VBC6 vd v23 v24 v25 v26 v27 v28 v29 Fs:13 Fi Fp} vd v1 v2 v3 v4 FD}


 S7630C1 ::~S7630C1(){ note_dtor("S7630C1", this);}
void  S7630C1 ::v1(){vfunc_called(this, "_ZN7S7630C12v1Ev");}
void  S7630C1 ::v2(){vfunc_called(this, "_ZN7S7630C12v2Ev");}
void  S7630C1 ::v3(){vfunc_called(this, "_ZN7S7630C12v3Ev");}
void  S7630C1 ::v4(){vfunc_called(this, "_ZN7S7630C12v4Ev");}
S7630C1 ::S7630C1(){ note_ctor("S7630C1", this);} // tgen

static void Test_S7630C1()
{
  extern Class_Descriptor cd_S7630C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,18)];
    init_test(&cd_S7630C1, buf);
    S7630C1 *dp, &lv = *(dp=new (buf) S7630C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S7630C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7630C1)");
    check_base_class_offset(lv, (S7630C3_nt*)(S7630C2*), 0, "S7630C1");
    check_base_class_offset(lv, (S7630C2*), 0, "S7630C1");
    check_base_class_offset(lv, (S7630C6*)(S7630C5*)(S7630C4*), ABISELECT(32,24), "S7630C1");
    check_base_class_offset(lv, (S7630C5*)(S7630C4*), ABISELECT(32,24), "S7630C1");
    /*is_ambiguous_... S7630C4::S7630C6 */ AMB_check_base_class_offset(lv, (S7630C6*)(S7630C4*), ABISELECT(80,56), "S7630C1");
    check_base_class_offset(lv, (S7630C4*), ABISELECT(32,24), "S7630C1");
    check_field_offset(lv, s7630c1f0, ABISELECT(64,44), "S7630C1.s7630c1f0");
    test_class_info(&lv, &cd_S7630C1);
    dp->~S7630C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7630C1(Test_S7630C1, "S7630C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S7630C1C1Ev();
extern void _ZN7S7630C1D2Ev();
Name_Map name_map_S7630C1[] = {
  NSPAIR(_ZN7S7630C1C1Ev),
  NSPAIR(_ZN7S7630C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7630C3_nt;
extern VTBL_ENTRY _ZTI10S7630C3_nt[];
extern  VTBL_ENTRY _ZTV10S7630C3_nt[];
extern Class_Descriptor cd_S7630C2;
extern VTBL_ENTRY _ZTI7S7630C2[];
extern  VTBL_ENTRY _ZTV7S7630C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C2[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C5;
extern VTBL_ENTRY _ZTI7S7630C5[];
extern  VTBL_ENTRY _ZTV7S7630C5[];
extern Class_Descriptor cd_S7630C6;
extern VTBL_ENTRY _ZTI7S7630C6[];
extern  VTBL_ENTRY _ZTV7S7630C6[];
extern Class_Descriptor cd_S7630C4;
extern VTBL_ENTRY _ZTI7S7630C4[];
extern  VTBL_ENTRY _ZTV7S7630C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C4[];
static Base_Class bases_S7630C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7630C3_nt,    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_S7630C2,    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_S7630C6,    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
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7630C5,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7630C6,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //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
    5, //immediately_derived
  0, 1},
  {&cd_S7630C4,    ABISELECT(32,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7630C1[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
extern void _ZN7S7630C1D1Ev();
extern void _ZN7S7630C1D0Ev();
extern void _ZN7S7630C12v1Ev();
extern void _ZN7S7630C12v2Ev();
extern void _ZN7S7630C12v3Ev();
extern void _ZN7S7630C12v4Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void ABISELECT(_ZThn32_N7S7630C1D1Ev,_ZThn24_N7S7630C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7630C1D0Ev,_ZThn24_N7S7630C1D0Ev)();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY vtc_S7630C1[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7630C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7630C12v4Ev,
  ABISELECT(48,32),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7630C1D1Ev,_ZThn24_N7S7630C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7630C1D0Ev,_ZThn24_N7S7630C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7630C1[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
extern VTBL_ENTRY _ZTV7S7630C1[];
extern void _ZN10S7630C3_nt2v5Ev();
extern void _ZN7S7630C22v6Ev();
extern void _ZN7S7630C22v7Ev();
extern void _ZN7S7630C22v8Ev();
extern void _ZN7S7630C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C2__7S7630C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C2[0]),
  (VTBL_ENTRY)&_ZN10S7630C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7630C22v9Ev,
};
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
extern void _ZN7S7630C4D1Ev();
extern void _ZN7S7630C4D0Ev();
extern void _ZN7S7630C53v15Ev();
extern void _ZN7S7630C53v16Ev();
extern void _ZN7S7630C53v17Ev();
extern void _ZN7S7630C53v18Ev();
extern void _ZN7S7630C53v19Ev();
extern void _ZN7S7630C53v20Ev();
extern void _ZN7S7630C53v21Ev();
extern void _ZN7S7630C53v22Ev();
extern void _ZN7S7630C43v23Ev();
extern void _ZN7S7630C43v24Ev();
extern void _ZN7S7630C43v25Ev();
extern void _ZN7S7630C43v26Ev();
extern void _ZN7S7630C43v27Ev();
extern void _ZN7S7630C43v28Ev();
extern void _ZN7S7630C43v29Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C4__7S7630C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7630C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7630C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v25Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7630C43v29Ev,
};
extern void _ZN7S7630C63v10Ev();
extern void _ZN7S7630C63v11Ev();
extern void _ZN7S7630C63v12Ev();
extern void _ZN7S7630C63v13Ev();
extern void _ZN7S7630C63v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7630C6__A1__7S7630C4__7S7630C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7630C4[0]),
  (VTBL_ENTRY)&_ZN7S7630C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7630C63v14Ev,
};
static  VTT_ENTRY vtt_S7630C1[] = {
  {&(_ZTV7S7630C1[5]),  5,53},
  {&(_tg__ZTV7S7630C2__7S7630C1[4]),  4,9},
  {&(_tg__ZTV7S7630C2__7S7630C1[4]),  4,9},
  {&(_tg__ZTV7S7630C4__7S7630C1[3]),  3,25},
  {&(_tg__ZTV7S7630C6__A1__7S7630C4__7S7630C1[7]),  7,12},
  {&(_ZTV7S7630C1[5]),  5,53},
  {&(_ZTV7S7630C1[19]),  19,53},
  {&(_ZTV7S7630C1[48]),  48,53},
};
extern VTBL_ENTRY _ZTI7S7630C1[];
extern  VTBL_ENTRY _ZTV7S7630C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7630C1[];
Class_Descriptor cd_S7630C1 = {  "S7630C1", // class name
  bases_S7630C1, 6,
  &(vtc_S7630C1[0]), // expected_vtbl_contents
  &(vtt_S7630C1[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S7630C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7630C1),53, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7630C1),8, //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  S15733C7_nt  {
  void *s15733c7f0;
  int s15733c7f1;
  ::S7856C24 s15733c7f2;
  ::S7856C15 s15733c7f3;
  void  mf15733c7(); // _ZN11S15733C7_nt9mf15733c7Ev
};
//SIG(-1 S15733C7_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S15733C7_nt ::mf15733c7(){}

//skip512 S15733C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C10  : S40C9_nt {
};
//SIG(-1 S15733C10) C1{ BC2{ m Fi[2]}}



static void Test_S15733C10()
{
  extern Class_Descriptor cd_S15733C10;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S15733C10, buf);
    S15733C10 &lv = *(new (buf) S15733C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S15733C10)");
    check2(__alignof__(lv), 4, "__alignof__(S15733C10)");
    check_base_class_offset(lv, (S40C9_nt*), 0, "S15733C10");
    test_class_info(&lv, &cd_S15733C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15733C10(Test_S15733C10, "S15733C10", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C9_nt;
static Base_Class bases_S15733C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15733C10 = {  "S15733C10", // class name
  bases_S15733C10, 1,
  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  S15733C15  {
  __tsi64 s15733c15f0;
  ::S15733C7_nt s15733c15f1;
  ::S17556C3_nt s15733c15f2;
  void  mf15733c15(); // _ZN9S15733C1510mf15733c15Ev
};
//SIG(-1 S15733C15) C1{ m FL FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FC6{ FL[4]}}}


void  S15733C15 ::mf15733c15(){}

static void Test_S15733C15()
{
  {
    init_simple_test("S15733C15");
    S15733C15 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S15733C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15733C15)");
    check_field_offset(lv, s15733c15f0, 0, "S15733C15.s15733c15f0");
    check_field_offset(lv, s15733c15f1, 8, "S15733C15.s15733c15f1");
    check_field_offset(lv, s15733c15f2, ABISELECT(24,20), "S15733C15.s15733c15f2");
  }
}
static Arrange_To_Call_Me vS15733C15(Test_S15733C15, "S15733C15", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15733C1  {
  ::S17556C3_nt s15733c1f0;
  int s15733c1f1[3];
  __tsi64 s15733c1f2;
  ::S1868C24_nt s15733c1f3;
  ::S15733C7_nt s15733c1f4;
  ::S15733C10 s15733c1f5;
  ::S3750C9_nt s15733c1f6;
  ::S15733C15 s15733c1f7;
  void  mf15733c1(); // _ZN8S15733C19mf15733c1Ev
};
//SIG(1 S15733C1) C1{ m FC2{ m FC3{ FL[4]}} Fi[3] FL FC4{ m Fp Fi FC5{ m} FC6{ m}} FC7{ m Fp Fi FC8{ m} FC5} FC9{ BC10{ m Fi[2]}} FC11{ m FC12{ m Fp Fi[2] FC8} Fp[2]} FC13{ m FL FC7 FC2}}


void  S15733C1 ::mf15733c1(){}

static void Test_S15733C1()
{
  {
    init_simple_test("S15733C1");
    S15733C1 lv;
    check2(sizeof(lv), ABISELECT(192,160), "sizeof(S15733C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15733C1)");
    check_field_offset(lv, s15733c1f0, 0, "S15733C1.s15733c1f0");
    check_field_offset(lv, s15733c1f1, 32, "S15733C1.s15733c1f1");
    check_field_offset(lv, s15733c1f2, ABISELECT(48,44), "S15733C1.s15733c1f2");
    check_field_offset(lv, s15733c1f3, ABISELECT(56,52), "S15733C1.s15733c1f3");
    check_field_offset(lv, s15733c1f4, ABISELECT(72,64), "S15733C1.s15733c1f4");
    check_field_offset(lv, s15733c1f5, ABISELECT(88,76), "S15733C1.s15733c1f5");
    check_field_offset(lv, s15733c1f6, ABISELECT(96,84), "S15733C1.s15733c1f6");
    check_field_offset(lv, s15733c1f7, ABISELECT(136,108), "S15733C1.s15733c1f7");
  }
}
static Arrange_To_Call_Me vS15733C1(Test_S15733C1, "S15733C1", ABISELECT(192,160));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4016C2  : S1868C4_nt {
  void *s4016c2f0[2];
  virtual  ~S4016C2(); // _ZN7S4016C2D1Ev
  virtual void  v15(); // _ZN7S4016C23v15Ev
  virtual void  v16(); // _ZN7S4016C23v16Ev
  virtual void  v17(); // _ZN7S4016C23v17Ev
  virtual void  v18(); // _ZN7S4016C23v18Ev
  virtual void  v19(); // _ZN7S4016C23v19Ev
  virtual void  v20(); // _ZN7S4016C23v20Ev
  virtual void  v21(); // _ZN7S4016C23v21Ev
  S4016C2(); // tgen
};
//SIG(-1 S4016C2) C1{ BC2{ vd m} vd v1 v2 v3 v4 v5 v6 v7 Fp[2]}


 S4016C2 ::~S4016C2(){ note_dtor("S4016C2", this);}
void  S4016C2 ::v15(){vfunc_called(this, "_ZN7S4016C23v15Ev");}
void  S4016C2 ::v16(){vfunc_called(this, "_ZN7S4016C23v16Ev");}
void  S4016C2 ::v17(){vfunc_called(this, "_ZN7S4016C23v17Ev");}
void  S4016C2 ::v18(){vfunc_called(this, "_ZN7S4016C23v18Ev");}
void  S4016C2 ::v19(){vfunc_called(this, "_ZN7S4016C23v19Ev");}
void  S4016C2 ::v20(){vfunc_called(this, "_ZN7S4016C23v20Ev");}
void  S4016C2 ::v21(){vfunc_called(this, "_ZN7S4016C23v21Ev");}
S4016C2 ::S4016C2(){ note_ctor("S4016C2", this);} // tgen

static void Test_S4016C2()
{
  extern Class_Descriptor cd_S4016C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4016C2, buf);
    S4016C2 *dp, &lv = *(dp=new (buf) S4016C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4016C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C2)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S4016C2");
    check_field_offset(lv, s4016c2f0, ABISELECT(8,4), "S4016C2.s4016c2f0");
    test_class_info(&lv, &cd_S4016C2);
    dp->~S4016C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C2(Test_S4016C2, "S4016C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4016C2C1Ev();
extern void _ZN7S4016C2D1Ev();
Name_Map name_map_S4016C2[] = {
  NSPAIR(_ZN7S4016C2C1Ev),
  NSPAIR(_ZN7S4016C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S4016C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4016C2[];
extern void _ZN7S4016C2D1Ev();
extern void _ZN7S4016C2D0Ev();
extern void _ZN7S4016C23v15Ev();
extern void _ZN7S4016C23v16Ev();
extern void _ZN7S4016C23v17Ev();
extern void _ZN7S4016C23v18Ev();
extern void _ZN7S4016C23v19Ev();
extern void _ZN7S4016C23v20Ev();
extern void _ZN7S4016C23v21Ev();
static  VTBL_ENTRY vtc_S4016C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C2[0]),
  (VTBL_ENTRY)&_ZN7S4016C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v15Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v21Ev,
};
extern VTBL_ENTRY _ZTI7S4016C2[];
extern  VTBL_ENTRY _ZTV7S4016C2[];
Class_Descriptor cd_S4016C2 = {  "S4016C2", // class name
  bases_S4016C2, 1,
  &(vtc_S4016C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4016C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4016C2),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  S4016C4  {
  virtual  ~S4016C4(); // _ZN7S4016C4D1Ev
  virtual void  v22(); // _ZN7S4016C43v22Ev
  virtual void  v23(); // _ZN7S4016C43v23Ev
  virtual void  v24(); // _ZN7S4016C43v24Ev
  virtual void  v25(); // _ZN7S4016C43v25Ev
  virtual void  v26(); // _ZN7S4016C43v26Ev
  virtual void  v27(); // _ZN7S4016C43v27Ev
  virtual void  v28(); // _ZN7S4016C43v28Ev
  virtual void  v29(); // _ZN7S4016C43v29Ev
  virtual void  v30(); // _ZN7S4016C43v30Ev
  virtual void  v31(); // _ZN7S4016C43v31Ev
  virtual void  v32(); // _ZN7S4016C43v32Ev
  virtual void  v33(); // _ZN7S4016C43v33Ev
  S4016C4(); // tgen
};
//SIG(-1 S4016C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S4016C4 ::~S4016C4(){ note_dtor("S4016C4", this);}
void  S4016C4 ::v22(){vfunc_called(this, "_ZN7S4016C43v22Ev");}
void  S4016C4 ::v23(){vfunc_called(this, "_ZN7S4016C43v23Ev");}
void  S4016C4 ::v24(){vfunc_called(this, "_ZN7S4016C43v24Ev");}
void  S4016C4 ::v25(){vfunc_called(this, "_ZN7S4016C43v25Ev");}
void  S4016C4 ::v26(){vfunc_called(this, "_ZN7S4016C43v26Ev");}
void  S4016C4 ::v27(){vfunc_called(this, "_ZN7S4016C43v27Ev");}
void  S4016C4 ::v28(){vfunc_called(this, "_ZN7S4016C43v28Ev");}
void  S4016C4 ::v29(){vfunc_called(this, "_ZN7S4016C43v29Ev");}
void  S4016C4 ::v30(){vfunc_called(this, "_ZN7S4016C43v30Ev");}
void  S4016C4 ::v31(){vfunc_called(this, "_ZN7S4016C43v31Ev");}
void  S4016C4 ::v32(){vfunc_called(this, "_ZN7S4016C43v32Ev");}
void  S4016C4 ::v33(){vfunc_called(this, "_ZN7S4016C43v33Ev");}
S4016C4 ::S4016C4(){ note_ctor("S4016C4", this);} // tgen

static void Test_S4016C4()
{
  extern Class_Descriptor cd_S4016C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4016C4, buf);
    S4016C4 *dp, &lv = *(dp=new (buf) S4016C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4016C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C4)");
    test_class_info(&lv, &cd_S4016C4);
    dp->~S4016C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C4(Test_S4016C4, "S4016C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4016C4C1Ev();
extern void _ZN7S4016C4D1Ev();
Name_Map name_map_S4016C4[] = {
  NSPAIR(_ZN7S4016C4C1Ev),
  NSPAIR(_ZN7S4016C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4016C4[];
extern void _ZN7S4016C4D1Ev();
extern void _ZN7S4016C4D0Ev();
extern void _ZN7S4016C43v22Ev();
extern void _ZN7S4016C43v23Ev();
extern void _ZN7S4016C43v24Ev();
extern void _ZN7S4016C43v25Ev();
extern void _ZN7S4016C43v26Ev();
extern void _ZN7S4016C43v27Ev();
extern void _ZN7S4016C43v28Ev();
extern void _ZN7S4016C43v29Ev();
extern void _ZN7S4016C43v30Ev();
extern void _ZN7S4016C43v31Ev();
extern void _ZN7S4016C43v32Ev();
extern void _ZN7S4016C43v33Ev();
static  VTBL_ENTRY vtc_S4016C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C4[0]),
  (VTBL_ENTRY)&_ZN7S4016C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v22Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v25Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v26Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v27Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v28Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v29Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v30Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v31Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v32Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v33Ev,
};
extern VTBL_ENTRY _ZTI7S4016C4[];
extern  VTBL_ENTRY _ZTV7S4016C4[];
Class_Descriptor cd_S4016C4 = {  "S4016C4", // class name
  0,0,//no base classes
  &(vtc_S4016C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4016C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4016C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4016C1  : S4016C2 , S4016C4 {
  void *s4016c1f0;
  ::S1868C17 s4016c1f1;
  void *s4016c1f2;
  int s4016c1f3[4];
  virtual  ~S4016C1(); // _ZN7S4016C1D1Ev
  virtual void  v1(); // _ZN7S4016C12v1Ev
  virtual void  v2(); // _ZN7S4016C12v2Ev
  virtual void  v3(); // _ZN7S4016C12v3Ev
  virtual void  v4(); // _ZN7S4016C12v4Ev
  virtual void  v5(); // _ZN7S4016C12v5Ev
  virtual void  v6(); // _ZN7S4016C12v6Ev
  virtual void  v7(); // _ZN7S4016C12v7Ev
  virtual void  v8(); // _ZN7S4016C12v8Ev
  virtual void  v9(); // _ZN7S4016C12v9Ev
  virtual void  v10(); // _ZN7S4016C13v10Ev
  virtual void  v11(); // _ZN7S4016C13v11Ev
  virtual void  v12(); // _ZN7S4016C13v12Ev
  virtual void  v13(); // _ZN7S4016C13v13Ev
  virtual void  v14(); // _ZN7S4016C13v14Ev
  S4016C1(); // tgen
};
//SIG(1 S4016C1) C1{ BC2{ BC3{ vd m} vd v15 v16 v17 v18 v19 v20 v21 Fp[2]} BC4{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp FC5{ m Fp} Fp Fi[4]}


 S4016C1 ::~S4016C1(){ note_dtor("S4016C1", this);}
void  S4016C1 ::v1(){vfunc_called(this, "_ZN7S4016C12v1Ev");}
void  S4016C1 ::v2(){vfunc_called(this, "_ZN7S4016C12v2Ev");}
void  S4016C1 ::v3(){vfunc_called(this, "_ZN7S4016C12v3Ev");}
void  S4016C1 ::v4(){vfunc_called(this, "_ZN7S4016C12v4Ev");}
void  S4016C1 ::v5(){vfunc_called(this, "_ZN7S4016C12v5Ev");}
void  S4016C1 ::v6(){vfunc_called(this, "_ZN7S4016C12v6Ev");}
void  S4016C1 ::v7(){vfunc_called(this, "_ZN7S4016C12v7Ev");}
void  S4016C1 ::v8(){vfunc_called(this, "_ZN7S4016C12v8Ev");}
void  S4016C1 ::v9(){vfunc_called(this, "_ZN7S4016C12v9Ev");}
void  S4016C1 ::v10(){vfunc_called(this, "_ZN7S4016C13v10Ev");}
void  S4016C1 ::v11(){vfunc_called(this, "_ZN7S4016C13v11Ev");}
void  S4016C1 ::v12(){vfunc_called(this, "_ZN7S4016C13v12Ev");}
void  S4016C1 ::v13(){vfunc_called(this, "_ZN7S4016C13v13Ev");}
void  S4016C1 ::v14(){vfunc_called(this, "_ZN7S4016C13v14Ev");}
S4016C1 ::S4016C1(){ note_ctor("S4016C1", this);} // tgen

static void Test_S4016C1()
{
  extern Class_Descriptor cd_S4016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S4016C1, buf);
    S4016C1 *dp, &lv = *(dp=new (buf) S4016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S4016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4016C1)");
    check_base_class_offset(lv, (S1868C4_nt*)(S4016C2*), 0, "S4016C1");
    check_base_class_offset(lv, (S4016C2*), 0, "S4016C1");
    check_base_class_offset(lv, (S4016C4*), ABISELECT(24,12), "S4016C1");
    check_field_offset(lv, s4016c1f0, ABISELECT(32,16), "S4016C1.s4016c1f0");
    check_field_offset(lv, s4016c1f1, ABISELECT(40,20), "S4016C1.s4016c1f1");
    check_field_offset(lv, s4016c1f2, ABISELECT(48,24), "S4016C1.s4016c1f2");
    check_field_offset(lv, s4016c1f3, ABISELECT(56,28), "S4016C1.s4016c1f3");
    test_class_info(&lv, &cd_S4016C1);
    dp->~S4016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4016C1(Test_S4016C1, "S4016C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S4016C1C1Ev();
extern void _ZN7S4016C1D1Ev();
Name_Map name_map_S4016C1[] = {
  NSPAIR(_ZN7S4016C1C1Ev),
  NSPAIR(_ZN7S4016C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
extern Class_Descriptor cd_S4016C2;
extern VTBL_ENTRY _ZTI7S4016C2[];
extern  VTBL_ENTRY _ZTV7S4016C2[];
extern Class_Descriptor cd_S4016C4;
extern VTBL_ENTRY _ZTI7S4016C4[];
extern  VTBL_ENTRY _ZTV7S4016C4[];
static Base_Class bases_S4016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4016C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4016C4,    ABISELECT(24,12), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4016C1[];
extern void _ZN7S4016C1D1Ev();
extern void _ZN7S4016C1D0Ev();
extern void _ZN7S4016C23v15Ev();
extern void _ZN7S4016C23v16Ev();
extern void _ZN7S4016C23v17Ev();
extern void _ZN7S4016C23v18Ev();
extern void _ZN7S4016C23v19Ev();
extern void _ZN7S4016C23v20Ev();
extern void _ZN7S4016C23v21Ev();
extern void _ZN7S4016C12v1Ev();
extern void _ZN7S4016C12v2Ev();
extern void _ZN7S4016C12v3Ev();
extern void _ZN7S4016C12v4Ev();
extern void _ZN7S4016C12v5Ev();
extern void _ZN7S4016C12v6Ev();
extern void _ZN7S4016C12v7Ev();
extern void _ZN7S4016C12v8Ev();
extern void _ZN7S4016C12v9Ev();
extern void _ZN7S4016C13v10Ev();
extern void _ZN7S4016C13v11Ev();
extern void _ZN7S4016C13v12Ev();
extern void _ZN7S4016C13v13Ev();
extern void _ZN7S4016C13v14Ev();
extern void ABISELECT(_ZThn24_N7S4016C1D1Ev,_ZThn12_N7S4016C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S4016C1D0Ev,_ZThn12_N7S4016C1D0Ev)();
extern void _ZN7S4016C43v22Ev();
extern void _ZN7S4016C43v23Ev();
extern void _ZN7S4016C43v24Ev();
extern void _ZN7S4016C43v25Ev();
extern void _ZN7S4016C43v26Ev();
extern void _ZN7S4016C43v27Ev();
extern void _ZN7S4016C43v28Ev();
extern void _ZN7S4016C43v29Ev();
extern void _ZN7S4016C43v30Ev();
extern void _ZN7S4016C43v31Ev();
extern void _ZN7S4016C43v32Ev();
extern void _ZN7S4016C43v33Ev();
static  VTBL_ENTRY vtc_S4016C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4016C1[0]),
  (VTBL_ENTRY)&_ZN7S4016C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4016C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v15Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4016C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4016C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4016C13v14Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S4016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S4016C1D1Ev,_ZThn12_N7S4016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S4016C1D0Ev,_ZThn12_N7S4016C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4016C43v22Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v25Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v26Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v27Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v28Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v29Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v30Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v31Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v32Ev,
  (VTBL_ENTRY)&_ZN7S4016C43v33Ev,
};
extern VTBL_ENTRY _ZTI7S4016C1[];
extern  VTBL_ENTRY _ZTV7S4016C1[];
Class_Descriptor cd_S4016C1 = {  "S4016C1", // class name
  bases_S4016C1, 3,
  &(vtc_S4016C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S4016C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4016C1),41, //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  S6193C3  {
  void *s6193c3f0;
  int s6193c3f1[3];
  void *s6193c3f2;
};
//SIG(-1 S6193C3) C1{ Fp Fi[3] Fp}



static void Test_S6193C3()
{
  {
    init_simple_test("S6193C3");
    S6193C3 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6193C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C3)");
    check_field_offset(lv, s6193c3f0, 0, "S6193C3.s6193c3f0");
    check_field_offset(lv, s6193c3f1, ABISELECT(8,4), "S6193C3.s6193c3f1");
    check_field_offset(lv, s6193c3f2, ABISELECT(24,16), "S6193C3.s6193c3f2");
  }
}
static Arrange_To_Call_Me vS6193C3(Test_S6193C3, "S6193C3", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C4  {
  int s6193c4f0[2];
  char s6193c4f1[4];
  ::S18423C15_nt s6193c4f2;
  ::S18423C15_nt s6193c4f3;
  ::S18423C15_nt s6193c4f4;
  ::S18423C15_nt s6193c4f5;
  int s6193c4f6[3];
  void  mf6193c4(); // _ZN7S6193C48mf6193c4Ev
};
//SIG(-1 S6193C4) C1{ m Fi[2] Fc[4] FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 Fi[3]}


void  S6193C4 ::mf6193c4(){}

static void Test_S6193C4()
{
  {
    init_simple_test("S6193C4");
    S6193C4 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S6193C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C4)");
    check_field_offset(lv, s6193c4f0, 0, "S6193C4.s6193c4f0");
    check_field_offset(lv, s6193c4f1, 8, "S6193C4.s6193c4f1");
    check_field_offset(lv, s6193c4f2, ABISELECT(16,12), "S6193C4.s6193c4f2");
    check_field_offset(lv, s6193c4f3, ABISELECT(32,24), "S6193C4.s6193c4f3");
    check_field_offset(lv, s6193c4f4, ABISELECT(48,36), "S6193C4.s6193c4f4");
    check_field_offset(lv, s6193c4f5, ABISELECT(64,48), "S6193C4.s6193c4f5");
    check_field_offset(lv, s6193c4f6, ABISELECT(80,60), "S6193C4.s6193c4f6");
  }
}
static Arrange_To_Call_Me vS6193C4(Test_S6193C4, "S6193C4", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C9  {
  int s6193c9f0[2];
  void *s6193c9f1;
  int s6193c9f2;
  char s6193c9f3[2];
  void  mf6193c9(); // _ZN7S6193C98mf6193c9Ev
};
//SIG(-1 S6193C9) C1{ m Fi[2] Fp Fi Fc[2]}


void  S6193C9 ::mf6193c9(){}

static void Test_S6193C9()
{
  {
    init_simple_test("S6193C9");
    S6193C9 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S6193C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C9)");
    check_field_offset(lv, s6193c9f0, 0, "S6193C9.s6193c9f0");
    check_field_offset(lv, s6193c9f1, 8, "S6193C9.s6193c9f1");
    check_field_offset(lv, s6193c9f2, ABISELECT(16,12), "S6193C9.s6193c9f2");
    check_field_offset(lv, s6193c9f3, ABISELECT(20,16), "S6193C9.s6193c9f3");
  }
}
static Arrange_To_Call_Me vS6193C9(Test_S6193C9, "S6193C9", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6193C1  : S7856C24 {
  int s6193c1f0;
  ::S6193C3 s6193c1f1;
  ::S6193C4 s6193c1f2;
  ::S6193C4 s6193c1f3[50];
  void *s6193c1f4;
  int s6193c1f5;
  void *s6193c1f6;
  ::S17556C28_nt s6193c1f7;
  ::S1868C17 s6193c1f8;
  void *s6193c1f9[2];
  char s6193c1f10[2];
  void *s6193c1f11[2];
  ::S6193C9 s6193c1f12;
  char s6193c1f13[1024];
};
//SIG(1 S6193C1) C1{ BC2{ m} Fi FC3{ Fp Fi[3] Fp} FC4{ m Fi[2] Fc[4] FC5{ m Fp Fi FC2} FC5 FC5 FC5 Fi[3]} FC4[50] Fp Fi Fp FC6{ m Fp[2]} FC7{ m Fp} Fp[2] Fc[2] Fp[2] FC8{ m Fi[2] Fp Fi Fc[2]} Fc[1024]}



static void Test_S6193C1()
{
  extern Class_Descriptor cd_S6193C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(760,1197)];
    init_test(&cd_S6193C1, buf);
    S6193C1 &lv = *(new (buf) S6193C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6072,4784), "sizeof(S6193C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6193C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6193C1");
    check_field_offset(lv, s6193c1f0, 0, "S6193C1.s6193c1f0");
    check_field_offset(lv, s6193c1f1, ABISELECT(8,4), "S6193C1.s6193c1f1");
    check_field_offset(lv, s6193c1f2, ABISELECT(40,24), "S6193C1.s6193c1f2");
    check_field_offset(lv, s6193c1f3, ABISELECT(136,96), "S6193C1.s6193c1f3");
    check_field_offset(lv, s6193c1f4, ABISELECT(4936,3696), "S6193C1.s6193c1f4");
    check_field_offset(lv, s6193c1f5, ABISELECT(4944,3700), "S6193C1.s6193c1f5");
    check_field_offset(lv, s6193c1f6, ABISELECT(4952,3704), "S6193C1.s6193c1f6");
    check_field_offset(lv, s6193c1f7, ABISELECT(4960,3708), "S6193C1.s6193c1f7");
    check_field_offset(lv, s6193c1f8, ABISELECT(4976,3716), "S6193C1.s6193c1f8");
    check_field_offset(lv, s6193c1f9, ABISELECT(4984,3720), "S6193C1.s6193c1f9");
    check_field_offset(lv, s6193c1f10, ABISELECT(5000,3728), "S6193C1.s6193c1f10");
    check_field_offset(lv, s6193c1f11, ABISELECT(5008,3732), "S6193C1.s6193c1f11");
    check_field_offset(lv, s6193c1f12, ABISELECT(5024,3740), "S6193C1.s6193c1f12");
    check_field_offset(lv, s6193c1f13, ABISELECT(5048,3760), "S6193C1.s6193c1f13");
    test_class_info(&lv, &cd_S6193C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6193C1(Test_S6193C1, "S6193C1", ABISELECT(6072,4784));

#else // __cplusplus

extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6193C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6193C1 = {  "S6193C1", // class name
  bases_S6193C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(6072,4784), // 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  S2619C2  : S40C13_nt {
};
//SIG(-1 S2619C2) C1{ BC2{ m Fi}}



static void Test_S2619C2()
{
  extern Class_Descriptor cd_S2619C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2619C2, buf);
    S2619C2 &lv = *(new (buf) S2619C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2619C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2619C2)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S2619C2");
    test_class_info(&lv, &cd_S2619C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2619C2(Test_S2619C2, "S2619C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S2619C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2619C2 = {  "S2619C2", // class name
  bases_S2619C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C5_nt  {
  ::S17555C4_nt s2619c5f0;
};
//SIG(-1 S2619C5_nt) C1{ FC2{ Fl[4]}}



//skip512 S2619C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C4_nt  {
  ::S2619C5_nt s2619c4f0;
  void  mf2619c4(); // _ZN10S2619C4_nt8mf2619c4Ev
};
//SIG(-1 S2619C4_nt) C1{ m FC2{ FC3{ Fl[4]}}}


void  S2619C4_nt ::mf2619c4(){}

//skip512 S2619C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C10_nt  {
  ::S2442C12_nt s2619c10f0;
};
//SIG(-1 S2619C10_nt) C1{ FC2{ Fi[4]}}



//skip512 S2619C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C9_nt  {
  ::S2619C10_nt s2619c9f0;
  void  mf2619c9(); // _ZN10S2619C9_nt8mf2619c9Ev
};
//SIG(-1 S2619C9_nt) C1{ m FC2{ FC3{ Fi[4]}}}


void  S2619C9_nt ::mf2619c9(){}

//skip512 S2619C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C12_nt  {
  int s2619c12f0[2];
  ::S1113C12_nt s2619c12f1;
  void  mf2619c12(); // _ZN11S2619C12_nt9mf2619c12Ev
};
//SIG(-1 S2619C12_nt) C1{ m Fi[2] FC2{ BC3{ m Fp Fi}}}


void  S2619C12_nt ::mf2619c12(){}

//skip512 S2619C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C8  {
  ::S2619C4_nt s2619c8f0;
  ::S2619C9_nt s2619c8f1;
  ::S2619C12_nt s2619c8f2;
  char s2619c8f3;
  void  mf2619c8(); // _ZN7S2619C88mf2619c8Ev
};
//SIG(-1 S2619C8) C1{ m FC2{ m FC3{ FC4{ Fl[4]}}} FC5{ m FC6{ FC7{ Fi[4]}}} FC8{ m Fi[2] FC9{ BC10{ m Fp Fi}}} Fc}


void  S2619C8 ::mf2619c8(){}

static void Test_S2619C8()
{
  {
    init_simple_test("S2619C8");
    S2619C8 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S2619C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2619C8)");
    check_field_offset(lv, s2619c8f0, 0, "S2619C8.s2619c8f0");
    check_field_offset(lv, s2619c8f1, ABISELECT(32,16), "S2619C8.s2619c8f1");
    check_field_offset(lv, s2619c8f2, ABISELECT(48,32), "S2619C8.s2619c8f2");
    check_field_offset(lv, s2619c8f3, ABISELECT(72,48), "S2619C8.s2619c8f3");
  }
}
static Arrange_To_Call_Me vS2619C8(Test_S2619C8, "S2619C8", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2619C1  : S2619C2 {
  ::S2619C4_nt s2619c1f0;
  int s2619c1f1;
  ::S1868C17 s2619c1f2;
  ::S2619C8 s2619c1f3;
  ::S1113C9 s2619c1f4;
  ::S1868C12 s2619c1f5;
  ::S1868C9_nt s2619c1f6;
  void *s2619c1f7;
};
//SIG(1 S2619C1) C1{ BC2{ BC3{ m Fi}} FC4{ m FC5{ FC6{ Fl[4]}}} Fi FC7{ m Fp} FC8{ m FC4 FC9{ m FC10{ FC11{ Fi[4]}}} FC12{ m Fi[2] FC13{ BC14{ m Fp Fi}}} Fc} FC15{ m FC16{ m Fp Fi[4]}} FC17{ m Fp} FC18{ m Fp} Fp}



static void Test_S2619C1()
{
  extern Class_Descriptor cd_S2619C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,29)];
    init_test(&cd_S2619C1, buf);
    S2619C1 &lv = *(new (buf) S2619C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,112), "sizeof(S2619C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2619C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S2619C2*), 0, "S2619C1");
    check_base_class_offset(lv, (S2619C2*), 0, "S2619C1");
    check_field_offset(lv, s2619c1f0, ABISELECT(8,4), "S2619C1.s2619c1f0");
    check_field_offset(lv, s2619c1f1, ABISELECT(40,20), "S2619C1.s2619c1f1");
    check_field_offset(lv, s2619c1f2, ABISELECT(48,24), "S2619C1.s2619c1f2");
    check_field_offset(lv, s2619c1f3, ABISELECT(56,28), "S2619C1.s2619c1f3");
    check_field_offset(lv, s2619c1f4, ABISELECT(136,80), "S2619C1.s2619c1f4");
    check_field_offset(lv, s2619c1f5, ABISELECT(160,100), "S2619C1.s2619c1f5");
    check_field_offset(lv, s2619c1f6, ABISELECT(168,104), "S2619C1.s2619c1f6");
    check_field_offset(lv, s2619c1f7, ABISELECT(176,108), "S2619C1.s2619c1f7");
    test_class_info(&lv, &cd_S2619C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2619C1(Test_S2619C1, "S2619C1", ABISELECT(184,112));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S2619C2;
static Base_Class bases_S2619C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2619C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2619C1 = {  "S2619C1", // class name
  bases_S2619C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(184,112), // 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  S19514C4  {
  char s19514c4f0:5;
  char s19514c4f1[3];
  virtual void  v2(); // _ZN8S19514C42v2Ev
  virtual void  v3(); // _ZN8S19514C42v3Ev
  virtual void  v4(); // _ZN8S19514C42v4Ev
  virtual void  v5(); // _ZN8S19514C42v5Ev
  virtual void  v6(); // _ZN8S19514C42v6Ev
  ~S19514C4(); // tgen
  S19514C4(); // tgen
};
//SIG(-1 S19514C4) C1{ v1 v2 v3 v4 v5 Fc:5 Fc[3]}


void  S19514C4 ::v2(){vfunc_called(this, "_ZN8S19514C42v2Ev");}
void  S19514C4 ::v3(){vfunc_called(this, "_ZN8S19514C42v3Ev");}
void  S19514C4 ::v4(){vfunc_called(this, "_ZN8S19514C42v4Ev");}
void  S19514C4 ::v5(){vfunc_called(this, "_ZN8S19514C42v5Ev");}
void  S19514C4 ::v6(){vfunc_called(this, "_ZN8S19514C42v6Ev");}
S19514C4 ::~S19514C4(){ note_dtor("S19514C4", this);} // tgen
S19514C4 ::S19514C4(){ note_ctor("S19514C4", this);} // tgen

static void Test_S19514C4()
{
  extern Class_Descriptor cd_S19514C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19514C4, buf);
    S19514C4 *dp, &lv = *(dp=new (buf) S19514C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19514C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C4)");
    set_bf_and_test(lv, s19514c4f0, ABISELECT(8,4), 0, 5, 1, "S19514C4");
    set_bf_and_test(lv, s19514c4f0, ABISELECT(8,4), 0, 5, hide_sll(1LL<<4), "S19514C4");
    check_field_offset(lv, s19514c4f1, ABISELECT(9,5), "S19514C4.s19514c4f1");
    test_class_info(&lv, &cd_S19514C4);
    dp->~S19514C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C4(Test_S19514C4, "S19514C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19514C4C1Ev();
extern void _ZN8S19514C4D1Ev();
Name_Map name_map_S19514C4[] = {
  NSPAIR(_ZN8S19514C4C1Ev),
  NSPAIR(_ZN8S19514C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19514C4[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY vtc_S19514C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C4[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
Class_Descriptor cd_S19514C4 = {  "S19514C4", // class name
  0,0,//no base classes
  &(vtc_S19514C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19514C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19514C4),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

union  S19514C6_nt  {
  void  mf19514c6(); // _ZN11S19514C6_nt9mf19514c6Ev
};
//SIG(1 S19514C6_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19514C5  : S19514C4 {
  ::S19514C6_nt s19514c5f0;
  ::S20291C14_nt s19514c5f1;
  ::S19514C4 s19514c5f2;
  virtual  ~S19514C5(); // _ZN8S19514C5D1Ev
  virtual void  v7(); // _ZN8S19514C52v7Ev
  virtual void  v8(); // _ZN8S19514C52v8Ev
  virtual void  v9(); // _ZN8S19514C52v9Ev
  virtual void  v10(); // _ZN8S19514C53v10Ev
  virtual void  v11(); // _ZN8S19514C53v11Ev
  S19514C5(); // tgen
};
//SIG(-1 S19514C5) C1{ BC2{ v6 v7 v8 v9 v10 Fc:5 Fc[3]} vd v1 v2 v3 v4 v5 FU3{ m} FC4{} FC2}


 S19514C5 ::~S19514C5(){ note_dtor("S19514C5", this);}
void  S19514C5 ::v7(){vfunc_called(this, "_ZN8S19514C52v7Ev");}
void  S19514C5 ::v8(){vfunc_called(this, "_ZN8S19514C52v8Ev");}
void  S19514C5 ::v9(){vfunc_called(this, "_ZN8S19514C52v9Ev");}
void  S19514C5 ::v10(){vfunc_called(this, "_ZN8S19514C53v10Ev");}
void  S19514C5 ::v11(){vfunc_called(this, "_ZN8S19514C53v11Ev");}
S19514C5 ::S19514C5(){ note_ctor("S19514C5", this);} // tgen

static void Test_S19514C5()
{
  extern Class_Descriptor cd_S19514C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19514C5, buf);
    S19514C5 *dp, &lv = *(dp=new (buf) S19514C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19514C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C5)");
    check_base_class_offset(lv, (S19514C4*), 0, "S19514C5");
    check_field_offset(lv, s19514c5f0, ABISELECT(12,8), "S19514C5.s19514c5f0");
    check_field_offset(lv, s19514c5f1, ABISELECT(13,9), "S19514C5.s19514c5f1");
    check_field_offset(lv, s19514c5f2, ABISELECT(16,12), "S19514C5.s19514c5f2");
    test_class_info(&lv, &cd_S19514C5);
    dp->~S19514C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C5(Test_S19514C5, "S19514C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19514C5C1Ev();
extern void _ZN8S19514C5D1Ev();
Name_Map name_map_S19514C5[] = {
  NSPAIR(_ZN8S19514C5C1Ev),
  NSPAIR(_ZN8S19514C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
static Base_Class bases_S19514C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19514C5[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C5D1Ev();
extern void _ZN8S19514C5D0Ev();
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C5[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
Class_Descriptor cd_S19514C5 = {  "S19514C5", // class name
  bases_S19514C5, 1,
  &(vtc_S19514C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19514C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C5),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  S19514C3  : virtual S19514C4 , virtual S19514C5 {
  virtual  ~S19514C3(); // _ZN8S19514C3D2Ev
  virtual void  v12(); // _ZN8S19514C33v12Ev
  virtual void  v13(); // _ZN8S19514C33v13Ev
  virtual void  v14(); // _ZN8S19514C33v14Ev
  S19514C3(); // tgen
};
//SIG(-1 S19514C3) C1{ VBC2{ v4 v5 v6 v7 v8 Fc:5 Fc[3]} VBC3{ BC2 vd v9 v10 v11 v12 v13 FU4{ m} FC5{} FC2} vd v1 v2 v3}


 S19514C3 ::~S19514C3(){ note_dtor("S19514C3", this);}
void  S19514C3 ::v12(){vfunc_called(this, "_ZN8S19514C33v12Ev");}
void  S19514C3 ::v13(){vfunc_called(this, "_ZN8S19514C33v13Ev");}
void  S19514C3 ::v14(){vfunc_called(this, "_ZN8S19514C33v14Ev");}
S19514C3 ::S19514C3(){ note_ctor("S19514C3", this);} // tgen

static void Test_S19514C3()
{
  extern Class_Descriptor cd_S19514C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19514C3, buf);
    S19514C3 *dp, &lv = *(dp=new (buf) S19514C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19514C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C3)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*), ABISELECT(8,4), "S19514C3");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(24,12), "S19514C3");
    check_base_class_offset(lv, (S19514C5*), ABISELECT(24,12), "S19514C3");
    test_class_info(&lv, &cd_S19514C3);
    dp->~S19514C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C3(Test_S19514C3, "S19514C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19514C3C1Ev();
extern void _ZN8S19514C3D2Ev();
Name_Map name_map_S19514C3[] = {
  NSPAIR(_ZN8S19514C3C1Ev),
  NSPAIR(_ZN8S19514C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
static Base_Class bases_S19514C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    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
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19514C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    13, //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 _ZTI8S19514C3[];
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S19514C3D1Ev,_ZThn12_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S19514C3D0Ev,_ZThn12_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C3[] = {
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C3[];
static  VTT_ENTRY vtt_S19514C3[] = {
  {&(_ZTV8S19514C3[4]),  4,46},
  {&(_ZTV8S19514C3[16]),  16,46},
  {&(_ZTV8S19514C3[34]),  34,46},
};
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
static VTBL_ENTRY alt_thunk_names182[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19514C3D0Ev,_ZThn12_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19514C3D1Ev,_ZThn12_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C3 = {  "S19514C3", // class name
  bases_S19514C3, 3,
  &(vtc_S19514C3[0]), // expected_vtbl_contents
  &(vtt_S19514C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19514C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19514C3),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C3),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names182,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C2  : S19514C3 {
  int s19514c2f0;
  virtual  ~S19514C2(); // _ZN8S19514C2D2Ev
  virtual void  v15(); // _ZN8S19514C23v15Ev
  virtual void  v16(); // _ZN8S19514C23v16Ev
  virtual void  v17(); // _ZN8S19514C23v17Ev
  virtual void  v18(); // _ZN8S19514C23v18Ev
  virtual void  v19(); // _ZN8S19514C23v19Ev
  virtual void  v20(); // _ZN8S19514C23v20Ev
  S19514C2(); // tgen
};
//SIG(-1 S19514C2) C1{ BC2{ VBC3{ v7 v8 v9 v10 v11 Fc:5 Fc[3]} VBC4{ BC3 vd v12 v13 v14 v15 v16 FU5{ m} FC6{} FC3} vd v17 v18 v19} vd v1 v2 v3 v4 v5 v6 Fi}


 S19514C2 ::~S19514C2(){ note_dtor("S19514C2", this);}
void  S19514C2 ::v15(){vfunc_called(this, "_ZN8S19514C23v15Ev");}
void  S19514C2 ::v16(){vfunc_called(this, "_ZN8S19514C23v16Ev");}
void  S19514C2 ::v17(){vfunc_called(this, "_ZN8S19514C23v17Ev");}
void  S19514C2 ::v18(){vfunc_called(this, "_ZN8S19514C23v18Ev");}
void  S19514C2 ::v19(){vfunc_called(this, "_ZN8S19514C23v19Ev");}
void  S19514C2 ::v20(){vfunc_called(this, "_ZN8S19514C23v20Ev");}
S19514C2 ::S19514C2(){ note_ctor("S19514C2", this);} // tgen

static void Test_S19514C2()
{
  extern Class_Descriptor cd_S19514C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19514C2, buf);
    S19514C2 *dp, &lv = *(dp=new (buf) S19514C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19514C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C2)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*)(S19514C3*), ABISELECT(16,8), "S19514C2");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(32,16), "S19514C2");
    check_base_class_offset(lv, (S19514C5*)(S19514C3*), ABISELECT(32,16), "S19514C2");
    check_base_class_offset(lv, (S19514C3*), 0, "S19514C2");
    check_field_offset(lv, s19514c2f0, ABISELECT(8,4), "S19514C2.s19514c2f0");
    test_class_info(&lv, &cd_S19514C2);
    dp->~S19514C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C2(Test_S19514C2, "S19514C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19514C2C1Ev();
extern void _ZN8S19514C2D2Ev();
Name_Map name_map_S19514C2[] = {
  NSPAIR(_ZN8S19514C2C1Ev),
  NSPAIR(_ZN8S19514C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
extern Class_Descriptor cd_S19514C3;
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
static Base_Class bases_S19514C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    ABISELECT(16,8), //bcp->offset
    15, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19514C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(32,16), //bcp->offset
    27, //bcp->virtual_function_table_offset
    13, //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_S19514C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C2[];
extern void _ZN8S19514C2D1Ev();
extern void _ZN8S19514C2D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C2[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C2[];
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C3__8S19514C2[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C3__8S19514C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C3__8S19514C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
static  VTT_ENTRY vtt_S19514C2[] = {
  {&(_ZTV8S19514C2[4]),  4,52},
  {&(_tg__ZTV8S19514C3__8S19514C2[4]),  4,9},
  {&(_tg__ZTV8S19514C4__8S19514C3__8S19514C2[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C3__8S19514C2[13]),  13,25},
  {&(_ZTV8S19514C2[22]),  22,52},
  {&(_ZTV8S19514C2[40]),  40,52},
};
extern VTBL_ENTRY _ZTI8S19514C2[];
extern  VTBL_ENTRY _ZTV8S19514C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C2[];
static VTBL_ENTRY alt_thunk_names183[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C2 = {  "S19514C2", // class name
  bases_S19514C2, 4,
  &(vtc_S19514C2[0]), // expected_vtbl_contents
  &(vtt_S19514C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19514C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C2),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C2),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names183,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19514C8  : S19514C4 {
  virtual void  v21(); // _ZN8S19514C83v21Ev
  virtual void  v22(); // _ZN8S19514C83v22Ev
  virtual void  v23(); // _ZN8S19514C83v23Ev
  virtual void  v24(); // _ZN8S19514C83v24Ev
  virtual void  v25(); // _ZN8S19514C83v25Ev
  ~S19514C8(); // tgen
  S19514C8(); // tgen
};
//SIG(-1 S19514C8) C1{ BC2{ v6 v7 v8 v9 v10 Fc:5 Fc[3]} v1 v2 v3 v4 v5}


void  S19514C8 ::v21(){vfunc_called(this, "_ZN8S19514C83v21Ev");}
void  S19514C8 ::v22(){vfunc_called(this, "_ZN8S19514C83v22Ev");}
void  S19514C8 ::v23(){vfunc_called(this, "_ZN8S19514C83v23Ev");}
void  S19514C8 ::v24(){vfunc_called(this, "_ZN8S19514C83v24Ev");}
void  S19514C8 ::v25(){vfunc_called(this, "_ZN8S19514C83v25Ev");}
S19514C8 ::~S19514C8(){ note_dtor("S19514C8", this);} // tgen
S19514C8 ::S19514C8(){ note_ctor("S19514C8", this);} // tgen

static void Test_S19514C8()
{
  extern Class_Descriptor cd_S19514C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19514C8, buf);
    S19514C8 *dp, &lv = *(dp=new (buf) S19514C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19514C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C8)");
    check_base_class_offset(lv, (S19514C4*), 0, "S19514C8");
    test_class_info(&lv, &cd_S19514C8);
    dp->~S19514C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C8(Test_S19514C8, "S19514C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19514C8C1Ev();
extern void _ZN8S19514C8D1Ev();
Name_Map name_map_S19514C8[] = {
  NSPAIR(_ZN8S19514C8C1Ev),
  NSPAIR(_ZN8S19514C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
static Base_Class bases_S19514C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19514C8[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C83v21Ev();
extern void _ZN8S19514C83v22Ev();
extern void _ZN8S19514C83v23Ev();
extern void _ZN8S19514C83v24Ev();
extern void _ZN8S19514C83v25Ev();
static  VTBL_ENTRY vtc_S19514C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C8[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v25Ev,
};
extern VTBL_ENTRY _ZTI8S19514C8[];
extern  VTBL_ENTRY _ZTV8S19514C8[];
Class_Descriptor cd_S19514C8 = {  "S19514C8", // class name
  bases_S19514C8, 1,
  &(vtc_S19514C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19514C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19514C8),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  S19514C1  : virtual S19514C2 , S19514C8 {
  virtual  ~S19514C1(); // _ZN8S19514C1D2Ev
  virtual void  v1(); // _ZN8S19514C12v1Ev
  S19514C1(); // tgen
};
//SIG(1 S19514C1) C1{ VBC2{ BC3{ VBC4{ v2 v3 v4 v5 v6 Fc:5 Fc[3]} VBC5{ BC4 vd v7 v8 v9 v10 v11 FU6{ m} FC7{} FC4} vd v12 v13 v14} vd v15 v16 v17 v18 v19 v20 Fi} BC8{ BC4 v21 v22 v23 v24 v25} vd v1}


 S19514C1 ::~S19514C1(){ note_dtor("S19514C1", this);}
void  S19514C1 ::v1(){vfunc_called(this, "_ZN8S19514C12v1Ev");}
S19514C1 ::S19514C1(){ note_ctor("S19514C1", this);} // tgen

static void Test_S19514C1()
{
  extern Class_Descriptor cd_S19514C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S19514C1, buf);
    S19514C1 *dp, &lv = *(dp=new (buf) S19514C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19514C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19514C1)");
    /*is_ambiguous_... S19514C3::S19514C4 */ AMB_check_base_class_offset(lv, (S19514C4*)(S19514C3*)(S19514C2*), ABISELECT(32,16), "S19514C1");
    check_base_class_offset(lv, (S19514C4*)(S19514C5*), ABISELECT(48,24), "S19514C1");
    check_base_class_offset(lv, (S19514C5*)(S19514C3*)(S19514C2*), ABISELECT(48,24), "S19514C1");
    check_base_class_offset(lv, (S19514C3*)(S19514C2*), ABISELECT(16,8), "S19514C1");
    check_base_class_offset(lv, (S19514C2*), ABISELECT(16,8), "S19514C1");
    check_base_class_offset(lv, (S19514C4*)(S19514C8*), 0, "S19514C1");
    check_base_class_offset(lv, (S19514C8*), 0, "S19514C1");
    test_class_info(&lv, &cd_S19514C1);
    dp->~S19514C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19514C1(Test_S19514C1, "S19514C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S19514C1C1Ev();
extern void _ZN8S19514C1D2Ev();
Name_Map name_map_S19514C1[] = {
  NSPAIR(_ZN8S19514C1C1Ev),
  NSPAIR(_ZN8S19514C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C5;
extern VTBL_ENTRY _ZTI8S19514C5[];
extern  VTBL_ENTRY _ZTV8S19514C5[];
extern Class_Descriptor cd_S19514C3;
extern VTBL_ENTRY _ZTI8S19514C3[];
extern  VTBL_ENTRY _ZTV8S19514C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C3[];
extern Class_Descriptor cd_S19514C2;
extern VTBL_ENTRY _ZTI8S19514C2[];
extern  VTBL_ENTRY _ZTV8S19514C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C2[];
extern Class_Descriptor cd_S19514C4;
extern VTBL_ENTRY _ZTI8S19514C4[];
extern  VTBL_ENTRY _ZTV8S19514C4[];
extern Class_Descriptor cd_S19514C8;
extern VTBL_ENTRY _ZTI8S19514C8[];
extern  VTBL_ENTRY _ZTV8S19514C8[];
static Base_Class bases_S19514C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19514C4,    ABISELECT(32,16), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //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_S19514C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19514C5,    ABISELECT(48,24), //bcp->offset
    55, //bcp->virtual_function_table_offset
    13, //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_S19514C3,    ABISELECT(16,8), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19514C2,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19514C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19514C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19514C1[];
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C83v21Ev();
extern void _ZN8S19514C83v22Ev();
extern void _ZN8S19514C83v23Ev();
extern void _ZN8S19514C83v24Ev();
extern void _ZN8S19514C83v25Ev();
extern void _ZN8S19514C1D1Ev();
extern void _ZN8S19514C1D0Ev();
extern void _ZN8S19514C12v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19514C1D1Ev,_ZThn8_N8S19514C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19514C1D0Ev,_ZThn8_N8S19514C1D0Ev)() __attribute__((weak));
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19514C1D1Ev,_ZThn24_N8S19514C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19514C1D0Ev,_ZThn24_N8S19514C1D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY vtc_S19514C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v21Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v22Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v23Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v24Ev,
  (VTBL_ENTRY)&_ZN8S19514C83v25Ev,
  (VTBL_ENTRY)&_ZN8S19514C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19514C1[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern VTBL_ENTRY _ZTV8S19514C1[];
extern void _ZN8S19514C2D1Ev();
extern void _ZN8S19514C2D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
extern void _ZN8S19514C23v15Ev();
extern void _ZN8S19514C23v16Ev();
extern void _ZN8S19514C23v17Ev();
extern void _ZN8S19514C23v18Ev();
extern void _ZN8S19514C23v19Ev();
extern void _ZN8S19514C23v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C2__8S19514C1[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19514C23v20Ev,
};
extern void _ZN8S19514C3D1Ev();
extern void _ZN8S19514C3D0Ev();
extern void _ZN8S19514C33v12Ev();
extern void _ZN8S19514C33v13Ev();
extern void _ZN8S19514C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C38S19514C2__8S19514C1[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19514C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19514C33v14Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C38S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C38S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C3[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C4__8S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
};
extern void _ZN8S19514C42v2Ev();
extern void _ZN8S19514C42v3Ev();
extern void _ZN8S19514C42v4Ev();
extern void _ZN8S19514C42v5Ev();
extern void _ZN8S19514C42v6Ev();
extern void ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev)() __attribute__((weak));
extern void _ZN8S19514C52v7Ev();
extern void _ZN8S19514C52v8Ev();
extern void _ZN8S19514C52v9Ev();
extern void _ZN8S19514C53v10Ev();
extern void _ZN8S19514C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19514C5__8S19514C2__8S19514C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19514C2[0]),
  (VTBL_ENTRY)&_ZN8S19514C42v2Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19514C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19514C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19514C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19514C53v11Ev,
};
static  VTT_ENTRY vtt_S19514C1[] = {
  {&(_ZTV8S19514C1[5]),  5,80},
  {&(_ZTV8S19514C1[32]),  32,80},
  {&(_ZTV8S19514C1[50]),  50,80},
  {&(_ZTV8S19514C1[68]),  68,80},
  {&(_tg__ZTV8S19514C2__8S19514C1[4]),  4,15},
  {&(_tg__ZTV8S19514C38S19514C2__8S19514C1[4]),  4,9},
  {&(_tg__ZTV8S19514C4__8S19514C38S19514C2__8S19514C1[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C38S19514C2__8S19514C1[13]),  13,25},
  {&(_tg__ZTV8S19514C4__8S19514C2__8S19514C1[7]),  7,12},
  {&(_tg__ZTV8S19514C5__8S19514C2__8S19514C1[13]),  13,25},
};
extern VTBL_ENTRY _ZTI8S19514C1[];
extern  VTBL_ENTRY _ZTV8S19514C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19514C1[];
static VTBL_ENTRY alt_thunk_names184[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D0Ev,_ZTv0_n32_N8S19514C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D0Ev,_ZThn16_N8S19514C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C2D1Ev,_ZTv0_n32_N8S19514C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C2D1Ev,_ZThn16_N8S19514C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D0Ev,_ZTv0_n32_N8S19514C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D0Ev,_ZThn16_N8S19514C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C3D1Ev,_ZTv0_n32_N8S19514C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19514C3D1Ev,_ZThn16_N8S19514C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C1D0Ev,_ZTv0_n32_N8S19514C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19514C1D0Ev,_ZThn24_N8S19514C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19514C1D1Ev,_ZTv0_n32_N8S19514C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19514C1D1Ev,_ZThn24_N8S19514C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19514C1D0Ev,_ZTv0_n20_N8S19514C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19514C1D0Ev,_ZThn8_N8S19514C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19514C1D1Ev,_ZTv0_n20_N8S19514C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19514C1D1Ev,_ZThn8_N8S19514C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19514C1 = {  "S19514C1", // class name
  bases_S19514C1, 7,
  &(vtc_S19514C1[0]), // expected_vtbl_contents
  &(vtt_S19514C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S19514C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19514C1),80, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19514C1),10, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names184,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C4  {
  virtual void  v10(); // _ZN8S18657C43v10Ev
  virtual void  v11(); // _ZN8S18657C43v11Ev
  ~S18657C4(); // tgen
  S18657C4(); // tgen
};
//SIG(-1 S18657C4) C1{ v1 v2}


void  S18657C4 ::v10(){vfunc_called(this, "_ZN8S18657C43v10Ev");}
void  S18657C4 ::v11(){vfunc_called(this, "_ZN8S18657C43v11Ev");}
S18657C4 ::~S18657C4(){ note_dtor("S18657C4", this);} // tgen
S18657C4 ::S18657C4(){ note_ctor("S18657C4", this);} // tgen

static void Test_S18657C4()
{
  extern Class_Descriptor cd_S18657C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18657C4, buf);
    S18657C4 *dp, &lv = *(dp=new (buf) S18657C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18657C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C4)");
    test_class_info(&lv, &cd_S18657C4);
    dp->~S18657C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C4(Test_S18657C4, "S18657C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18657C4C1Ev();
extern void _ZN8S18657C4D1Ev();
Name_Map name_map_S18657C4[] = {
  NSPAIR(_ZN8S18657C4C1Ev),
  NSPAIR(_ZN8S18657C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C4[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY vtc_S18657C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C4[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
Class_Descriptor cd_S18657C4 = {  "S18657C4", // class name
  0,0,//no base classes
  &(vtc_S18657C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18657C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C4),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  S18657C3  : S18657C4 {
  int s18657c3f0[5];
  void *s18657c3f1;
  __tsi64 s18657c3f2[4];
  virtual void  v12(); // _ZN8S18657C33v12Ev
  virtual void  v13(); // _ZN8S18657C33v13Ev
  virtual void  v14(); // _ZN8S18657C33v14Ev
  virtual void  v15(); // _ZN8S18657C33v15Ev
  ~S18657C3(); // tgen
  S18657C3(); // tgen
};
//SIG(-1 S18657C3) C1{ BC2{ v5 v6} v1 v2 v3 v4 Fi[5] Fp FL[4]}


void  S18657C3 ::v12(){vfunc_called(this, "_ZN8S18657C33v12Ev");}
void  S18657C3 ::v13(){vfunc_called(this, "_ZN8S18657C33v13Ev");}
void  S18657C3 ::v14(){vfunc_called(this, "_ZN8S18657C33v14Ev");}
void  S18657C3 ::v15(){vfunc_called(this, "_ZN8S18657C33v15Ev");}
S18657C3 ::~S18657C3(){ note_dtor("S18657C3", this);} // tgen
S18657C3 ::S18657C3(){ note_ctor("S18657C3", this);} // tgen

static void Test_S18657C3()
{
  extern Class_Descriptor cd_S18657C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S18657C3, buf);
    S18657C3 *dp, &lv = *(dp=new (buf) S18657C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S18657C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C3)");
    check_base_class_offset(lv, (S18657C4*), 0, "S18657C3");
    check_field_offset(lv, s18657c3f0, ABISELECT(8,4), "S18657C3.s18657c3f0");
    check_field_offset(lv, s18657c3f1, ABISELECT(32,24), "S18657C3.s18657c3f1");
    check_field_offset(lv, s18657c3f2, ABISELECT(40,28), "S18657C3.s18657c3f2");
    test_class_info(&lv, &cd_S18657C3);
    dp->~S18657C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C3(Test_S18657C3, "S18657C3", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN8S18657C3C1Ev();
extern void _ZN8S18657C3D1Ev();
Name_Map name_map_S18657C3[] = {
  NSPAIR(_ZN8S18657C3C1Ev),
  NSPAIR(_ZN8S18657C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
static Base_Class bases_S18657C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S18657C3[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY vtc_S18657C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C3[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
Class_Descriptor cd_S18657C3 = {  "S18657C3", // class name
  bases_S18657C3, 1,
  &(vtc_S18657C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI8S18657C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18657C3),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  S18657C6  {
  virtual void  v16(); // _ZN8S18657C63v16Ev
  virtual void  v17(); // _ZN8S18657C63v17Ev
  ~S18657C6(); // tgen
  S18657C6(); // tgen
};
//SIG(-1 S18657C6) C1{ v1 v2}


void  S18657C6 ::v16(){vfunc_called(this, "_ZN8S18657C63v16Ev");}
void  S18657C6 ::v17(){vfunc_called(this, "_ZN8S18657C63v17Ev");}
S18657C6 ::~S18657C6(){ note_dtor("S18657C6", this);} // tgen
S18657C6 ::S18657C6(){ note_ctor("S18657C6", this);} // tgen

static void Test_S18657C6()
{
  extern Class_Descriptor cd_S18657C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18657C6, buf);
    S18657C6 *dp, &lv = *(dp=new (buf) S18657C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18657C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C6)");
    test_class_info(&lv, &cd_S18657C6);
    dp->~S18657C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C6(Test_S18657C6, "S18657C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18657C6C1Ev();
extern void _ZN8S18657C6D1Ev();
Name_Map name_map_S18657C6[] = {
  NSPAIR(_ZN8S18657C6C1Ev),
  NSPAIR(_ZN8S18657C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C6[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
static  VTBL_ENTRY vtc_S18657C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C6[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
};
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
Class_Descriptor cd_S18657C6 = {  "S18657C6", // class name
  0,0,//no base classes
  &(vtc_S18657C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18657C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C6),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  S18657C8  : virtual S7856C24 , virtual S18657C4 , S18657C6 , virtual S18657C3 {
  virtual void  v18(); // _ZN8S18657C83v18Ev
  ~S18657C8(); // tgen
  S18657C8(); // tgen
};
//SIG(-1 S18657C8) C1{ VBC2{ m} VBC3{ v2 v3} BC4{ v4 v5} VBC5{ BC3 v6 v7 v8 v9 Fi[5] Fp FL[4]} v1}


void  S18657C8 ::v18(){vfunc_called(this, "_ZN8S18657C83v18Ev");}
S18657C8 ::~S18657C8(){ note_dtor("S18657C8", this);} // tgen
S18657C8 ::S18657C8(){ note_ctor("S18657C8", this);} // tgen

static void Test_S18657C8()
{
  extern Class_Descriptor cd_S18657C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S18657C8, buf);
    S18657C8 *dp, &lv = *(dp=new (buf) S18657C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S18657C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18657C8)");
    check_base_class_offset(lv, (S7856C24*), 0, "S18657C8");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*), ABISELECT(8,4), "S18657C8");
    check_base_class_offset(lv, (S18657C6*), 0, "S18657C8");
    check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(16,8), "S18657C8");
    check_base_class_offset(lv, (S18657C3*), ABISELECT(16,8), "S18657C8");
    test_class_info(&lv, &cd_S18657C8);
    dp->~S18657C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C8(Test_S18657C8, "S18657C8", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S18657C8C1Ev();
extern void _ZN8S18657C8D1Ev();
Name_Map name_map_S18657C8[] = {
  NSPAIR(_ZN8S18657C8C1Ev),
  NSPAIR(_ZN8S18657C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
static Base_Class bases_S18657C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S18657C4,    ABISELECT(8,4), //bcp->offset
    8, //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_S18657C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18657C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(16,8), //bcp->offset
    14, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C8[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY vtc_S18657C8[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern VTBL_ENTRY _ZTV8S18657C8[];
static  VTT_ENTRY vtt_S18657C8[] = {
  {&(_ZTV8S18657C8[5]),  5,28},
  {&(_ZTV8S18657C8[12]),  12,28},
  {&(_ZTV8S18657C8[22]),  22,28},
};
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
Class_Descriptor cd_S18657C8 = {  "S18657C8", // class name
  bases_S18657C8, 5,
  &(vtc_S18657C8[0]), // expected_vtbl_contents
  &(vtt_S18657C8[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S18657C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18657C8),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C8),3, //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  S18657C9  {
  void *s18657c9f0;
  long double s18657c9f1[7];
  virtual void  v19(); // _ZN8S18657C93v19Ev
  ~S18657C9(); // tgen
  S18657C9(); // tgen
};
//SIG(-1 S18657C9) C1{ v1 Fp FD[7]}


void  S18657C9 ::v19(){vfunc_called(this, "_ZN8S18657C93v19Ev");}
S18657C9 ::~S18657C9(){ note_dtor("S18657C9", this);} // tgen
S18657C9 ::S18657C9(){ note_ctor("S18657C9", this);} // tgen

static void Test_S18657C9()
{
  extern Class_Descriptor cd_S18657C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,24)];
    init_test(&cd_S18657C9, buf);
    S18657C9 *dp, &lv = *(dp=new (buf) S18657C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S18657C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C9)");
    check_field_offset(lv, s18657c9f0, ABISELECT(8,4), "S18657C9.s18657c9f0");
    check_field_offset(lv, s18657c9f1, ABISELECT(16,8), "S18657C9.s18657c9f1");
    test_class_info(&lv, &cd_S18657C9);
    dp->~S18657C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C9(Test_S18657C9, "S18657C9", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN8S18657C9C1Ev();
extern void _ZN8S18657C9D1Ev();
Name_Map name_map_S18657C9[] = {
  NSPAIR(_ZN8S18657C9C1Ev),
  NSPAIR(_ZN8S18657C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C9[];
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C9[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
Class_Descriptor cd_S18657C9 = {  "S18657C9", // class name
  0,0,//no base classes
  &(vtc_S18657C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI8S18657C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C9),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  S18657C7  : S18657C8 , virtual S18657C9 {
  void *s18657c7f0;
  virtual  ~S18657C7(); // _ZN8S18657C7D2Ev
  virtual void  v20(); // _ZN8S18657C73v20Ev
  S18657C7(); // tgen
};
//SIG(-1 S18657C7) C1{ BC2{ VBC3{ m} VBC4{ v2 v3} BC5{ v4 v5} VBC6{ BC4 v6 v7 v8 v9 Fi[5] Fp FL[4]} v10} VBC7{ v11 Fp FD[7]} vd v1 Fp}


 S18657C7 ::~S18657C7(){ note_dtor("S18657C7", this);}
void  S18657C7 ::v20(){vfunc_called(this, "_ZN8S18657C73v20Ev");}
S18657C7 ::S18657C7(){ note_ctor("S18657C7", this);} // tgen

static void Test_S18657C7()
{
  extern Class_Descriptor cd_S18657C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S18657C7, buf);
    S18657C7 *dp, &lv = *(dp=new (buf) S18657C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S18657C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C7)");
    check_base_class_offset(lv, (S7856C24*)(S18657C8*), 0, "S18657C7");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C8*), ABISELECT(16,8), "S18657C7");
    check_base_class_offset(lv, (S18657C6*)(S18657C8*), 0, "S18657C7");
    check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(24,12), "S18657C7");
    check_base_class_offset(lv, (S18657C3*)(S18657C8*), ABISELECT(24,12), "S18657C7");
    check_base_class_offset(lv, (S18657C8*), 0, "S18657C7");
    check_base_class_offset(lv, (S18657C9*), ABISELECT(96,72), "S18657C7");
    check_field_offset(lv, s18657c7f0, ABISELECT(8,4), "S18657C7.s18657c7f0");
    test_class_info(&lv, &cd_S18657C7);
    dp->~S18657C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C7(Test_S18657C7, "S18657C7", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN8S18657C7C1Ev();
extern void _ZN8S18657C7D2Ev();
Name_Map name_map_S18657C7[] = {
  NSPAIR(_ZN8S18657C7C1Ev),
  NSPAIR(_ZN8S18657C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S18657C8;
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
extern Class_Descriptor cd_S18657C9;
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
static Base_Class bases_S18657C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18657C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //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
    5, //immediately_derived
  0, 1},
  {&cd_S18657C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18657C4,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(24,12), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S18657C8,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18657C9,    ABISELECT(96,72), //bcp->offset
    32, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C7[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C7D1Ev();
extern void _ZN8S18657C7D0Ev();
extern void _ZN8S18657C73v20Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C7[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S18657C7[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C8__8S18657C7[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C8__8S18657C7[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C8__8S18657C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
static  VTT_ENTRY vtt_S18657C7[] = {
  {&(_ZTV8S18657C7[6]),  6,36},
  {&(_tg__ZTV8S18657C8__8S18657C7[5]),  5,8},
  {&(_tg__ZTV8S18657C4__8S18657C8__8S18657C7[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C8__8S18657C7[8]),  8,14},
  {&(_ZTV8S18657C7[16]),  16,36},
  {&(_ZTV8S18657C7[26]),  26,36},
  {&(_ZTV8S18657C7[35]),  35,36},
};
extern VTBL_ENTRY _ZTI8S18657C7[];
extern  VTBL_ENTRY _ZTV8S18657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C7[];
Class_Descriptor cd_S18657C7 = {  "S18657C7", // class name
  bases_S18657C7, 7,
  &(vtc_S18657C7[0]), // expected_vtbl_contents
  &(vtt_S18657C7[0]), // expected_vtt_contents
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI8S18657C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18657C7),36, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C7),7, //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  S18657C2  : S18657C3 , virtual S7856C24 , S18657C6 , virtual S18657C7 {
  virtual void  v5(); // _ZN8S18657C22v5Ev
  virtual void  v6(); // _ZN8S18657C22v6Ev
  virtual void  v7(); // _ZN8S18657C22v7Ev
  virtual void  v8(); // _ZN8S18657C22v8Ev
  virtual void  v9(); // _ZN8S18657C22v9Ev
  ~S18657C2(); // tgen
  S18657C2(); // tgen
};
//SIG(1 S18657C2) C1{ BC2{ BC3{ v6 v7} v8 v9 v10 v11 Fi[5] Fp FL[4]} VBC4{ m} BC5{ v12 v13} VBC6{ BC7{ VBC4 VBC3 BC5 VBC2 v14} VBC8{ v15 Fp FD[7]} vd v16 Fp} v1 v2 v3 v4 v5}


void  S18657C2 ::v5(){vfunc_called(this, "_ZN8S18657C22v5Ev");}
void  S18657C2 ::v6(){vfunc_called(this, "_ZN8S18657C22v6Ev");}
void  S18657C2 ::v7(){vfunc_called(this, "_ZN8S18657C22v7Ev");}
void  S18657C2 ::v8(){vfunc_called(this, "_ZN8S18657C22v8Ev");}
void  S18657C2 ::v9(){vfunc_called(this, "_ZN8S18657C22v9Ev");}
S18657C2 ::~S18657C2(){ note_dtor("S18657C2", this);} // tgen
S18657C2 ::S18657C2(){ note_ctor("S18657C2", this);} // tgen

static void Test_S18657C2()
{
  extern Class_Descriptor cd_S18657C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,58)];
    init_test(&cd_S18657C2, buf);
    S18657C2 *dp, &lv = *(dp=new (buf) S18657C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S18657C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C2)");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C3*), 0, "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C3*), 0, "S18657C2");
    check_base_class_offset(lv, (S7856C24*), 0, "S18657C2");
    check_base_class_offset(lv, (S7856C24*)(S18657C8*)(S18657C7*), 0, "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C6 */ AMB_check_base_class_offset(lv, (S18657C6*), ABISELECT(72,60), "S18657C2");
    /*is_ambiguous_... S18657C8::S18657C4 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C8*)(S18657C7*), ABISELECT(96,72), "S18657C2");
    check_base_class_offset(lv, (S18657C6*)(S18657C8*)(S18657C7*), ABISELECT(80,64), "S18657C2");
    /*is_ambiguous_... S18657C2::S18657C3 */ AMB_check_base_class_offset(lv, (S18657C4*)(S18657C3*), ABISELECT(104,76), "S18657C2");
    check_base_class_offset(lv, (S18657C3*)(S18657C8*)(S18657C7*), ABISELECT(104,76), "S18657C2");
    check_base_class_offset(lv, (S18657C8*)(S18657C7*), ABISELECT(80,64), "S18657C2");
    check_base_class_offset(lv, (S18657C9*)(S18657C7*), ABISELECT(176,136), "S18657C2");
    check_base_class_offset(lv, (S18657C7*), ABISELECT(80,64), "S18657C2");
    test_class_info(&lv, &cd_S18657C2);
    dp->~S18657C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C2(Test_S18657C2, "S18657C2", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN8S18657C2C1Ev();
extern void _ZN8S18657C2D1Ev();
Name_Map name_map_S18657C2[] = {
  NSPAIR(_ZN8S18657C2C1Ev),
  NSPAIR(_ZN8S18657C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C6;
extern VTBL_ENTRY _ZTI8S18657C6[];
extern  VTBL_ENTRY _ZTV8S18657C6[];
extern Class_Descriptor cd_S18657C4;
extern VTBL_ENTRY _ZTI8S18657C4[];
extern  VTBL_ENTRY _ZTV8S18657C4[];
extern Class_Descriptor cd_S18657C3;
extern VTBL_ENTRY _ZTI8S18657C3[];
extern  VTBL_ENTRY _ZTV8S18657C3[];
extern Class_Descriptor cd_S18657C8;
extern VTBL_ENTRY _ZTI8S18657C8[];
extern  VTBL_ENTRY _ZTV8S18657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C8[];
extern Class_Descriptor cd_S18657C9;
extern VTBL_ENTRY _ZTI8S18657C9[];
extern  VTBL_ENTRY _ZTV8S18657C9[];
extern Class_Descriptor cd_S18657C7;
extern VTBL_ENTRY _ZTI8S18657C7[];
extern  VTBL_ENTRY _ZTV8S18657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C7[];
static Base_Class bases_S18657C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18657C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S18657C6,    ABISELECT(72,60), //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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18657C4,    ABISELECT(96,72), //bcp->offset
    41, //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
    8, //immediately_derived
  0, 1},
  {&cd_S18657C6,    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
    8, //immediately_derived
  0, 0},
  {&cd_S18657C4,    ABISELECT(104,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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S18657C3,    ABISELECT(104,76), //bcp->offset
    47, //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
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S18657C8,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18657C9,    ABISELECT(176,136), //bcp->offset
    61, //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
    10, //immediately_derived
  0, 1},
  {&cd_S18657C7,    ABISELECT(80,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18657C2[];
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C22v5Ev();
extern void _ZN8S18657C22v6Ev();
extern void _ZN8S18657C22v7Ev();
extern void _ZN8S18657C22v8Ev();
extern void _ZN8S18657C22v9Ev();
extern void _ZN8S18657C2D1Ev();
extern void _ZN8S18657C2D0Ev();
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S18657C2D1Ev,_ZThn64_N8S18657C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S18657C2D0Ev,_ZThn64_N8S18657C2D0Ev)() __attribute__((weak));
extern void _ZN8S18657C73v20Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY vtc_S18657C2[] = {
  ABISELECT(176,136),
  ABISELECT(104,76),
  ABISELECT(96,72),
  ABISELECT(80,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v5Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v6Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v7Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v8Ev,
  (VTBL_ENTRY)&_ZN8S18657C22v9Ev,
  (VTBL_ENTRY)&_ZN8S18657C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C2D0Ev,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  0,
  ABISELECT(-80,-64),
  0,
  0,
  0,
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
  0,
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
  0,
  ABISELECT(-176,-136),
  (VTBL_ENTRY)&(_ZTI8S18657C2[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
extern VTBL_ENTRY _ZTV8S18657C2[];
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
extern void _ZN8S18657C7D1Ev();
extern void _ZN8S18657C7D0Ev();
extern void _ZN8S18657C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C7__8S18657C2[] = {
  ABISELECT(96,72),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S18657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S18657C73v20Ev,
};
extern void _ZN8S18657C63v16Ev();
extern void _ZN8S18657C63v17Ev();
extern void _ZN8S18657C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C88S18657C7__8S18657C2[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C63v16Ev,
  (VTBL_ENTRY)&_ZN8S18657C63v17Ev,
  (VTBL_ENTRY)&_ZN8S18657C83v18Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C88S18657C7__8S18657C2[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C88S18657C7__8S18657C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C8[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C4__8S18657C7__8S18657C2[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
};
extern void _ZN8S18657C43v10Ev();
extern void _ZN8S18657C43v11Ev();
extern void _ZN8S18657C33v12Ev();
extern void _ZN8S18657C33v13Ev();
extern void _ZN8S18657C33v14Ev();
extern void _ZN8S18657C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C3__8S18657C7__8S18657C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S18657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v12Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v13Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v14Ev,
  (VTBL_ENTRY)&_ZN8S18657C33v15Ev,
};
extern void _ZN8S18657C93v19Ev();
static  VTBL_ENTRY _tg__ZTV8S18657C9__8S18657C7__8S18657C2[] = {
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S18657C7[0]),
  (VTBL_ENTRY)&_ZN8S18657C93v19Ev,
};
static  VTT_ENTRY vtt_S18657C2[] = {
  {&(_ZTV8S18657C2[7]),  7,65},
  {&(_ZTV8S18657C2[35]),  35,65},
  {&(_ZTV8S18657C2[45]),  45,65},
  {&(_ZTV8S18657C2[55]),  55,65},
  {&(_ZTV8S18657C2[64]),  64,65},
  {&(_tg__ZTV8S18657C7__8S18657C2[6]),  6,12},
  {&(_tg__ZTV8S18657C88S18657C7__8S18657C2[5]),  5,8},
  {&(_tg__ZTV8S18657C4__8S18657C88S18657C7__8S18657C2[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C88S18657C7__8S18657C2[8]),  8,14},
  {&(_tg__ZTV8S18657C4__8S18657C7__8S18657C2[4]),  4,6},
  {&(_tg__ZTV8S18657C3__8S18657C7__8S18657C2[8]),  8,14},
  {&(_tg__ZTV8S18657C9__8S18657C7__8S18657C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18657C2[];
extern  VTBL_ENTRY _ZTV8S18657C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18657C2[];
static VTBL_ENTRY alt_thunk_names185[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18657C2D0Ev,_ZTv0_n40_N8S18657C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18657C2D0Ev,_ZThn64_N8S18657C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18657C2D1Ev,_ZTv0_n40_N8S18657C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18657C2D1Ev,_ZThn64_N8S18657C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18657C2 = {  "S18657C2", // class name
  bases_S18657C2, 11,
  &(vtc_S18657C2[0]), // expected_vtbl_contents
  &(vtt_S18657C2[0]), // expected_vtt_contents
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI8S18657C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18657C2),65, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18657C2),12, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names185,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18657C1  {
  ::S18657C2 s18657c1f0[6];
  virtual void  v1(); // _ZN8S18657C12v1Ev
  virtual void  v2(); // _ZN8S18657C12v2Ev
  virtual void  v3(); // _ZN8S18657C12v3Ev
  virtual void  v4(); // _ZN8S18657C12v4Ev
  ~S18657C1(); // tgen
  S18657C1(); // tgen
};
//SIG(1 S18657C1) C1{ v1 v2 v3 v4 FC2{ BC3{ BC4{ v10 v11} v12 v13 v14 v15 Fi[5] Fp FL[4]} VBC5{ m} BC6{ v16 v17} VBC7{ BC8{ VBC5 VBC4 BC6 VBC3 v18} VBC9{ v19 Fp FD[7]} vd v20 Fp} v5 v6 v7 v8 v9}[6]}


void  S18657C1 ::v1(){vfunc_called(this, "_ZN8S18657C12v1Ev");}
void  S18657C1 ::v2(){vfunc_called(this, "_ZN8S18657C12v2Ev");}
void  S18657C1 ::v3(){vfunc_called(this, "_ZN8S18657C12v3Ev");}
void  S18657C1 ::v4(){vfunc_called(this, "_ZN8S18657C12v4Ev");}
S18657C1 ::~S18657C1(){ note_dtor("S18657C1", this);} // tgen
S18657C1 ::S18657C1(){ note_ctor("S18657C1", this);} // tgen

static void Test_S18657C1()
{
  extern Class_Descriptor cd_S18657C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,344)];
    init_test(&cd_S18657C1, buf);
    S18657C1 *dp, &lv = *(dp=new (buf) S18657C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1372), "sizeof(S18657C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18657C1)");
    check_field_offset(lv, s18657c1f0, ABISELECT(16,4), "S18657C1.s18657c1f0");
    test_class_info(&lv, &cd_S18657C1);
    dp->~S18657C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18657C1(Test_S18657C1, "S18657C1", ABISELECT(1840,1372));

#else // __cplusplus

extern void _ZN8S18657C1C1Ev();
extern void _ZN8S18657C1D1Ev();
Name_Map name_map_S18657C1[] = {
  NSPAIR(_ZN8S18657C1C1Ev),
  NSPAIR(_ZN8S18657C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18657C1[];
extern void _ZN8S18657C12v1Ev();
extern void _ZN8S18657C12v2Ev();
extern void _ZN8S18657C12v3Ev();
extern void _ZN8S18657C12v4Ev();
static  VTBL_ENTRY vtc_S18657C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18657C1[0]),
  (VTBL_ENTRY)&_ZN8S18657C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18657C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18657C1[];
extern  VTBL_ENTRY _ZTV8S18657C1[];
Class_Descriptor cd_S18657C1 = {  "S18657C1", // class name
  0,0,//no base classes
  &(vtc_S18657C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1840,1372), // object size
  NSPAIRA(_ZTI8S18657C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18657C1),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  S2283C4  {
  virtual  ~S2283C4(); // _ZN7S2283C4D1Ev
  virtual void  v4(); // _ZN7S2283C42v4Ev
  S2283C4(); // tgen
};
//SIG(-1 S2283C4) C1{ vd v1}


 S2283C4 ::~S2283C4(){ note_dtor("S2283C4", this);}
void  S2283C4 ::v4(){vfunc_called(this, "_ZN7S2283C42v4Ev");}
S2283C4 ::S2283C4(){ note_ctor("S2283C4", this);} // tgen

static void Test_S2283C4()
{
  extern Class_Descriptor cd_S2283C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2283C4, buf);
    S2283C4 *dp, &lv = *(dp=new (buf) S2283C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2283C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C4)");
    test_class_info(&lv, &cd_S2283C4);
    dp->~S2283C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C4(Test_S2283C4, "S2283C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2283C4C1Ev();
extern void _ZN7S2283C4D1Ev();
Name_Map name_map_S2283C4[] = {
  NSPAIR(_ZN7S2283C4C1Ev),
  NSPAIR(_ZN7S2283C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2283C4[];
extern void _ZN7S2283C4D1Ev();
extern void _ZN7S2283C4D0Ev();
extern void _ZN7S2283C42v4Ev();
static  VTBL_ENTRY vtc_S2283C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C4[0]),
  (VTBL_ENTRY)&_ZN7S2283C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
Class_Descriptor cd_S2283C4 = {  "S2283C4", // class name
  0,0,//no base classes
  &(vtc_S2283C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2283C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2283C4),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  S2283C3  : S2283C4 {
  char s2283c3f0;
  ::S18423C15_nt s2283c3f1;
  ::S18423C15_nt s2283c3f2;
  ::S18423C15_nt s2283c3f3;
  void *s2283c3f4;
  ::S18423C15_nt s2283c3f5;
  ::S18423C15_nt s2283c3f6;
  int s2283c3f7;
  void *s2283c3f8[3];
  virtual  ~S2283C3(); // _ZN7S2283C3D1Ev
  virtual void  v5(); // _ZN7S2283C32v5Ev
  virtual void  v6(); // _ZN7S2283C32v6Ev
  S2283C3(); // tgen
};
//SIG(-1 S2283C3) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S2283C3 ::~S2283C3(){ note_dtor("S2283C3", this);}
void  S2283C3 ::v5(){vfunc_called(this, "_ZN7S2283C32v5Ev");}
void  S2283C3 ::v6(){vfunc_called(this, "_ZN7S2283C32v6Ev");}
S2283C3 ::S2283C3(){ note_ctor("S2283C3", this);} // tgen

static void Test_S2283C3()
{
  extern Class_Descriptor cd_S2283C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S2283C3, buf);
    S2283C3 *dp, &lv = *(dp=new (buf) S2283C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S2283C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C3)");
    check_base_class_offset(lv, (S2283C4*), 0, "S2283C3");
    check_field_offset(lv, s2283c3f0, ABISELECT(8,4), "S2283C3.s2283c3f0");
    check_field_offset(lv, s2283c3f1, ABISELECT(16,8), "S2283C3.s2283c3f1");
    check_field_offset(lv, s2283c3f2, ABISELECT(32,20), "S2283C3.s2283c3f2");
    check_field_offset(lv, s2283c3f3, ABISELECT(48,32), "S2283C3.s2283c3f3");
    check_field_offset(lv, s2283c3f4, ABISELECT(64,44), "S2283C3.s2283c3f4");
    check_field_offset(lv, s2283c3f5, ABISELECT(72,48), "S2283C3.s2283c3f5");
    check_field_offset(lv, s2283c3f6, ABISELECT(88,60), "S2283C3.s2283c3f6");
    check_field_offset(lv, s2283c3f7, ABISELECT(104,72), "S2283C3.s2283c3f7");
    check_field_offset(lv, s2283c3f8, ABISELECT(112,76), "S2283C3.s2283c3f8");
    test_class_info(&lv, &cd_S2283C3);
    dp->~S2283C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C3(Test_S2283C3, "S2283C3", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S2283C3C1Ev();
extern void _ZN7S2283C3D1Ev();
Name_Map name_map_S2283C3[] = {
  NSPAIR(_ZN7S2283C3C1Ev),
  NSPAIR(_ZN7S2283C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
static Base_Class bases_S2283C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2283C3[];
extern void _ZN7S2283C3D1Ev();
extern void _ZN7S2283C3D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
static  VTBL_ENTRY vtc_S2283C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C3[0]),
  (VTBL_ENTRY)&_ZN7S2283C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
Class_Descriptor cd_S2283C3 = {  "S2283C3", // class name
  bases_S2283C3, 1,
  &(vtc_S2283C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S2283C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2283C2  : S2283C3 {
  ::S18423C15_nt s2283c2f0;
  ::S18423C15_nt s2283c2f1;
  ::S18423C15_nt s2283c2f2;
  ::S18423C15_nt s2283c2f3;
  ::S18423C15_nt s2283c2f4;
  int s2283c2f5;
  ::S17556C28_nt s2283c2f6;
  virtual  ~S2283C2(); // _ZN7S2283C2D1Ev
  virtual void  v7(); // _ZN7S2283C22v7Ev
  virtual void  v8(); // _ZN7S2283C22v8Ev
  virtual void  v9(); // _ZN7S2283C22v9Ev
  virtual void  v10(); // _ZN7S2283C23v10Ev
  virtual void  v11(); // _ZN7S2283C23v11Ev
  S2283C2(); // tgen
};
//SIG(-1 S2283C2) C1{ BC2{ BC3{ vd v6} vd v7 v8 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 v2 v3 v4 v5 FC4 FC4 FC4 FC4 FC4 Fi FC6{ m Fp[2]}}


 S2283C2 ::~S2283C2(){ note_dtor("S2283C2", this);}
void  S2283C2 ::v7(){vfunc_called(this, "_ZN7S2283C22v7Ev");}
void  S2283C2 ::v8(){vfunc_called(this, "_ZN7S2283C22v8Ev");}
void  S2283C2 ::v9(){vfunc_called(this, "_ZN7S2283C22v9Ev");}
void  S2283C2 ::v10(){vfunc_called(this, "_ZN7S2283C23v10Ev");}
void  S2283C2 ::v11(){vfunc_called(this, "_ZN7S2283C23v11Ev");}
S2283C2 ::S2283C2(){ note_ctor("S2283C2", this);} // tgen

static void Test_S2283C2()
{
  extern Class_Descriptor cd_S2283C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2283C2, buf);
    S2283C2 *dp, &lv = *(dp=new (buf) S2283C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2283C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C2)");
    check_base_class_offset(lv, (S2283C4*)(S2283C3*), 0, "S2283C2");
    check_base_class_offset(lv, (S2283C3*), 0, "S2283C2");
    check_field_offset(lv, s2283c2f0, ABISELECT(136,88), "S2283C2.s2283c2f0");
    check_field_offset(lv, s2283c2f1, ABISELECT(152,100), "S2283C2.s2283c2f1");
    check_field_offset(lv, s2283c2f2, ABISELECT(168,112), "S2283C2.s2283c2f2");
    check_field_offset(lv, s2283c2f3, ABISELECT(184,124), "S2283C2.s2283c2f3");
    check_field_offset(lv, s2283c2f4, ABISELECT(200,136), "S2283C2.s2283c2f4");
    check_field_offset(lv, s2283c2f5, ABISELECT(216,148), "S2283C2.s2283c2f5");
    check_field_offset(lv, s2283c2f6, ABISELECT(224,152), "S2283C2.s2283c2f6");
    test_class_info(&lv, &cd_S2283C2);
    dp->~S2283C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C2(Test_S2283C2, "S2283C2", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2283C2C1Ev();
extern void _ZN7S2283C2D1Ev();
Name_Map name_map_S2283C2[] = {
  NSPAIR(_ZN7S2283C2C1Ev),
  NSPAIR(_ZN7S2283C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
extern Class_Descriptor cd_S2283C3;
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
static Base_Class bases_S2283C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2283C2[];
extern void _ZN7S2283C2D1Ev();
extern void _ZN7S2283C2D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
extern void _ZN7S2283C22v7Ev();
extern void _ZN7S2283C22v8Ev();
extern void _ZN7S2283C22v9Ev();
extern void _ZN7S2283C23v10Ev();
extern void _ZN7S2283C23v11Ev();
static  VTBL_ENTRY vtc_S2283C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C2[0]),
  (VTBL_ENTRY)&_ZN7S2283C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2283C2[];
extern  VTBL_ENTRY _ZTV7S2283C2[];
Class_Descriptor cd_S2283C2 = {  "S2283C2", // class name
  bases_S2283C2, 2,
  &(vtc_S2283C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2283C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C2),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  S2283C1  : S2283C2 {
  char s2283c1f0[2];
  ::S18423C15_nt s2283c1f1;
  virtual  ~S2283C1(); // _ZN7S2283C1D1Ev
  virtual void  v1(); // _ZN7S2283C12v1Ev
  virtual void  v2(); // _ZN7S2283C12v2Ev
  virtual void  v3(); // _ZN7S2283C12v3Ev
  S2283C1(); // tgen
};
//SIG(1 S2283C1) C1{ BC2{ BC3{ BC4{ vd v4} vd v5 v6 Fc FC5{ m Fp Fi FC6{ m}} FC5 FC5 Fp FC5 FC5 Fi Fp[3]} vd v7 v8 v9 v10 v11 FC5 FC5 FC5 FC5 FC5 Fi FC7{ m Fp[2]}} vd v1 v2 v3 Fc[2] FC5}


 S2283C1 ::~S2283C1(){ note_dtor("S2283C1", this);}
void  S2283C1 ::v1(){vfunc_called(this, "_ZN7S2283C12v1Ev");}
void  S2283C1 ::v2(){vfunc_called(this, "_ZN7S2283C12v2Ev");}
void  S2283C1 ::v3(){vfunc_called(this, "_ZN7S2283C12v3Ev");}
S2283C1 ::S2283C1(){ note_ctor("S2283C1", this);} // tgen

static void Test_S2283C1()
{
  extern Class_Descriptor cd_S2283C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,45)];
    init_test(&cd_S2283C1, buf);
    S2283C1 *dp, &lv = *(dp=new (buf) S2283C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,176), "sizeof(S2283C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2283C1)");
    check_base_class_offset(lv, (S2283C4*)(S2283C3*)(S2283C2*), 0, "S2283C1");
    check_base_class_offset(lv, (S2283C3*)(S2283C2*), 0, "S2283C1");
    check_base_class_offset(lv, (S2283C2*), 0, "S2283C1");
    check_field_offset(lv, s2283c1f0, ABISELECT(240,160), "S2283C1.s2283c1f0");
    check_field_offset(lv, s2283c1f1, ABISELECT(248,164), "S2283C1.s2283c1f1");
    test_class_info(&lv, &cd_S2283C1);
    dp->~S2283C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2283C1(Test_S2283C1, "S2283C1", ABISELECT(264,176));

#else // __cplusplus

extern void _ZN7S2283C1C1Ev();
extern void _ZN7S2283C1D1Ev();
Name_Map name_map_S2283C1[] = {
  NSPAIR(_ZN7S2283C1C1Ev),
  NSPAIR(_ZN7S2283C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2283C4;
extern VTBL_ENTRY _ZTI7S2283C4[];
extern  VTBL_ENTRY _ZTV7S2283C4[];
extern Class_Descriptor cd_S2283C3;
extern VTBL_ENTRY _ZTI7S2283C3[];
extern  VTBL_ENTRY _ZTV7S2283C3[];
extern Class_Descriptor cd_S2283C2;
extern VTBL_ENTRY _ZTI7S2283C2[];
extern  VTBL_ENTRY _ZTV7S2283C2[];
static Base_Class bases_S2283C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2283C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2283C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2283C1[];
extern void _ZN7S2283C1D1Ev();
extern void _ZN7S2283C1D0Ev();
extern void _ZN7S2283C42v4Ev();
extern void _ZN7S2283C32v5Ev();
extern void _ZN7S2283C32v6Ev();
extern void _ZN7S2283C22v7Ev();
extern void _ZN7S2283C22v8Ev();
extern void _ZN7S2283C22v9Ev();
extern void _ZN7S2283C23v10Ev();
extern void _ZN7S2283C23v11Ev();
extern void _ZN7S2283C12v1Ev();
extern void _ZN7S2283C12v2Ev();
extern void _ZN7S2283C12v3Ev();
static  VTBL_ENTRY vtc_S2283C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2283C1[0]),
  (VTBL_ENTRY)&_ZN7S2283C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2283C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2283C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2283C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2283C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2283C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2283C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2283C1[];
extern  VTBL_ENTRY _ZTV7S2283C1[];
Class_Descriptor cd_S2283C1 = {  "S2283C1", // class name
  bases_S2283C1, 3,
  &(vtc_S2283C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,176), // object size
  NSPAIRA(_ZTI7S2283C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2283C1),15, //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  S6328C3_nt  {
  int s6328c3f0;
  char s6328c3f1;
};
//SIG(-1 S6328C3_nt) C1{ Fi Fc}



//skip512 S6328C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C5  : S7856C24 {
  virtual  ~S6328C5(); // _ZN7S6328C5D1Ev
  virtual void  v2(); // _ZN7S6328C52v2Ev
  S6328C5(); // tgen
};
//SIG(-1 S6328C5) C1{ BC2{ m} vd v1}


 S6328C5 ::~S6328C5(){ note_dtor("S6328C5", this);}
void  S6328C5 ::v2(){vfunc_called(this, "_ZN7S6328C52v2Ev");}
S6328C5 ::S6328C5(){ note_ctor("S6328C5", this);} // tgen

static void Test_S6328C5()
{
  extern Class_Descriptor cd_S6328C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6328C5, buf);
    S6328C5 *dp, &lv = *(dp=new (buf) S6328C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6328C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C5)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6328C5");
    test_class_info(&lv, &cd_S6328C5);
    dp->~S6328C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C5(Test_S6328C5, "S6328C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6328C5C1Ev();
extern void _ZN7S6328C5D1Ev();
Name_Map name_map_S6328C5[] = {
  NSPAIR(_ZN7S6328C5C1Ev),
  NSPAIR(_ZN7S6328C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6328C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6328C5[];
extern void _ZN7S6328C5D1Ev();
extern void _ZN7S6328C5D0Ev();
extern void _ZN7S6328C52v2Ev();
static  VTBL_ENTRY vtc_S6328C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C5[0]),
  (VTBL_ENTRY)&_ZN7S6328C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
};
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
Class_Descriptor cd_S6328C5 = {  "S6328C5", // class name
  bases_S6328C5, 1,
  &(vtc_S6328C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6328C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C5),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  S6328C4  : S6328C5 {
  int s6328c4f0[3];
  void *s6328c4f1;
  virtual  ~S6328C4(); // _ZN7S6328C4D1Ev
  virtual void  v1(); // _ZN7S6328C42v1Ev
  S6328C4(); // tgen
};
//SIG(-1 S6328C4) C1{ BC2{ BC3{ m} vd v2} vd v1 Fi[3] Fp}


 S6328C4 ::~S6328C4(){ note_dtor("S6328C4", this);}
void  S6328C4 ::v1(){vfunc_called(this, "_ZN7S6328C42v1Ev");}
S6328C4 ::S6328C4(){ note_ctor("S6328C4", this);} // tgen

static void Test_S6328C4()
{
  extern Class_Descriptor cd_S6328C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6328C4, buf);
    S6328C4 *dp, &lv = *(dp=new (buf) S6328C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6328C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C4)");
    check_base_class_offset(lv, (S7856C24*)(S6328C5*), 0, "S6328C4");
    check_base_class_offset(lv, (S6328C5*), 0, "S6328C4");
    check_field_offset(lv, s6328c4f0, ABISELECT(8,4), "S6328C4.s6328c4f0");
    check_field_offset(lv, s6328c4f1, ABISELECT(24,16), "S6328C4.s6328c4f1");
    test_class_info(&lv, &cd_S6328C4);
    dp->~S6328C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C4(Test_S6328C4, "S6328C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6328C4C1Ev();
extern void _ZN7S6328C4D1Ev();
Name_Map name_map_S6328C4[] = {
  NSPAIR(_ZN7S6328C4C1Ev),
  NSPAIR(_ZN7S6328C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
static Base_Class bases_S6328C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6328C4[];
extern void _ZN7S6328C4D1Ev();
extern void _ZN7S6328C4D0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN7S6328C42v1Ev();
static  VTBL_ENTRY vtc_S6328C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C4[0]),
  (VTBL_ENTRY)&_ZN7S6328C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN7S6328C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S6328C4[];
extern  VTBL_ENTRY _ZTV7S6328C4[];
Class_Descriptor cd_S6328C4 = {  "S6328C4", // class name
  bases_S6328C4, 2,
  &(vtc_S6328C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6328C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C4),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  S6328C7_nt  : S6328C5 {
  int s6328c7f0[2];
  void *s6328c7f1[3];
  virtual  ~S6328C7_nt(); // _ZN10S6328C7_ntD1Ev
  virtual void  v4(); // _ZN10S6328C7_nt2v4Ev
  S6328C7_nt(); // tgen
};
//SIG(-1 S6328C7_nt) C1{ BC2{ BC3{ m} vd v2} vd v1 Fi[2] Fp[3]}


 S6328C7_nt ::~S6328C7_nt(){ note_dtor("S6328C7_nt", this);}
void  S6328C7_nt ::v4(){vfunc_called(this, "_ZN10S6328C7_nt2v4Ev");}
S6328C7_nt ::S6328C7_nt(){ note_ctor("S6328C7_nt", this);} // tgen

//skip512 S6328C7_nt

#else // __cplusplus

extern void _ZN10S6328C7_ntC1Ev();
extern void _ZN10S6328C7_ntD1Ev();
Name_Map name_map_S6328C7_nt[] = {
  NSPAIR(_ZN10S6328C7_ntC1Ev),
  NSPAIR(_ZN10S6328C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
static Base_Class bases_S6328C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S6328C7_nt[];
extern void _ZN10S6328C7_ntD1Ev();
extern void _ZN10S6328C7_ntD0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN10S6328C7_nt2v4Ev();
static  VTBL_ENTRY vtc_S6328C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6328C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6328C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S6328C7_nt[];
VTBL_ENTRY *P__ZTI10S6328C7_nt = _ZTI10S6328C7_nt; 
extern  VTBL_ENTRY _ZTV10S6328C7_nt[];
Class_Descriptor cd_S6328C7_nt = {  "S6328C7_nt", // class name
  bases_S6328C7_nt, 2,
  &(vtc_S6328C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI10S6328C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6328C7_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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6328C6  : S6328C7_nt {
  virtual  ~S6328C6(); // _ZN7S6328C6D1Ev
  virtual void  v3(); // _ZN7S6328C62v3Ev
  S6328C6(); // tgen
};
//SIG(-1 S6328C6) C1{ BC2{ BC3{ BC4{ m} vd v2} vd v3 Fi[2] Fp[3]} vd v1}


 S6328C6 ::~S6328C6(){ note_dtor("S6328C6", this);}
void  S6328C6 ::v3(){vfunc_called(this, "_ZN7S6328C62v3Ev");}
S6328C6 ::S6328C6(){ note_ctor("S6328C6", this);} // tgen

static void Test_S6328C6()
{
  extern Class_Descriptor cd_S6328C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6328C6, buf);
    S6328C6 *dp, &lv = *(dp=new (buf) S6328C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6328C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C6)");
    check_base_class_offset(lv, (S7856C24*)(S6328C5*)(S6328C7_nt*), 0, "S6328C6");
    check_base_class_offset(lv, (S6328C5*)(S6328C7_nt*), 0, "S6328C6");
    check_base_class_offset(lv, (S6328C7_nt*), 0, "S6328C6");
    test_class_info(&lv, &cd_S6328C6);
    dp->~S6328C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C6(Test_S6328C6, "S6328C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6328C6C1Ev();
extern void _ZN7S6328C6D1Ev();
Name_Map name_map_S6328C6[] = {
  NSPAIR(_ZN7S6328C6C1Ev),
  NSPAIR(_ZN7S6328C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S6328C5;
extern VTBL_ENTRY _ZTI7S6328C5[];
extern  VTBL_ENTRY _ZTV7S6328C5[];
extern Class_Descriptor cd_S6328C7_nt;
extern VTBL_ENTRY _ZTI10S6328C7_nt[];
extern  VTBL_ENTRY _ZTV10S6328C7_nt[];
static Base_Class bases_S6328C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6328C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6328C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6328C6[];
extern void _ZN7S6328C6D1Ev();
extern void _ZN7S6328C6D0Ev();
extern void _ZN7S6328C52v2Ev();
extern void _ZN10S6328C7_nt2v4Ev();
extern void _ZN7S6328C62v3Ev();
static  VTBL_ENTRY vtc_S6328C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C6[0]),
  (VTBL_ENTRY)&_ZN7S6328C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6328C52v2Ev,
  (VTBL_ENTRY)&_ZN10S6328C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S6328C62v3Ev,
};
extern VTBL_ENTRY _ZTI7S6328C6[];
extern  VTBL_ENTRY _ZTV7S6328C6[];
Class_Descriptor cd_S6328C6 = {  "S6328C6", // class name
  bases_S6328C6, 3,
  &(vtc_S6328C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6328C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C6),7, //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  S6328C1  : S7856C24 {
  void *s6328c1f0[3];
  int s6328c1f1[2];
  char s6328c1f2[3];
  int s6328c1f3[4];
  ::S6328C3_nt s6328c1f4;
  void *s6328c1f5;
  short s6328c1f6[100];
  int s6328c1f7[3];
  char s6328c1f8;
  int s6328c1f9[2];
  ::S6328C4 s6328c1f10;
  int s6328c1f11[5];
  ::S6328C6 s6328c1f12;
  ::S6328C6 s6328c1f13;
  int s6328c1f14;
  virtual  ~S6328C1(); // _ZN7S6328C1D1Ev
  S6328C1(); // tgen
};
//SIG(1 S6328C1) C1{ BC2{ m} vd Fp[3] Fi[2] Fc[3] Fi[4] FC3{ Fi Fc} Fp Fs[100] Fi[3] Fc Fi[2] FC4{ BC5{ BC2 vd v2} vd v1 Fi[3] Fp} Fi[5] FC6{ BC7{ BC5 vd v4 Fi[2] Fp[3]} vd v3} FC6 Fi}


 S6328C1 ::~S6328C1(){ note_dtor("S6328C1", this);}
S6328C1 ::S6328C1(){ note_ctor("S6328C1", this);} // tgen

static void Test_S6328C1()
{
  extern Class_Descriptor cd_S6328C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(57,94)];
    init_test(&cd_S6328C1, buf);
    S6328C1 *dp, &lv = *(dp=new (buf) S6328C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,372), "sizeof(S6328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6328C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6328C1");
    check_field_offset(lv, s6328c1f0, ABISELECT(8,4), "S6328C1.s6328c1f0");
    check_field_offset(lv, s6328c1f1, ABISELECT(32,16), "S6328C1.s6328c1f1");
    check_field_offset(lv, s6328c1f2, ABISELECT(40,24), "S6328C1.s6328c1f2");
    check_field_offset(lv, s6328c1f3, ABISELECT(44,28), "S6328C1.s6328c1f3");
    check_field_offset(lv, s6328c1f4, ABISELECT(60,44), "S6328C1.s6328c1f4");
    check_field_offset(lv, s6328c1f5, ABISELECT(72,52), "S6328C1.s6328c1f5");
    check_field_offset(lv, s6328c1f6, ABISELECT(80,56), "S6328C1.s6328c1f6");
    check_field_offset(lv, s6328c1f7, ABISELECT(280,256), "S6328C1.s6328c1f7");
    check_field_offset(lv, s6328c1f8, ABISELECT(292,268), "S6328C1.s6328c1f8");
    check_field_offset(lv, s6328c1f9, ABISELECT(296,272), "S6328C1.s6328c1f9");
    check_field_offset(lv, s6328c1f10, ABISELECT(304,280), "S6328C1.s6328c1f10");
    check_field_offset(lv, s6328c1f11, ABISELECT(336,300), "S6328C1.s6328c1f11");
    check_field_offset(lv, s6328c1f12, ABISELECT(360,320), "S6328C1.s6328c1f12");
    check_field_offset(lv, s6328c1f13, ABISELECT(400,344), "S6328C1.s6328c1f13");
    check_field_offset(lv, s6328c1f14, ABISELECT(440,368), "S6328C1.s6328c1f14");
    test_class_info(&lv, &cd_S6328C1);
    dp->~S6328C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6328C1(Test_S6328C1, "S6328C1", ABISELECT(448,372));

#else // __cplusplus

extern void _ZN7S6328C1C1Ev();
extern void _ZN7S6328C1D1Ev();
Name_Map name_map_S6328C1[] = {
  NSPAIR(_ZN7S6328C1C1Ev),
  NSPAIR(_ZN7S6328C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6328C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6328C1[];
extern void _ZN7S6328C1D1Ev();
extern void _ZN7S6328C1D0Ev();
static  VTBL_ENTRY vtc_S6328C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6328C1[0]),
  (VTBL_ENTRY)&_ZN7S6328C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6328C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6328C1[];
extern  VTBL_ENTRY _ZTV7S6328C1[];
Class_Descriptor cd_S6328C1 = {  "S6328C1", // class name
  bases_S6328C1, 1,
  &(vtc_S6328C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(448,372), // object size
  NSPAIRA(_ZTI7S6328C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6328C1),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  S5364C3  {
  char s5364c3f0;
  int s5364c3f1;
  virtual  ~S5364C3(); // _ZN7S5364C3D1Ev
  virtual void  v7(); // _ZN7S5364C32v7Ev
  S5364C3(); // tgen
};
//SIG(-1 S5364C3) C1{ vd v1 Fc Fi}


 S5364C3 ::~S5364C3(){ note_dtor("S5364C3", this);}
void  S5364C3 ::v7(){vfunc_called(this, "_ZN7S5364C32v7Ev");}
S5364C3 ::S5364C3(){ note_ctor("S5364C3", this);} // tgen

static void Test_S5364C3()
{
  extern Class_Descriptor cd_S5364C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5364C3, buf);
    S5364C3 *dp, &lv = *(dp=new (buf) S5364C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5364C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C3)");
    check_field_offset(lv, s5364c3f0, ABISELECT(8,4), "S5364C3.s5364c3f0");
    check_field_offset(lv, s5364c3f1, ABISELECT(12,8), "S5364C3.s5364c3f1");
    test_class_info(&lv, &cd_S5364C3);
    dp->~S5364C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C3(Test_S5364C3, "S5364C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5364C3C1Ev();
extern void _ZN7S5364C3D1Ev();
Name_Map name_map_S5364C3[] = {
  NSPAIR(_ZN7S5364C3C1Ev),
  NSPAIR(_ZN7S5364C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5364C3[];
extern void _ZN7S5364C3D1Ev();
extern void _ZN7S5364C3D0Ev();
extern void _ZN7S5364C32v7Ev();
static  VTBL_ENTRY vtc_S5364C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C3[0]),
  (VTBL_ENTRY)&_ZN7S5364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
Class_Descriptor cd_S5364C3 = {  "S5364C3", // class name
  0,0,//no base classes
  &(vtc_S5364C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5364C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5364C3),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  S5364C2  : S5364C3 {
  int s5364c2f0[2];
  char s5364c2f1;
  ::S2436C5_nt s5364c2f2;
  ::S2436C6 s5364c2f3;
  virtual  ~S5364C2(); // _ZN7S5364C2D1Ev
  virtual void  v8(); // _ZN7S5364C22v8Ev
  S5364C2(); // tgen
};
//SIG(-1 S5364C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S5364C2 ::~S5364C2(){ note_dtor("S5364C2", this);}
void  S5364C2 ::v8(){vfunc_called(this, "_ZN7S5364C22v8Ev");}
S5364C2 ::S5364C2(){ note_ctor("S5364C2", this);} // tgen

static void Test_S5364C2()
{
  extern Class_Descriptor cd_S5364C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S5364C2, buf);
    S5364C2 *dp, &lv = *(dp=new (buf) S5364C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S5364C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C2)");
    check_base_class_offset(lv, (S5364C3*), 0, "S5364C2");
    check_field_offset(lv, s5364c2f0, ABISELECT(16,12), "S5364C2.s5364c2f0");
    check_field_offset(lv, s5364c2f1, ABISELECT(24,20), "S5364C2.s5364c2f1");
    check_field_offset(lv, s5364c2f2, ABISELECT(32,24), "S5364C2.s5364c2f2");
    check_field_offset(lv, s5364c2f3, ABISELECT(40,28), "S5364C2.s5364c2f3");
    test_class_info(&lv, &cd_S5364C2);
    dp->~S5364C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C2(Test_S5364C2, "S5364C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S5364C2C1Ev();
extern void _ZN7S5364C2D1Ev();
Name_Map name_map_S5364C2[] = {
  NSPAIR(_ZN7S5364C2C1Ev),
  NSPAIR(_ZN7S5364C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5364C3;
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
static Base_Class bases_S5364C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S5364C2[];
extern void _ZN7S5364C2D1Ev();
extern void _ZN7S5364C2D0Ev();
extern void _ZN7S5364C32v7Ev();
extern void _ZN7S5364C22v8Ev();
static  VTBL_ENTRY vtc_S5364C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C2[0]),
  (VTBL_ENTRY)&_ZN7S5364C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5364C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S5364C2[];
extern  VTBL_ENTRY _ZTV7S5364C2[];
Class_Descriptor cd_S5364C2 = {  "S5364C2", // class name
  bases_S5364C2, 1,
  &(vtc_S5364C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S5364C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5364C2),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  S5364C6_nt  {
  virtual  ~S5364C6_nt(); // _ZN10S5364C6_ntD1Ev
  virtual void  v9(); // _ZN10S5364C6_nt2v9Ev
  virtual void  v10(); // _ZN10S5364C6_nt3v10Ev
  virtual void  v11(); // _ZN10S5364C6_nt3v11Ev
  virtual void  v12(); // _ZN10S5364C6_nt3v12Ev
  virtual void  v13(); // _ZN10S5364C6_nt3v13Ev
  S5364C6_nt(); // tgen
};
//SIG(-1 S5364C6_nt) C1{ vd v1 v2 v3 v4 v5}


 S5364C6_nt ::~S5364C6_nt(){ note_dtor("S5364C6_nt", this);}
void  S5364C6_nt ::v9(){vfunc_called(this, "_ZN10S5364C6_nt2v9Ev");}
void  S5364C6_nt ::v10(){vfunc_called(this, "_ZN10S5364C6_nt3v10Ev");}
void  S5364C6_nt ::v11(){vfunc_called(this, "_ZN10S5364C6_nt3v11Ev");}
void  S5364C6_nt ::v12(){vfunc_called(this, "_ZN10S5364C6_nt3v12Ev");}
void  S5364C6_nt ::v13(){vfunc_called(this, "_ZN10S5364C6_nt3v13Ev");}
S5364C6_nt ::S5364C6_nt(){ note_ctor("S5364C6_nt", this);} // tgen

//skip512 S5364C6_nt

#else // __cplusplus

extern void _ZN10S5364C6_ntC1Ev();
extern void _ZN10S5364C6_ntD1Ev();
Name_Map name_map_S5364C6_nt[] = {
  NSPAIR(_ZN10S5364C6_ntC1Ev),
  NSPAIR(_ZN10S5364C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
extern void _ZN10S5364C6_ntD1Ev();
extern void _ZN10S5364C6_ntD0Ev();
extern void _ZN10S5364C6_nt2v9Ev();
extern void _ZN10S5364C6_nt3v10Ev();
extern void _ZN10S5364C6_nt3v11Ev();
extern void _ZN10S5364C6_nt3v12Ev();
extern void _ZN10S5364C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S5364C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5364C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S5364C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
VTBL_ENTRY *P__ZTI10S5364C6_nt = _ZTI10S5364C6_nt; 
extern  VTBL_ENTRY _ZTV10S5364C6_nt[];
Class_Descriptor cd_S5364C6_nt = {  "S5364C6_nt", // class name
  0,0,//no base classes
  &(vtc_S5364C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5364C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5364C6_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  S5364C1  : S5364C2 , S5364C6_nt {
  char s5364c1f0;
  void *s5364c1f1[5];
  char s5364c1f2;
  int s5364c1f3[4];
  void *s5364c1f4[2];
  int s5364c1f5[2];
  void *s5364c1f6;
  int s5364c1f7;
  virtual  ~S5364C1(); // _ZN7S5364C1D1Ev
  virtual void  v1(); // _ZN7S5364C12v1Ev
  virtual void  v2(); // _ZN7S5364C12v2Ev
  virtual void  v3(); // _ZN7S5364C12v3Ev
  virtual void  v4(); // _ZN7S5364C12v4Ev
  virtual void  v5(); // _ZN7S5364C12v5Ev
  virtual void  v6(); // _ZN7S5364C12v6Ev
  S5364C1(); // tgen
};
//SIG(1 S5364C1) C1{ BC2{ BC3{ vd v7 Fc Fi} vd v8 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v16 Fc Fi} vd v14 v15 FL[4]}} BC7{ vd v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 v6 Fc Fp[5] Fc Fi[4] Fp[2] Fi[2] Fp Fi}


 S5364C1 ::~S5364C1(){ note_dtor("S5364C1", this);}
void  S5364C1 ::v1(){vfunc_called(this, "_ZN7S5364C12v1Ev");}
void  S5364C1 ::v2(){vfunc_called(this, "_ZN7S5364C12v2Ev");}
void  S5364C1 ::v3(){vfunc_called(this, "_ZN7S5364C12v3Ev");}
void  S5364C1 ::v4(){vfunc_called(this, "_ZN7S5364C12v4Ev");}
void  S5364C1 ::v5(){vfunc_called(this, "_ZN7S5364C12v5Ev");}
void  S5364C1 ::v6(){vfunc_called(this, "_ZN7S5364C12v6Ev");}
S5364C1 ::S5364C1(){ note_ctor("S5364C1", this);} // tgen

static void Test_S5364C1()
{
  extern Class_Descriptor cd_S5364C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,37)];
    init_test(&cd_S5364C1, buf);
    S5364C1 *dp, &lv = *(dp=new (buf) S5364C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,144), "sizeof(S5364C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5364C1)");
    check_base_class_offset(lv, (S5364C3*)(S5364C2*), 0, "S5364C1");
    check_base_class_offset(lv, (S5364C2*), 0, "S5364C1");
    check_base_class_offset(lv, (S5364C6_nt*), ABISELECT(88,72), "S5364C1");
    check_field_offset(lv, s5364c1f0, ABISELECT(96,76), "S5364C1.s5364c1f0");
    check_field_offset(lv, s5364c1f1, ABISELECT(104,80), "S5364C1.s5364c1f1");
    check_field_offset(lv, s5364c1f2, ABISELECT(144,100), "S5364C1.s5364c1f2");
    check_field_offset(lv, s5364c1f3, ABISELECT(148,104), "S5364C1.s5364c1f3");
    check_field_offset(lv, s5364c1f4, ABISELECT(168,120), "S5364C1.s5364c1f4");
    check_field_offset(lv, s5364c1f5, ABISELECT(184,128), "S5364C1.s5364c1f5");
    check_field_offset(lv, s5364c1f6, ABISELECT(192,136), "S5364C1.s5364c1f6");
    check_field_offset(lv, s5364c1f7, ABISELECT(200,140), "S5364C1.s5364c1f7");
    test_class_info(&lv, &cd_S5364C1);
    dp->~S5364C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5364C1(Test_S5364C1, "S5364C1", ABISELECT(208,144));

#else // __cplusplus

extern void _ZN7S5364C1C1Ev();
extern void _ZN7S5364C1D1Ev();
Name_Map name_map_S5364C1[] = {
  NSPAIR(_ZN7S5364C1C1Ev),
  NSPAIR(_ZN7S5364C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5364C3;
extern VTBL_ENTRY _ZTI7S5364C3[];
extern  VTBL_ENTRY _ZTV7S5364C3[];
extern Class_Descriptor cd_S5364C2;
extern VTBL_ENTRY _ZTI7S5364C2[];
extern  VTBL_ENTRY _ZTV7S5364C2[];
extern Class_Descriptor cd_S5364C6_nt;
extern VTBL_ENTRY _ZTI10S5364C6_nt[];
extern  VTBL_ENTRY _ZTV10S5364C6_nt[];
static Base_Class bases_S5364C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5364C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5364C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5364C6_nt,    ABISELECT(88,72), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5364C1[];
extern void _ZN7S5364C1D1Ev();
extern void _ZN7S5364C1D0Ev();
extern void _ZN7S5364C32v7Ev();
extern void _ZN7S5364C22v8Ev();
extern void _ZN7S5364C12v1Ev();
extern void _ZN7S5364C12v2Ev();
extern void _ZN7S5364C12v3Ev();
extern void _ZN7S5364C12v4Ev();
extern void _ZN7S5364C12v5Ev();
extern void _ZN7S5364C12v6Ev();
extern void ABISELECT(_ZThn88_N7S5364C1D1Ev,_ZThn72_N7S5364C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S5364C1D0Ev,_ZThn72_N7S5364C1D0Ev)();
extern void _ZN10S5364C6_nt2v9Ev();
extern void _ZN10S5364C6_nt3v10Ev();
extern void _ZN10S5364C6_nt3v11Ev();
extern void _ZN10S5364C6_nt3v12Ev();
extern void _ZN10S5364C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S5364C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5364C1[0]),
  (VTBL_ENTRY)&_ZN7S5364C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5364C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5364C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5364C22v8Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5364C12v6Ev,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S5364C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S5364C1D1Ev,_ZThn72_N7S5364C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S5364C1D0Ev,_ZThn72_N7S5364C1D0Ev),
  (VTBL_ENTRY)&_ZN10S5364C6_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5364C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI7S5364C1[];
extern  VTBL_ENTRY _ZTV7S5364C1[];
Class_Descriptor cd_S5364C1 = {  "S5364C1", // class name
  bases_S5364C1, 3,
  &(vtc_S5364C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,144), // object size
  NSPAIRA(_ZTI7S5364C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5364C1),21, //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  S2444C4  {
  virtual  ~S2444C4(); // _ZN7S2444C4D1Ev
  virtual void  v9(); // _ZN7S2444C42v9Ev
  virtual void  v10(); // _ZN7S2444C43v10Ev
  virtual void  v11(); // _ZN7S2444C43v11Ev
  S2444C4(); // tgen
};
//SIG(-1 S2444C4) C1{ vd v1 v2 v3}


 S2444C4 ::~S2444C4(){ note_dtor("S2444C4", this);}
void  S2444C4 ::v9(){vfunc_called(this, "_ZN7S2444C42v9Ev");}
void  S2444C4 ::v10(){vfunc_called(this, "_ZN7S2444C43v10Ev");}
void  S2444C4 ::v11(){vfunc_called(this, "_ZN7S2444C43v11Ev");}
S2444C4 ::S2444C4(){ note_ctor("S2444C4", this);} // tgen

static void Test_S2444C4()
{
  extern Class_Descriptor cd_S2444C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2444C4, buf);
    S2444C4 *dp, &lv = *(dp=new (buf) S2444C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2444C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C4)");
    test_class_info(&lv, &cd_S2444C4);
    dp->~S2444C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C4(Test_S2444C4, "S2444C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2444C4C1Ev();
extern void _ZN7S2444C4D1Ev();
Name_Map name_map_S2444C4[] = {
  NSPAIR(_ZN7S2444C4C1Ev),
  NSPAIR(_ZN7S2444C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2444C4[];
extern void _ZN7S2444C4D1Ev();
extern void _ZN7S2444C4D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
static  VTBL_ENTRY vtc_S2444C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C4[0]),
  (VTBL_ENTRY)&_ZN7S2444C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
Class_Descriptor cd_S2444C4 = {  "S2444C4", // class name
  0,0,//no base classes
  &(vtc_S2444C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2444C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2444C4),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  S2444C3  : S2444C4 {
  virtual  ~S2444C3(); // _ZN7S2444C3D1Ev
  virtual void  v12(); // _ZN7S2444C33v12Ev
  virtual void  v13(); // _ZN7S2444C33v13Ev
  virtual void  v14(); // _ZN7S2444C33v14Ev
  virtual void  v15(); // _ZN7S2444C33v15Ev
  virtual void  v16(); // _ZN7S2444C33v16Ev
  virtual void  v17(); // _ZN7S2444C33v17Ev
  virtual void  v18(); // _ZN7S2444C33v18Ev
  virtual void  v19(); // _ZN7S2444C33v19Ev
  S2444C3(); // tgen
};
//SIG(-1 S2444C3) C1{ BC2{ vd v9 v10 v11} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S2444C3 ::~S2444C3(){ note_dtor("S2444C3", this);}
void  S2444C3 ::v12(){vfunc_called(this, "_ZN7S2444C33v12Ev");}
void  S2444C3 ::v13(){vfunc_called(this, "_ZN7S2444C33v13Ev");}
void  S2444C3 ::v14(){vfunc_called(this, "_ZN7S2444C33v14Ev");}
void  S2444C3 ::v15(){vfunc_called(this, "_ZN7S2444C33v15Ev");}
void  S2444C3 ::v16(){vfunc_called(this, "_ZN7S2444C33v16Ev");}
void  S2444C3 ::v17(){vfunc_called(this, "_ZN7S2444C33v17Ev");}
void  S2444C3 ::v18(){vfunc_called(this, "_ZN7S2444C33v18Ev");}
void  S2444C3 ::v19(){vfunc_called(this, "_ZN7S2444C33v19Ev");}
S2444C3 ::S2444C3(){ note_ctor("S2444C3", this);} // tgen

static void Test_S2444C3()
{
  extern Class_Descriptor cd_S2444C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2444C3, buf);
    S2444C3 *dp, &lv = *(dp=new (buf) S2444C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2444C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C3)");
    check_base_class_offset(lv, (S2444C4*), 0, "S2444C3");
    test_class_info(&lv, &cd_S2444C3);
    dp->~S2444C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C3(Test_S2444C3, "S2444C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2444C3C1Ev();
extern void _ZN7S2444C3D1Ev();
Name_Map name_map_S2444C3[] = {
  NSPAIR(_ZN7S2444C3C1Ev),
  NSPAIR(_ZN7S2444C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
static Base_Class bases_S2444C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2444C3[];
extern void _ZN7S2444C3D1Ev();
extern void _ZN7S2444C3D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
static  VTBL_ENTRY vtc_S2444C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C3[0]),
  (VTBL_ENTRY)&_ZN7S2444C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
Class_Descriptor cd_S2444C3 = {  "S2444C3", // class name
  bases_S2444C3, 1,
  &(vtc_S2444C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2444C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C3),15, //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  S2444C2  : S2444C3 {
  ::S17556C15_nt s2444c2f0;
  ::S17556C3_nt s2444c2f1;
  char s2444c2f2;
  virtual  ~S2444C2(); // _ZN7S2444C2D1Ev
  virtual void  v20(); // _ZN7S2444C23v20Ev
  virtual void  v21(); // _ZN7S2444C23v21Ev
  virtual void  v22(); // _ZN7S2444C23v22Ev
  S2444C2(); // tgen
};
//SIG(-1 S2444C2) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S2444C2 ::~S2444C2(){ note_dtor("S2444C2", this);}
void  S2444C2 ::v20(){vfunc_called(this, "_ZN7S2444C23v20Ev");}
void  S2444C2 ::v21(){vfunc_called(this, "_ZN7S2444C23v21Ev");}
void  S2444C2 ::v22(){vfunc_called(this, "_ZN7S2444C23v22Ev");}
S2444C2 ::S2444C2(){ note_ctor("S2444C2", this);} // tgen

static void Test_S2444C2()
{
  extern Class_Descriptor cd_S2444C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2444C2, buf);
    S2444C2 *dp, &lv = *(dp=new (buf) S2444C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2444C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C2)");
    check_base_class_offset(lv, (S2444C4*)(S2444C3*), 0, "S2444C2");
    check_base_class_offset(lv, (S2444C3*), 0, "S2444C2");
    check_field_offset(lv, s2444c2f0, ABISELECT(8,4), "S2444C2.s2444c2f0");
    check_field_offset(lv, s2444c2f1, ABISELECT(32,20), "S2444C2.s2444c2f1");
    check_field_offset(lv, s2444c2f2, ABISELECT(64,52), "S2444C2.s2444c2f2");
    test_class_info(&lv, &cd_S2444C2);
    dp->~S2444C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C2(Test_S2444C2, "S2444C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2444C2C1Ev();
extern void _ZN7S2444C2D1Ev();
Name_Map name_map_S2444C2[] = {
  NSPAIR(_ZN7S2444C2C1Ev),
  NSPAIR(_ZN7S2444C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
extern Class_Descriptor cd_S2444C3;
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
static Base_Class bases_S2444C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2444C2[];
extern void _ZN7S2444C2D1Ev();
extern void _ZN7S2444C2D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
extern void _ZN7S2444C23v20Ev();
extern void _ZN7S2444C23v21Ev();
extern void _ZN7S2444C23v22Ev();
static  VTBL_ENTRY vtc_S2444C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C2[0]),
  (VTBL_ENTRY)&_ZN7S2444C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S2444C2[];
extern  VTBL_ENTRY _ZTV7S2444C2[];
Class_Descriptor cd_S2444C2 = {  "S2444C2", // class name
  bases_S2444C2, 2,
  &(vtc_S2444C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2444C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C2),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  S2444C1  : S2444C2 {
  int s2444c1f0;
  virtual  ~S2444C1(); // _ZN7S2444C1D1Ev
  virtual void  v1(); // _ZN7S2444C12v1Ev
  virtual void  v2(); // _ZN7S2444C12v2Ev
  virtual void  v3(); // _ZN7S2444C12v3Ev
  virtual void  v4(); // _ZN7S2444C12v4Ev
  virtual void  v5(); // _ZN7S2444C12v5Ev
  virtual void  v6(); // _ZN7S2444C12v6Ev
  virtual void  v7(); // _ZN7S2444C12v7Ev
  virtual void  v8(); // _ZN7S2444C12v8Ev
  S2444C1(); // tgen
};
//SIG(1 S2444C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11} vd v12 v13 v14 v15 v16 v17 v18 v19} vd v20 v21 v22 FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ FL[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi}


 S2444C1 ::~S2444C1(){ note_dtor("S2444C1", this);}
void  S2444C1 ::v1(){vfunc_called(this, "_ZN7S2444C12v1Ev");}
void  S2444C1 ::v2(){vfunc_called(this, "_ZN7S2444C12v2Ev");}
void  S2444C1 ::v3(){vfunc_called(this, "_ZN7S2444C12v3Ev");}
void  S2444C1 ::v4(){vfunc_called(this, "_ZN7S2444C12v4Ev");}
void  S2444C1 ::v5(){vfunc_called(this, "_ZN7S2444C12v5Ev");}
void  S2444C1 ::v6(){vfunc_called(this, "_ZN7S2444C12v6Ev");}
void  S2444C1 ::v7(){vfunc_called(this, "_ZN7S2444C12v7Ev");}
void  S2444C1 ::v8(){vfunc_called(this, "_ZN7S2444C12v8Ev");}
S2444C1 ::S2444C1(){ note_ctor("S2444C1", this);} // tgen

static void Test_S2444C1()
{
  extern Class_Descriptor cd_S2444C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S2444C1, buf);
    S2444C1 *dp, &lv = *(dp=new (buf) S2444C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S2444C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2444C1)");
    check_base_class_offset(lv, (S2444C4*)(S2444C3*)(S2444C2*), 0, "S2444C1");
    check_base_class_offset(lv, (S2444C3*)(S2444C2*), 0, "S2444C1");
    check_base_class_offset(lv, (S2444C2*), 0, "S2444C1");
    check_field_offset(lv, s2444c1f0, ABISELECT(68,56), "S2444C1.s2444c1f0");
    test_class_info(&lv, &cd_S2444C1);
    dp->~S2444C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2444C1(Test_S2444C1, "S2444C1", ABISELECT(72,60));

#else // __cplusplus

extern void _ZN7S2444C1C1Ev();
extern void _ZN7S2444C1D1Ev();
Name_Map name_map_S2444C1[] = {
  NSPAIR(_ZN7S2444C1C1Ev),
  NSPAIR(_ZN7S2444C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2444C4;
extern VTBL_ENTRY _ZTI7S2444C4[];
extern  VTBL_ENTRY _ZTV7S2444C4[];
extern Class_Descriptor cd_S2444C3;
extern VTBL_ENTRY _ZTI7S2444C3[];
extern  VTBL_ENTRY _ZTV7S2444C3[];
extern Class_Descriptor cd_S2444C2;
extern VTBL_ENTRY _ZTI7S2444C2[];
extern  VTBL_ENTRY _ZTV7S2444C2[];
static Base_Class bases_S2444C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2444C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2444C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2444C1[];
extern void _ZN7S2444C1D1Ev();
extern void _ZN7S2444C1D0Ev();
extern void _ZN7S2444C42v9Ev();
extern void _ZN7S2444C43v10Ev();
extern void _ZN7S2444C43v11Ev();
extern void _ZN7S2444C33v12Ev();
extern void _ZN7S2444C33v13Ev();
extern void _ZN7S2444C33v14Ev();
extern void _ZN7S2444C33v15Ev();
extern void _ZN7S2444C33v16Ev();
extern void _ZN7S2444C33v17Ev();
extern void _ZN7S2444C33v18Ev();
extern void _ZN7S2444C33v19Ev();
extern void _ZN7S2444C23v20Ev();
extern void _ZN7S2444C23v21Ev();
extern void _ZN7S2444C23v22Ev();
extern void _ZN7S2444C12v1Ev();
extern void _ZN7S2444C12v2Ev();
extern void _ZN7S2444C12v3Ev();
extern void _ZN7S2444C12v4Ev();
extern void _ZN7S2444C12v5Ev();
extern void _ZN7S2444C12v6Ev();
extern void _ZN7S2444C12v7Ev();
extern void _ZN7S2444C12v8Ev();
static  VTBL_ENTRY vtc_S2444C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2444C1[0]),
  (VTBL_ENTRY)&_ZN7S2444C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2444C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2444C42v9Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v10Ev,
  (VTBL_ENTRY)&_ZN7S2444C43v11Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S2444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2444C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2444C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2444C1[];
extern  VTBL_ENTRY _ZTV7S2444C1[];
Class_Descriptor cd_S2444C1 = {  "S2444C1", // class name
  bases_S2444C1, 3,
  &(vtc_S2444C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,60), // object size
  NSPAIRA(_ZTI7S2444C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2444C1),26, //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  S8590C2  {
  virtual  ~S8590C2(); // _ZN7S8590C2D1Ev
  virtual void  v13(); // _ZN7S8590C23v13Ev
  virtual void  v14(); // _ZN7S8590C23v14Ev
  virtual void  v15(); // _ZN7S8590C23v15Ev
  virtual void  v16(); // _ZN7S8590C23v16Ev
  virtual void  v17(); // _ZN7S8590C23v17Ev
  virtual void  v18(); // _ZN7S8590C23v18Ev
  virtual void  v19(); // _ZN7S8590C23v19Ev
  virtual void  v20(); // _ZN7S8590C23v20Ev
  virtual void  v21(); // _ZN7S8590C23v21Ev
  virtual void  v22(); // _ZN7S8590C23v22Ev
  virtual void  v23(); // _ZN7S8590C23v23Ev
  virtual void  v24(); // _ZN7S8590C23v24Ev
  S8590C2(); // tgen
};
//SIG(-1 S8590C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8590C2 ::~S8590C2(){ note_dtor("S8590C2", this);}
void  S8590C2 ::v13(){vfunc_called(this, "_ZN7S8590C23v13Ev");}
void  S8590C2 ::v14(){vfunc_called(this, "_ZN7S8590C23v14Ev");}
void  S8590C2 ::v15(){vfunc_called(this, "_ZN7S8590C23v15Ev");}
void  S8590C2 ::v16(){vfunc_called(this, "_ZN7S8590C23v16Ev");}
void  S8590C2 ::v17(){vfunc_called(this, "_ZN7S8590C23v17Ev");}
void  S8590C2 ::v18(){vfunc_called(this, "_ZN7S8590C23v18Ev");}
void  S8590C2 ::v19(){vfunc_called(this, "_ZN7S8590C23v19Ev");}
void  S8590C2 ::v20(){vfunc_called(this, "_ZN7S8590C23v20Ev");}
void  S8590C2 ::v21(){vfunc_called(this, "_ZN7S8590C23v21Ev");}
void  S8590C2 ::v22(){vfunc_called(this, "_ZN7S8590C23v22Ev");}
void  S8590C2 ::v23(){vfunc_called(this, "_ZN7S8590C23v23Ev");}
void  S8590C2 ::v24(){vfunc_called(this, "_ZN7S8590C23v24Ev");}
S8590C2 ::S8590C2(){ note_ctor("S8590C2", this);} // tgen

static void Test_S8590C2()
{
  extern Class_Descriptor cd_S8590C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8590C2, buf);
    S8590C2 *dp, &lv = *(dp=new (buf) S8590C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8590C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8590C2)");
    test_class_info(&lv, &cd_S8590C2);
    dp->~S8590C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8590C2(Test_S8590C2, "S8590C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8590C2C1Ev();
extern void _ZN7S8590C2D1Ev();
Name_Map name_map_S8590C2[] = {
  NSPAIR(_ZN7S8590C2C1Ev),
  NSPAIR(_ZN7S8590C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8590C2[];
extern void _ZN7S8590C2D1Ev();
extern void _ZN7S8590C2D0Ev();
extern void _ZN7S8590C23v13Ev();
extern void _ZN7S8590C23v14Ev();
extern void _ZN7S8590C23v15Ev();
extern void _ZN7S8590C23v16Ev();
extern void _ZN7S8590C23v17Ev();
extern void _ZN7S8590C23v18Ev();
extern void _ZN7S8590C23v19Ev();
extern void _ZN7S8590C23v20Ev();
extern void _ZN7S8590C23v21Ev();
extern void _ZN7S8590C23v22Ev();
extern void _ZN7S8590C23v23Ev();
extern void _ZN7S8590C23v24Ev();
static  VTBL_ENTRY vtc_S8590C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8590C2[0]),
  (VTBL_ENTRY)&_ZN7S8590C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8590C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8590C2[];
extern  VTBL_ENTRY _ZTV7S8590C2[];
Class_Descriptor cd_S8590C2 = {  "S8590C2", // class name
  0,0,//no base classes
  &(vtc_S8590C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8590C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8590C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8590C1  : S8590C2 {
  ::S17556C3_nt s8590c1f0;
  ::S2345C15_nt s8590c1f1;
  virtual  ~S8590C1(); // _ZN7S8590C1D1Ev
  virtual void  v1(); // _ZN7S8590C12v1Ev
  virtual void  v2(); // _ZN7S8590C12v2Ev
  virtual void  v3(); // _ZN7S8590C12v3Ev
  virtual void  v4(); // _ZN7S8590C12v4Ev
  virtual void  v5(); // _ZN7S8590C12v5Ev
  virtual void  v6(); // _ZN7S8590C12v6Ev
  virtual void  v7(); // _ZN7S8590C12v7Ev
  virtual void  v8(); // _ZN7S8590C12v8Ev
  virtual void  v9(); // _ZN7S8590C12v9Ev
  virtual void  v10(); // _ZN7S8590C13v10Ev
  virtual void  v11(); // _ZN7S8590C13v11Ev
  virtual void  v12(); // _ZN7S8590C13v12Ev
  S8590C1(); // tgen
};
//SIG(1 S8590C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FC4{ FL[4]}} FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}}


 S8590C1 ::~S8590C1(){ note_dtor("S8590C1", this);}
void  S8590C1 ::v1(){vfunc_called(this, "_ZN7S8590C12v1Ev");}
void  S8590C1 ::v2(){vfunc_called(this, "_ZN7S8590C12v2Ev");}
void  S8590C1 ::v3(){vfunc_called(this, "_ZN7S8590C12v3Ev");}
void  S8590C1 ::v4(){vfunc_called(this, "_ZN7S8590C12v4Ev");}
void  S8590C1 ::v5(){vfunc_called(this, "_ZN7S8590C12v5Ev");}
void  S8590C1 ::v6(){vfunc_called(this, "_ZN7S8590C12v6Ev");}
void  S8590C1 ::v7(){vfunc_called(this, "_ZN7S8590C12v7Ev");}
void  S8590C1 ::v8(){vfunc_called(this, "_ZN7S8590C12v8Ev");}
void  S8590C1 ::v9(){vfunc_called(this, "_ZN7S8590C12v9Ev");}
void  S8590C1 ::v10(){vfunc_called(this, "_ZN7S8590C13v10Ev");}
void  S8590C1 ::v11(){vfunc_called(this, "_ZN7S8590C13v11Ev");}
void  S8590C1 ::v12(){vfunc_called(this, "_ZN7S8590C13v12Ev");}
S8590C1 ::S8590C1(){ note_ctor("S8590C1", this);} // tgen

static void Test_S8590C1()
{
  extern Class_Descriptor cd_S8590C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S8590C1, buf);
    S8590C1 *dp, &lv = *(dp=new (buf) S8590C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S8590C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8590C1)");
    check_base_class_offset(lv, (S8590C2*), 0, "S8590C1");
    check_field_offset(lv, s8590c1f0, ABISELECT(8,4), "S8590C1.s8590c1f0");
    check_field_offset(lv, s8590c1f1, ABISELECT(40,36), "S8590C1.s8590c1f1");
    test_class_info(&lv, &cd_S8590C1);
    dp->~S8590C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8590C1(Test_S8590C1, "S8590C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S8590C1C1Ev();
extern void _ZN7S8590C1D1Ev();
Name_Map name_map_S8590C1[] = {
  NSPAIR(_ZN7S8590C1C1Ev),
  NSPAIR(_ZN7S8590C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8590C2;
extern VTBL_ENTRY _ZTI7S8590C2[];
extern  VTBL_ENTRY _ZTV7S8590C2[];
static Base_Class bases_S8590C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8590C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8590C1[];
extern void _ZN7S8590C1D1Ev();
extern void _ZN7S8590C1D0Ev();
extern void _ZN7S8590C23v13Ev();
extern void _ZN7S8590C23v14Ev();
extern void _ZN7S8590C23v15Ev();
extern void _ZN7S8590C23v16Ev();
extern void _ZN7S8590C23v17Ev();
extern void _ZN7S8590C23v18Ev();
extern void _ZN7S8590C23v19Ev();
extern void _ZN7S8590C23v20Ev();
extern void _ZN7S8590C23v21Ev();
extern void _ZN7S8590C23v22Ev();
extern void _ZN7S8590C23v23Ev();
extern void _ZN7S8590C23v24Ev();
extern void _ZN7S8590C12v1Ev();
extern void _ZN7S8590C12v2Ev();
extern void _ZN7S8590C12v3Ev();
extern void _ZN7S8590C12v4Ev();
extern void _ZN7S8590C12v5Ev();
extern void _ZN7S8590C12v6Ev();
extern void _ZN7S8590C12v7Ev();
extern void _ZN7S8590C12v8Ev();
extern void _ZN7S8590C12v9Ev();
extern void _ZN7S8590C13v10Ev();
extern void _ZN7S8590C13v11Ev();
extern void _ZN7S8590C13v12Ev();
static  VTBL_ENTRY vtc_S8590C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8590C1[0]),
  (VTBL_ENTRY)&_ZN7S8590C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8590C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8590C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8590C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8590C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8590C1[];
extern  VTBL_ENTRY _ZTV7S8590C1[];
Class_Descriptor cd_S8590C1 = {  "S8590C1", // class name
  bases_S8590C1, 1,
  &(vtc_S8590C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S8590C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8590C1),28, //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  S8589C2  {
  virtual  ~S8589C2(); // _ZN7S8589C2D1Ev
  virtual void  v13(); // _ZN7S8589C23v13Ev
  virtual void  v14(); // _ZN7S8589C23v14Ev
  virtual void  v15(); // _ZN7S8589C23v15Ev
  virtual void  v16(); // _ZN7S8589C23v16Ev
  virtual void  v17(); // _ZN7S8589C23v17Ev
  virtual void  v18(); // _ZN7S8589C23v18Ev
  virtual void  v19(); // _ZN7S8589C23v19Ev
  virtual void  v20(); // _ZN7S8589C23v20Ev
  virtual void  v21(); // _ZN7S8589C23v21Ev
  virtual void  v22(); // _ZN7S8589C23v22Ev
  virtual void  v23(); // _ZN7S8589C23v23Ev
  virtual void  v24(); // _ZN7S8589C23v24Ev
  S8589C2(); // tgen
};
//SIG(-1 S8589C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8589C2 ::~S8589C2(){ note_dtor("S8589C2", this);}
void  S8589C2 ::v13(){vfunc_called(this, "_ZN7S8589C23v13Ev");}
void  S8589C2 ::v14(){vfunc_called(this, "_ZN7S8589C23v14Ev");}
void  S8589C2 ::v15(){vfunc_called(this, "_ZN7S8589C23v15Ev");}
void  S8589C2 ::v16(){vfunc_called(this, "_ZN7S8589C23v16Ev");}
void  S8589C2 ::v17(){vfunc_called(this, "_ZN7S8589C23v17Ev");}
void  S8589C2 ::v18(){vfunc_called(this, "_ZN7S8589C23v18Ev");}
void  S8589C2 ::v19(){vfunc_called(this, "_ZN7S8589C23v19Ev");}
void  S8589C2 ::v20(){vfunc_called(this, "_ZN7S8589C23v20Ev");}
void  S8589C2 ::v21(){vfunc_called(this, "_ZN7S8589C23v21Ev");}
void  S8589C2 ::v22(){vfunc_called(this, "_ZN7S8589C23v22Ev");}
void  S8589C2 ::v23(){vfunc_called(this, "_ZN7S8589C23v23Ev");}
void  S8589C2 ::v24(){vfunc_called(this, "_ZN7S8589C23v24Ev");}
S8589C2 ::S8589C2(){ note_ctor("S8589C2", this);} // tgen

static void Test_S8589C2()
{
  extern Class_Descriptor cd_S8589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8589C2, buf);
    S8589C2 *dp, &lv = *(dp=new (buf) S8589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8589C2)");
    test_class_info(&lv, &cd_S8589C2);
    dp->~S8589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8589C2(Test_S8589C2, "S8589C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8589C2C1Ev();
extern void _ZN7S8589C2D1Ev();
Name_Map name_map_S8589C2[] = {
  NSPAIR(_ZN7S8589C2C1Ev),
  NSPAIR(_ZN7S8589C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8589C2[];
extern void _ZN7S8589C2D1Ev();
extern void _ZN7S8589C2D0Ev();
extern void _ZN7S8589C23v13Ev();
extern void _ZN7S8589C23v14Ev();
extern void _ZN7S8589C23v15Ev();
extern void _ZN7S8589C23v16Ev();
extern void _ZN7S8589C23v17Ev();
extern void _ZN7S8589C23v18Ev();
extern void _ZN7S8589C23v19Ev();
extern void _ZN7S8589C23v20Ev();
extern void _ZN7S8589C23v21Ev();
extern void _ZN7S8589C23v22Ev();
extern void _ZN7S8589C23v23Ev();
extern void _ZN7S8589C23v24Ev();
static  VTBL_ENTRY vtc_S8589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8589C2[0]),
  (VTBL_ENTRY)&_ZN7S8589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8589C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8589C2[];
extern  VTBL_ENTRY _ZTV7S8589C2[];
Class_Descriptor cd_S8589C2 = {  "S8589C2", // class name
  0,0,//no base classes
  &(vtc_S8589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8589C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8589C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8589C1  : S8589C2 {
  ::S17555C3_nt s8589c1f0;
  ::S2345C15_nt s8589c1f1;
  virtual  ~S8589C1(); // _ZN7S8589C1D1Ev
  virtual void  v1(); // _ZN7S8589C12v1Ev
  virtual void  v2(); // _ZN7S8589C12v2Ev
  virtual void  v3(); // _ZN7S8589C12v3Ev
  virtual void  v4(); // _ZN7S8589C12v4Ev
  virtual void  v5(); // _ZN7S8589C12v5Ev
  virtual void  v6(); // _ZN7S8589C12v6Ev
  virtual void  v7(); // _ZN7S8589C12v7Ev
  virtual void  v8(); // _ZN7S8589C12v8Ev
  virtual void  v9(); // _ZN7S8589C12v9Ev
  virtual void  v10(); // _ZN7S8589C13v10Ev
  virtual void  v11(); // _ZN7S8589C13v11Ev
  virtual void  v12(); // _ZN7S8589C13v12Ev
  S8589C1(); // tgen
};
//SIG(1 S8589C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FC4{ Fl[4]}} FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}}}


 S8589C1 ::~S8589C1(){ note_dtor("S8589C1", this);}
void  S8589C1 ::v1(){vfunc_called(this, "_ZN7S8589C12v1Ev");}
void  S8589C1 ::v2(){vfunc_called(this, "_ZN7S8589C12v2Ev");}
void  S8589C1 ::v3(){vfunc_called(this, "_ZN7S8589C12v3Ev");}
void  S8589C1 ::v4(){vfunc_called(this, "_ZN7S8589C12v4Ev");}
void  S8589C1 ::v5(){vfunc_called(this, "_ZN7S8589C12v5Ev");}
void  S8589C1 ::v6(){vfunc_called(this, "_ZN7S8589C12v6Ev");}
void  S8589C1 ::v7(){vfunc_called(this, "_ZN7S8589C12v7Ev");}
void  S8589C1 ::v8(){vfunc_called(this, "_ZN7S8589C12v8Ev");}
void  S8589C1 ::v9(){vfunc_called(this, "_ZN7S8589C12v9Ev");}
void  S8589C1 ::v10(){vfunc_called(this, "_ZN7S8589C13v10Ev");}
void  S8589C1 ::v11(){vfunc_called(this, "_ZN7S8589C13v11Ev");}
void  S8589C1 ::v12(){vfunc_called(this, "_ZN7S8589C13v12Ev");}
S8589C1 ::S8589C1(){ note_ctor("S8589C1", this);} // tgen

static void Test_S8589C1()
{
  extern Class_Descriptor cd_S8589C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S8589C1, buf);
    S8589C1 *dp, &lv = *(dp=new (buf) S8589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S8589C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8589C1)");
    check_base_class_offset(lv, (S8589C2*), 0, "S8589C1");
    check_field_offset(lv, s8589c1f0, ABISELECT(8,4), "S8589C1.s8589c1f0");
    check_field_offset(lv, s8589c1f1, ABISELECT(40,20), "S8589C1.s8589c1f1");
    test_class_info(&lv, &cd_S8589C1);
    dp->~S8589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8589C1(Test_S8589C1, "S8589C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S8589C1C1Ev();
extern void _ZN7S8589C1D1Ev();
Name_Map name_map_S8589C1[] = {
  NSPAIR(_ZN7S8589C1C1Ev),
  NSPAIR(_ZN7S8589C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8589C2;
extern VTBL_ENTRY _ZTI7S8589C2[];
extern  VTBL_ENTRY _ZTV7S8589C2[];
static Base_Class bases_S8589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8589C1[];
extern void _ZN7S8589C1D1Ev();
extern void _ZN7S8589C1D0Ev();
extern void _ZN7S8589C23v13Ev();
extern void _ZN7S8589C23v14Ev();
extern void _ZN7S8589C23v15Ev();
extern void _ZN7S8589C23v16Ev();
extern void _ZN7S8589C23v17Ev();
extern void _ZN7S8589C23v18Ev();
extern void _ZN7S8589C23v19Ev();
extern void _ZN7S8589C23v20Ev();
extern void _ZN7S8589C23v21Ev();
extern void _ZN7S8589C23v22Ev();
extern void _ZN7S8589C23v23Ev();
extern void _ZN7S8589C23v24Ev();
extern void _ZN7S8589C12v1Ev();
extern void _ZN7S8589C12v2Ev();
extern void _ZN7S8589C12v3Ev();
extern void _ZN7S8589C12v4Ev();
extern void _ZN7S8589C12v5Ev();
extern void _ZN7S8589C12v6Ev();
extern void _ZN7S8589C12v7Ev();
extern void _ZN7S8589C12v8Ev();
extern void _ZN7S8589C12v9Ev();
extern void _ZN7S8589C13v10Ev();
extern void _ZN7S8589C13v11Ev();
extern void _ZN7S8589C13v12Ev();
static  VTBL_ENTRY vtc_S8589C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8589C1[0]),
  (VTBL_ENTRY)&_ZN7S8589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8589C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8589C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8589C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8589C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8589C1[];
extern  VTBL_ENTRY _ZTV7S8589C1[];
Class_Descriptor cd_S8589C1 = {  "S8589C1", // class name
  bases_S8589C1, 1,
  &(vtc_S8589C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S8589C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8589C1),28, //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  S2222C4  {
  virtual  ~S2222C4(); // _ZN7S2222C4D1Ev
  virtual void  v3(); // _ZN7S2222C42v3Ev
  S2222C4(); // tgen
};
//SIG(-1 S2222C4) C1{ vd v1}


 S2222C4 ::~S2222C4(){ note_dtor("S2222C4", this);}
void  S2222C4 ::v3(){vfunc_called(this, "_ZN7S2222C42v3Ev");}
S2222C4 ::S2222C4(){ note_ctor("S2222C4", this);} // tgen

static void Test_S2222C4()
{
  extern Class_Descriptor cd_S2222C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2222C4, buf);
    S2222C4 *dp, &lv = *(dp=new (buf) S2222C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2222C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C4)");
    test_class_info(&lv, &cd_S2222C4);
    dp->~S2222C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C4(Test_S2222C4, "S2222C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2222C4C1Ev();
extern void _ZN7S2222C4D1Ev();
Name_Map name_map_S2222C4[] = {
  NSPAIR(_ZN7S2222C4C1Ev),
  NSPAIR(_ZN7S2222C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2222C4[];
extern void _ZN7S2222C4D1Ev();
extern void _ZN7S2222C4D0Ev();
extern void _ZN7S2222C42v3Ev();
static  VTBL_ENTRY vtc_S2222C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C4[0]),
  (VTBL_ENTRY)&_ZN7S2222C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
Class_Descriptor cd_S2222C4 = {  "S2222C4", // class name
  0,0,//no base classes
  &(vtc_S2222C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2222C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2222C4),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  S2222C3  : S2222C4 {
  char s2222c3f0;
  ::S18423C15_nt s2222c3f1;
  ::S18423C15_nt s2222c3f2;
  ::S18423C15_nt s2222c3f3;
  void *s2222c3f4;
  ::S18423C15_nt s2222c3f5;
  ::S18423C15_nt s2222c3f6;
  int s2222c3f7;
  void *s2222c3f8[3];
  virtual  ~S2222C3(); // _ZN7S2222C3D1Ev
  virtual void  v4(); // _ZN7S2222C32v4Ev
  virtual void  v5(); // _ZN7S2222C32v5Ev
  S2222C3(); // tgen
};
//SIG(-1 S2222C3) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S2222C3 ::~S2222C3(){ note_dtor("S2222C3", this);}
void  S2222C3 ::v4(){vfunc_called(this, "_ZN7S2222C32v4Ev");}
void  S2222C3 ::v5(){vfunc_called(this, "_ZN7S2222C32v5Ev");}
S2222C3 ::S2222C3(){ note_ctor("S2222C3", this);} // tgen

static void Test_S2222C3()
{
  extern Class_Descriptor cd_S2222C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S2222C3, buf);
    S2222C3 *dp, &lv = *(dp=new (buf) S2222C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S2222C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C3)");
    check_base_class_offset(lv, (S2222C4*), 0, "S2222C3");
    check_field_offset(lv, s2222c3f0, ABISELECT(8,4), "S2222C3.s2222c3f0");
    check_field_offset(lv, s2222c3f1, ABISELECT(16,8), "S2222C3.s2222c3f1");
    check_field_offset(lv, s2222c3f2, ABISELECT(32,20), "S2222C3.s2222c3f2");
    check_field_offset(lv, s2222c3f3, ABISELECT(48,32), "S2222C3.s2222c3f3");
    check_field_offset(lv, s2222c3f4, ABISELECT(64,44), "S2222C3.s2222c3f4");
    check_field_offset(lv, s2222c3f5, ABISELECT(72,48), "S2222C3.s2222c3f5");
    check_field_offset(lv, s2222c3f6, ABISELECT(88,60), "S2222C3.s2222c3f6");
    check_field_offset(lv, s2222c3f7, ABISELECT(104,72), "S2222C3.s2222c3f7");
    check_field_offset(lv, s2222c3f8, ABISELECT(112,76), "S2222C3.s2222c3f8");
    test_class_info(&lv, &cd_S2222C3);
    dp->~S2222C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C3(Test_S2222C3, "S2222C3", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S2222C3C1Ev();
extern void _ZN7S2222C3D1Ev();
Name_Map name_map_S2222C3[] = {
  NSPAIR(_ZN7S2222C3C1Ev),
  NSPAIR(_ZN7S2222C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
static Base_Class bases_S2222C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2222C3[];
extern void _ZN7S2222C3D1Ev();
extern void _ZN7S2222C3D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
static  VTBL_ENTRY vtc_S2222C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C3[0]),
  (VTBL_ENTRY)&_ZN7S2222C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
Class_Descriptor cd_S2222C3 = {  "S2222C3", // class name
  bases_S2222C3, 1,
  &(vtc_S2222C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S2222C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2222C2  : S2222C3 {
  ::S18423C15_nt s2222c2f0;
  ::S18423C15_nt s2222c2f1;
  ::S18423C15_nt s2222c2f2;
  ::S18423C15_nt s2222c2f3;
  ::S18423C15_nt s2222c2f4;
  int s2222c2f5;
  ::S17556C28_nt s2222c2f6;
  virtual  ~S2222C2(); // _ZN7S2222C2D1Ev
  virtual void  v6(); // _ZN7S2222C22v6Ev
  virtual void  v7(); // _ZN7S2222C22v7Ev
  virtual void  v8(); // _ZN7S2222C22v8Ev
  virtual void  v9(); // _ZN7S2222C22v9Ev
  virtual void  v10(); // _ZN7S2222C23v10Ev
  S2222C2(); // tgen
};
//SIG(-1 S2222C2) C1{ BC2{ BC3{ vd v6} vd v7 v8 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 v2 v3 v4 v5 FC4 FC4 FC4 FC4 FC4 Fi FC6{ m Fp[2]}}


 S2222C2 ::~S2222C2(){ note_dtor("S2222C2", this);}
void  S2222C2 ::v6(){vfunc_called(this, "_ZN7S2222C22v6Ev");}
void  S2222C2 ::v7(){vfunc_called(this, "_ZN7S2222C22v7Ev");}
void  S2222C2 ::v8(){vfunc_called(this, "_ZN7S2222C22v8Ev");}
void  S2222C2 ::v9(){vfunc_called(this, "_ZN7S2222C22v9Ev");}
void  S2222C2 ::v10(){vfunc_called(this, "_ZN7S2222C23v10Ev");}
S2222C2 ::S2222C2(){ note_ctor("S2222C2", this);} // tgen

static void Test_S2222C2()
{
  extern Class_Descriptor cd_S2222C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2222C2, buf);
    S2222C2 *dp, &lv = *(dp=new (buf) S2222C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2222C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C2)");
    check_base_class_offset(lv, (S2222C4*)(S2222C3*), 0, "S2222C2");
    check_base_class_offset(lv, (S2222C3*), 0, "S2222C2");
    check_field_offset(lv, s2222c2f0, ABISELECT(136,88), "S2222C2.s2222c2f0");
    check_field_offset(lv, s2222c2f1, ABISELECT(152,100), "S2222C2.s2222c2f1");
    check_field_offset(lv, s2222c2f2, ABISELECT(168,112), "S2222C2.s2222c2f2");
    check_field_offset(lv, s2222c2f3, ABISELECT(184,124), "S2222C2.s2222c2f3");
    check_field_offset(lv, s2222c2f4, ABISELECT(200,136), "S2222C2.s2222c2f4");
    check_field_offset(lv, s2222c2f5, ABISELECT(216,148), "S2222C2.s2222c2f5");
    check_field_offset(lv, s2222c2f6, ABISELECT(224,152), "S2222C2.s2222c2f6");
    test_class_info(&lv, &cd_S2222C2);
    dp->~S2222C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C2(Test_S2222C2, "S2222C2", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2222C2C1Ev();
extern void _ZN7S2222C2D1Ev();
Name_Map name_map_S2222C2[] = {
  NSPAIR(_ZN7S2222C2C1Ev),
  NSPAIR(_ZN7S2222C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
extern Class_Descriptor cd_S2222C3;
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
static Base_Class bases_S2222C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2222C2[];
extern void _ZN7S2222C2D1Ev();
extern void _ZN7S2222C2D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
extern void _ZN7S2222C22v6Ev();
extern void _ZN7S2222C22v7Ev();
extern void _ZN7S2222C22v8Ev();
extern void _ZN7S2222C22v9Ev();
extern void _ZN7S2222C23v10Ev();
static  VTBL_ENTRY vtc_S2222C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C2[0]),
  (VTBL_ENTRY)&_ZN7S2222C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2222C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S2222C2[];
extern  VTBL_ENTRY _ZTV7S2222C2[];
Class_Descriptor cd_S2222C2 = {  "S2222C2", // class name
  bases_S2222C2, 2,
  &(vtc_S2222C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2222C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C2),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  S2222C1  : S2222C2 {
  virtual  ~S2222C1(); // _ZN7S2222C1D1Ev
  virtual void  v1(); // _ZN7S2222C12v1Ev
  virtual void  v2(); // _ZN7S2222C12v2Ev
  S2222C1(); // tgen
};
//SIG(1 S2222C1) C1{ BC2{ BC3{ BC4{ vd v3} vd v4 v5 Fc FC5{ m Fp Fi FC6{ m}} FC5 FC5 Fp FC5 FC5 Fi Fp[3]} vd v6 v7 v8 v9 v10 FC5 FC5 FC5 FC5 FC5 Fi FC7{ m Fp[2]}} vd v1 v2}


 S2222C1 ::~S2222C1(){ note_dtor("S2222C1", this);}
void  S2222C1 ::v1(){vfunc_called(this, "_ZN7S2222C12v1Ev");}
void  S2222C1 ::v2(){vfunc_called(this, "_ZN7S2222C12v2Ev");}
S2222C1 ::S2222C1(){ note_ctor("S2222C1", this);} // tgen

static void Test_S2222C1()
{
  extern Class_Descriptor cd_S2222C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S2222C1, buf);
    S2222C1 *dp, &lv = *(dp=new (buf) S2222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S2222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2222C1)");
    check_base_class_offset(lv, (S2222C4*)(S2222C3*)(S2222C2*), 0, "S2222C1");
    check_base_class_offset(lv, (S2222C3*)(S2222C2*), 0, "S2222C1");
    check_base_class_offset(lv, (S2222C2*), 0, "S2222C1");
    test_class_info(&lv, &cd_S2222C1);
    dp->~S2222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2222C1(Test_S2222C1, "S2222C1", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN7S2222C1C1Ev();
extern void _ZN7S2222C1D1Ev();
Name_Map name_map_S2222C1[] = {
  NSPAIR(_ZN7S2222C1C1Ev),
  NSPAIR(_ZN7S2222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2222C4;
extern VTBL_ENTRY _ZTI7S2222C4[];
extern  VTBL_ENTRY _ZTV7S2222C4[];
extern Class_Descriptor cd_S2222C3;
extern VTBL_ENTRY _ZTI7S2222C3[];
extern  VTBL_ENTRY _ZTV7S2222C3[];
extern Class_Descriptor cd_S2222C2;
extern VTBL_ENTRY _ZTI7S2222C2[];
extern  VTBL_ENTRY _ZTV7S2222C2[];
static Base_Class bases_S2222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2222C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2222C1[];
extern void _ZN7S2222C1D1Ev();
extern void _ZN7S2222C1D0Ev();
extern void _ZN7S2222C42v3Ev();
extern void _ZN7S2222C32v4Ev();
extern void _ZN7S2222C32v5Ev();
extern void _ZN7S2222C22v6Ev();
extern void _ZN7S2222C22v7Ev();
extern void _ZN7S2222C22v8Ev();
extern void _ZN7S2222C22v9Ev();
extern void _ZN7S2222C23v10Ev();
extern void _ZN7S2222C12v1Ev();
extern void _ZN7S2222C12v2Ev();
static  VTBL_ENTRY vtc_S2222C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2222C1[0]),
  (VTBL_ENTRY)&_ZN7S2222C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2222C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2222C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2222C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2222C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2222C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2222C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2222C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2222C1[];
extern  VTBL_ENTRY _ZTV7S2222C1[];
Class_Descriptor cd_S2222C1 = {  "S2222C1", // class name
  bases_S2222C1, 3,
  &(vtc_S2222C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI7S2222C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2222C1),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  S8591C2  {
  virtual  ~S8591C2(); // _ZN7S8591C2D1Ev
  virtual void  v13(); // _ZN7S8591C23v13Ev
  virtual void  v14(); // _ZN7S8591C23v14Ev
  virtual void  v15(); // _ZN7S8591C23v15Ev
  virtual void  v16(); // _ZN7S8591C23v16Ev
  virtual void  v17(); // _ZN7S8591C23v17Ev
  virtual void  v18(); // _ZN7S8591C23v18Ev
  virtual void  v19(); // _ZN7S8591C23v19Ev
  virtual void  v20(); // _ZN7S8591C23v20Ev
  virtual void  v21(); // _ZN7S8591C23v21Ev
  virtual void  v22(); // _ZN7S8591C23v22Ev
  virtual void  v23(); // _ZN7S8591C23v23Ev
  virtual void  v24(); // _ZN7S8591C23v24Ev
  S8591C2(); // tgen
};
//SIG(-1 S8591C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8591C2 ::~S8591C2(){ note_dtor("S8591C2", this);}
void  S8591C2 ::v13(){vfunc_called(this, "_ZN7S8591C23v13Ev");}
void  S8591C2 ::v14(){vfunc_called(this, "_ZN7S8591C23v14Ev");}
void  S8591C2 ::v15(){vfunc_called(this, "_ZN7S8591C23v15Ev");}
void  S8591C2 ::v16(){vfunc_called(this, "_ZN7S8591C23v16Ev");}
void  S8591C2 ::v17(){vfunc_called(this, "_ZN7S8591C23v17Ev");}
void  S8591C2 ::v18(){vfunc_called(this, "_ZN7S8591C23v18Ev");}
void  S8591C2 ::v19(){vfunc_called(this, "_ZN7S8591C23v19Ev");}
void  S8591C2 ::v20(){vfunc_called(this, "_ZN7S8591C23v20Ev");}
void  S8591C2 ::v21(){vfunc_called(this, "_ZN7S8591C23v21Ev");}
void  S8591C2 ::v22(){vfunc_called(this, "_ZN7S8591C23v22Ev");}
void  S8591C2 ::v23(){vfunc_called(this, "_ZN7S8591C23v23Ev");}
void  S8591C2 ::v24(){vfunc_called(this, "_ZN7S8591C23v24Ev");}
S8591C2 ::S8591C2(){ note_ctor("S8591C2", this);} // tgen

static void Test_S8591C2()
{
  extern Class_Descriptor cd_S8591C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8591C2, buf);
    S8591C2 *dp, &lv = *(dp=new (buf) S8591C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8591C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8591C2)");
    test_class_info(&lv, &cd_S8591C2);
    dp->~S8591C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8591C2(Test_S8591C2, "S8591C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8591C2C1Ev();
extern void _ZN7S8591C2D1Ev();
Name_Map name_map_S8591C2[] = {
  NSPAIR(_ZN7S8591C2C1Ev),
  NSPAIR(_ZN7S8591C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8591C2[];
extern void _ZN7S8591C2D1Ev();
extern void _ZN7S8591C2D0Ev();
extern void _ZN7S8591C23v13Ev();
extern void _ZN7S8591C23v14Ev();
extern void _ZN7S8591C23v15Ev();
extern void _ZN7S8591C23v16Ev();
extern void _ZN7S8591C23v17Ev();
extern void _ZN7S8591C23v18Ev();
extern void _ZN7S8591C23v19Ev();
extern void _ZN7S8591C23v20Ev();
extern void _ZN7S8591C23v21Ev();
extern void _ZN7S8591C23v22Ev();
extern void _ZN7S8591C23v23Ev();
extern void _ZN7S8591C23v24Ev();
static  VTBL_ENTRY vtc_S8591C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8591C2[0]),
  (VTBL_ENTRY)&_ZN7S8591C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8591C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8591C2[];
extern  VTBL_ENTRY _ZTV7S8591C2[];
Class_Descriptor cd_S8591C2 = {  "S8591C2", // class name
  0,0,//no base classes
  &(vtc_S8591C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8591C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8591C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8591C1  : S8591C2 {
  ::S17566C3_nt s8591c1f0;
  ::S2345C15_nt s8591c1f1;
  virtual  ~S8591C1(); // _ZN7S8591C1D1Ev
  virtual void  v1(); // _ZN7S8591C12v1Ev
  virtual void  v2(); // _ZN7S8591C12v2Ev
  virtual void  v3(); // _ZN7S8591C12v3Ev
  virtual void  v4(); // _ZN7S8591C12v4Ev
  virtual void  v5(); // _ZN7S8591C12v5Ev
  virtual void  v6(); // _ZN7S8591C12v6Ev
  virtual void  v7(); // _ZN7S8591C12v7Ev
  virtual void  v8(); // _ZN7S8591C12v8Ev
  virtual void  v9(); // _ZN7S8591C12v9Ev
  virtual void  v10(); // _ZN7S8591C13v10Ev
  virtual void  v11(); // _ZN7S8591C13v11Ev
  virtual void  v12(); // _ZN7S8591C13v12Ev
  S8591C1(); // tgen
};
//SIG(1 S8591C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC3{ m FL[4]} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}}


 S8591C1 ::~S8591C1(){ note_dtor("S8591C1", this);}
void  S8591C1 ::v1(){vfunc_called(this, "_ZN7S8591C12v1Ev");}
void  S8591C1 ::v2(){vfunc_called(this, "_ZN7S8591C12v2Ev");}
void  S8591C1 ::v3(){vfunc_called(this, "_ZN7S8591C12v3Ev");}
void  S8591C1 ::v4(){vfunc_called(this, "_ZN7S8591C12v4Ev");}
void  S8591C1 ::v5(){vfunc_called(this, "_ZN7S8591C12v5Ev");}
void  S8591C1 ::v6(){vfunc_called(this, "_ZN7S8591C12v6Ev");}
void  S8591C1 ::v7(){vfunc_called(this, "_ZN7S8591C12v7Ev");}
void  S8591C1 ::v8(){vfunc_called(this, "_ZN7S8591C12v8Ev");}
void  S8591C1 ::v9(){vfunc_called(this, "_ZN7S8591C12v9Ev");}
void  S8591C1 ::v10(){vfunc_called(this, "_ZN7S8591C13v10Ev");}
void  S8591C1 ::v11(){vfunc_called(this, "_ZN7S8591C13v11Ev");}
void  S8591C1 ::v12(){vfunc_called(this, "_ZN7S8591C13v12Ev");}
S8591C1 ::S8591C1(){ note_ctor("S8591C1", this);} // tgen

static void Test_S8591C1()
{
  extern Class_Descriptor cd_S8591C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S8591C1, buf);
    S8591C1 *dp, &lv = *(dp=new (buf) S8591C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S8591C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8591C1)");
    check_base_class_offset(lv, (S8591C2*), 0, "S8591C1");
    check_field_offset(lv, s8591c1f0, ABISELECT(8,4), "S8591C1.s8591c1f0");
    check_field_offset(lv, s8591c1f1, ABISELECT(40,36), "S8591C1.s8591c1f1");
    test_class_info(&lv, &cd_S8591C1);
    dp->~S8591C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8591C1(Test_S8591C1, "S8591C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S8591C1C1Ev();
extern void _ZN7S8591C1D1Ev();
Name_Map name_map_S8591C1[] = {
  NSPAIR(_ZN7S8591C1C1Ev),
  NSPAIR(_ZN7S8591C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8591C2;
extern VTBL_ENTRY _ZTI7S8591C2[];
extern  VTBL_ENTRY _ZTV7S8591C2[];
static Base_Class bases_S8591C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8591C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8591C1[];
extern void _ZN7S8591C1D1Ev();
extern void _ZN7S8591C1D0Ev();
extern void _ZN7S8591C23v13Ev();
extern void _ZN7S8591C23v14Ev();
extern void _ZN7S8591C23v15Ev();
extern void _ZN7S8591C23v16Ev();
extern void _ZN7S8591C23v17Ev();
extern void _ZN7S8591C23v18Ev();
extern void _ZN7S8591C23v19Ev();
extern void _ZN7S8591C23v20Ev();
extern void _ZN7S8591C23v21Ev();
extern void _ZN7S8591C23v22Ev();
extern void _ZN7S8591C23v23Ev();
extern void _ZN7S8591C23v24Ev();
extern void _ZN7S8591C12v1Ev();
extern void _ZN7S8591C12v2Ev();
extern void _ZN7S8591C12v3Ev();
extern void _ZN7S8591C12v4Ev();
extern void _ZN7S8591C12v5Ev();
extern void _ZN7S8591C12v6Ev();
extern void _ZN7S8591C12v7Ev();
extern void _ZN7S8591C12v8Ev();
extern void _ZN7S8591C12v9Ev();
extern void _ZN7S8591C13v10Ev();
extern void _ZN7S8591C13v11Ev();
extern void _ZN7S8591C13v12Ev();
static  VTBL_ENTRY vtc_S8591C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8591C1[0]),
  (VTBL_ENTRY)&_ZN7S8591C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8591C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8591C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8591C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8591C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8591C1[];
extern  VTBL_ENTRY _ZTV7S8591C1[];
Class_Descriptor cd_S8591C1 = {  "S8591C1", // class name
  bases_S8591C1, 1,
  &(vtc_S8591C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S8591C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8591C1),28, //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  S9208C2  {
  ::S18423C15_nt s9208c2f0;
  int s9208c2f1[2];
  char s9208c2f2;
  virtual  ~S9208C2(); // _ZN7S9208C2D1Ev
  virtual void  v3(); // _ZN7S9208C22v3Ev
  virtual void  v4(); // _ZN7S9208C22v4Ev
  virtual void  v5(); // _ZN7S9208C22v5Ev
  S9208C2(); // tgen
};
//SIG(-1 S9208C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9208C2 ::~S9208C2(){ note_dtor("S9208C2", this);}
void  S9208C2 ::v3(){vfunc_called(this, "_ZN7S9208C22v3Ev");}
void  S9208C2 ::v4(){vfunc_called(this, "_ZN7S9208C22v4Ev");}
void  S9208C2 ::v5(){vfunc_called(this, "_ZN7S9208C22v5Ev");}
S9208C2 ::S9208C2(){ note_ctor("S9208C2", this);} // tgen

static void Test_S9208C2()
{
  extern Class_Descriptor cd_S9208C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9208C2, buf);
    S9208C2 *dp, &lv = *(dp=new (buf) S9208C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9208C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9208C2)");
    check_field_offset(lv, s9208c2f0, ABISELECT(8,4), "S9208C2.s9208c2f0");
    check_field_offset(lv, s9208c2f1, ABISELECT(24,16), "S9208C2.s9208c2f1");
    check_field_offset(lv, s9208c2f2, ABISELECT(32,24), "S9208C2.s9208c2f2");
    test_class_info(&lv, &cd_S9208C2);
    dp->~S9208C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9208C2(Test_S9208C2, "S9208C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9208C2C1Ev();
extern void _ZN7S9208C2D1Ev();
Name_Map name_map_S9208C2[] = {
  NSPAIR(_ZN7S9208C2C1Ev),
  NSPAIR(_ZN7S9208C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9208C2[];
extern void _ZN7S9208C2D1Ev();
extern void _ZN7S9208C2D0Ev();
extern void _ZN7S9208C22v3Ev();
extern void _ZN7S9208C22v4Ev();
extern void _ZN7S9208C22v5Ev();
static  VTBL_ENTRY vtc_S9208C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9208C2[0]),
  (VTBL_ENTRY)&_ZN7S9208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9208C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9208C2[];
extern  VTBL_ENTRY _ZTV7S9208C2[];
Class_Descriptor cd_S9208C2 = {  "S9208C2", // class name
  0,0,//no base classes
  &(vtc_S9208C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9208C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9208C2),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  S9208C7_nt  {
  void *s9208c7f0;
  int s9208c7f1[3];
};
//SIG(-1 S9208C7_nt) C1{ Fp Fi[3]}



//skip512 S9208C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9208C1  : S9208C2 , S7856C24 {
  ::S6193C4 s9208c1f0;
  int s9208c1f1;
  char s9208c1f2;
  int s9208c1f3;
  ::S18423C15_nt s9208c1f4;
  ::S18423C15_nt s9208c1f5;
  ::S9208C7_nt s9208c1f6;
  void *s9208c1f7[3];
  virtual  ~S9208C1(); // _ZN7S9208C1D1Ev
  virtual void  v1(); // _ZN7S9208C12v1Ev
  virtual void  v2(); // _ZN7S9208C12v2Ev
  S9208C1(); // tgen
};
//SIG(1 S9208C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC4 vd v1 v2 FC5{ m Fi[2] Fc[4] FC3 FC3 FC3 FC3 Fi[3]} Fi Fc Fi FC3 FC3 FC6{ Fp Fi[3]} Fp[3]}


 S9208C1 ::~S9208C1(){ note_dtor("S9208C1", this);}
void  S9208C1 ::v1(){vfunc_called(this, "_ZN7S9208C12v1Ev");}
void  S9208C1 ::v2(){vfunc_called(this, "_ZN7S9208C12v2Ev");}
S9208C1 ::S9208C1(){ note_ctor("S9208C1", this);} // tgen

static void Test_S9208C1()
{
  extern Class_Descriptor cd_S9208C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,42)];
    init_test(&cd_S9208C1, buf);
    S9208C1 *dp, &lv = *(dp=new (buf) S9208C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,164), "sizeof(S9208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9208C1)");
    check_base_class_offset(lv, (S9208C2*), 0, "S9208C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S9208C1");
    check_field_offset(lv, s9208c1f0, ABISELECT(40,28), "S9208C1.s9208c1f0");
    check_field_offset(lv, s9208c1f1, ABISELECT(136,100), "S9208C1.s9208c1f1");
    check_field_offset(lv, s9208c1f2, ABISELECT(140,104), "S9208C1.s9208c1f2");
    check_field_offset(lv, s9208c1f3, ABISELECT(144,108), "S9208C1.s9208c1f3");
    check_field_offset(lv, s9208c1f4, ABISELECT(152,112), "S9208C1.s9208c1f4");
    check_field_offset(lv, s9208c1f5, ABISELECT(168,124), "S9208C1.s9208c1f5");
    check_field_offset(lv, s9208c1f6, ABISELECT(184,136), "S9208C1.s9208c1f6");
    check_field_offset(lv, s9208c1f7, ABISELECT(208,152), "S9208C1.s9208c1f7");
    test_class_info(&lv, &cd_S9208C1);
    dp->~S9208C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9208C1(Test_S9208C1, "S9208C1", ABISELECT(232,164));

#else // __cplusplus

extern void _ZN7S9208C1C1Ev();
extern void _ZN7S9208C1D1Ev();
Name_Map name_map_S9208C1[] = {
  NSPAIR(_ZN7S9208C1C1Ev),
  NSPAIR(_ZN7S9208C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9208C2;
extern VTBL_ENTRY _ZTI7S9208C2[];
extern  VTBL_ENTRY _ZTV7S9208C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S9208C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9208C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9208C1[];
extern void _ZN7S9208C1D1Ev();
extern void _ZN7S9208C1D0Ev();
extern void _ZN7S9208C22v3Ev();
extern void _ZN7S9208C22v4Ev();
extern void _ZN7S9208C22v5Ev();
extern void _ZN7S9208C12v1Ev();
extern void _ZN7S9208C12v2Ev();
static  VTBL_ENTRY vtc_S9208C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9208C1[0]),
  (VTBL_ENTRY)&_ZN7S9208C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9208C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9208C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9208C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9208C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9208C1[];
extern  VTBL_ENTRY _ZTV7S9208C1[];
Class_Descriptor cd_S9208C1 = {  "S9208C1", // class name
  bases_S9208C1, 2,
  &(vtc_S9208C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,164), // object size
  NSPAIRA(_ZTI7S9208C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9208C1),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  S20524C4  {
  virtual void  v2(); // _ZN8S20524C42v2Ev
  ~S20524C4(); // tgen
  S20524C4(); // tgen
};
//SIG(-1 S20524C4) C1{ v1}


void  S20524C4 ::v2(){vfunc_called(this, "_ZN8S20524C42v2Ev");}
S20524C4 ::~S20524C4(){ note_dtor("S20524C4", this);} // tgen
S20524C4 ::S20524C4(){ note_ctor("S20524C4", this);} // tgen

static void Test_S20524C4()
{
  extern Class_Descriptor cd_S20524C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20524C4, buf);
    S20524C4 *dp, &lv = *(dp=new (buf) S20524C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20524C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C4)");
    test_class_info(&lv, &cd_S20524C4);
    dp->~S20524C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C4(Test_S20524C4, "S20524C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20524C4C1Ev();
extern void _ZN8S20524C4D1Ev();
Name_Map name_map_S20524C4[] = {
  NSPAIR(_ZN8S20524C4C1Ev),
  NSPAIR(_ZN8S20524C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20524C4[];
extern void _ZN8S20524C42v2Ev();
static  VTBL_ENTRY vtc_S20524C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C4[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
};
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
Class_Descriptor cd_S20524C4 = {  "S20524C4", // class name
  0,0,//no base classes
  &(vtc_S20524C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20524C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20524C4),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  S20524C3  : S20524C4 {
  virtual  ~S20524C3(); // _ZN8S20524C3D1Ev
  virtual void  v3(); // _ZN8S20524C32v3Ev
  virtual void  v4(); // _ZN8S20524C32v4Ev
  virtual void  v5(); // _ZN8S20524C32v5Ev
  S20524C3(); // tgen
};
//SIG(-1 S20524C3) C1{ BC2{ v4} vd v1 v2 v3}


 S20524C3 ::~S20524C3(){ note_dtor("S20524C3", this);}
void  S20524C3 ::v3(){vfunc_called(this, "_ZN8S20524C32v3Ev");}
void  S20524C3 ::v4(){vfunc_called(this, "_ZN8S20524C32v4Ev");}
void  S20524C3 ::v5(){vfunc_called(this, "_ZN8S20524C32v5Ev");}
S20524C3 ::S20524C3(){ note_ctor("S20524C3", this);} // tgen

static void Test_S20524C3()
{
  extern Class_Descriptor cd_S20524C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20524C3, buf);
    S20524C3 *dp, &lv = *(dp=new (buf) S20524C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20524C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C3)");
    check_base_class_offset(lv, (S20524C4*), 0, "S20524C3");
    test_class_info(&lv, &cd_S20524C3);
    dp->~S20524C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C3(Test_S20524C3, "S20524C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20524C3C1Ev();
extern void _ZN8S20524C3D1Ev();
Name_Map name_map_S20524C3[] = {
  NSPAIR(_ZN8S20524C3C1Ev),
  NSPAIR(_ZN8S20524C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
static Base_Class bases_S20524C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S20524C3[];
extern void _ZN8S20524C42v2Ev();
extern void _ZN8S20524C3D1Ev();
extern void _ZN8S20524C3D0Ev();
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
static  VTBL_ENTRY vtc_S20524C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C3[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20524C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
Class_Descriptor cd_S20524C3 = {  "S20524C3", // class name
  bases_S20524C3, 1,
  &(vtc_S20524C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20524C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20524C3),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  S20524C2  : virtual S20524C3 {
  int s20524c2f0:6;
  int s20524c2f1[4];
  virtual  ~S20524C2(); // _ZN8S20524C2D2Ev
  virtual void  v6(); // _ZN8S20524C22v6Ev
  virtual void  v7(); // _ZN8S20524C22v7Ev
  virtual void  v8(); // _ZN8S20524C22v8Ev
  virtual void  v9(); // _ZN8S20524C22v9Ev
  virtual void  v10(); // _ZN8S20524C23v10Ev
  virtual void  v11(); // _ZN8S20524C23v11Ev
  virtual void  v12(); // _ZN8S20524C23v12Ev
  virtual void  v13(); // _ZN8S20524C23v13Ev
  S20524C2(); // tgen
};
//SIG(-1 S20524C2) C1{ VBC2{ BC3{ v9} vd v10 v11 v12} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi:6 Fi[4]}


 S20524C2 ::~S20524C2(){ note_dtor("S20524C2", this);}
void  S20524C2 ::v6(){vfunc_called(this, "_ZN8S20524C22v6Ev");}
void  S20524C2 ::v7(){vfunc_called(this, "_ZN8S20524C22v7Ev");}
void  S20524C2 ::v8(){vfunc_called(this, "_ZN8S20524C22v8Ev");}
void  S20524C2 ::v9(){vfunc_called(this, "_ZN8S20524C22v9Ev");}
void  S20524C2 ::v10(){vfunc_called(this, "_ZN8S20524C23v10Ev");}
void  S20524C2 ::v11(){vfunc_called(this, "_ZN8S20524C23v11Ev");}
void  S20524C2 ::v12(){vfunc_called(this, "_ZN8S20524C23v12Ev");}
void  S20524C2 ::v13(){vfunc_called(this, "_ZN8S20524C23v13Ev");}
S20524C2 ::S20524C2(){ note_ctor("S20524C2", this);} // tgen

static void Test_S20524C2()
{
  extern Class_Descriptor cd_S20524C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S20524C2, buf);
    S20524C2 *dp, &lv = *(dp=new (buf) S20524C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S20524C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C2)");
    check_base_class_offset(lv, (S20524C4*)(S20524C3*), 0, "S20524C2");
    check_base_class_offset(lv, (S20524C3*), 0, "S20524C2");
    set_bf_and_test(lv, s20524c2f0, ABISELECT(8,4), 0, 6, 1, "S20524C2");
    set_bf_and_test(lv, s20524c2f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S20524C2");
    check_field_offset(lv, s20524c2f1, ABISELECT(12,8), "S20524C2.s20524c2f1");
    test_class_info(&lv, &cd_S20524C2);
    dp->~S20524C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C2(Test_S20524C2, "S20524C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S20524C2C1Ev();
extern void _ZN8S20524C2D2Ev();
Name_Map name_map_S20524C2[] = {
  NSPAIR(_ZN8S20524C2C1Ev),
  NSPAIR(_ZN8S20524C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
extern Class_Descriptor cd_S20524C3;
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
static Base_Class bases_S20524C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20524C3,    0, //bcp->offset
    -1, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20524C2[];
extern void _ZN8S20524C42v2Ev();
extern void _ZN8S20524C2D1Ev();
extern void _ZN8S20524C2D0Ev();
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY vtc_S20524C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C2[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&_ZN8S20524C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20524C2[];
static  VTT_ENTRY vtt_S20524C2[] = {
  {&(_ZTV8S20524C2[8]),  8,22},
  {&(_ZTV8S20524C2[8]),  8,22},
};
extern VTBL_ENTRY _ZTI8S20524C2[];
extern  VTBL_ENTRY _ZTV8S20524C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C2[];
Class_Descriptor cd_S20524C2 = {  "S20524C2", // class name
  bases_S20524C2, 2,
  &(vtc_S20524C2[0]), // expected_vtbl_contents
  &(vtt_S20524C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S20524C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20524C2),22, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20524C2),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  S20524C6  {
  int s20524c6f0;
  char s20524c6f1[2];
  virtual void  v14(); // _ZN8S20524C63v14Ev
  virtual void  v15(); // _ZN8S20524C63v15Ev
  virtual void  v16(); // _ZN8S20524C63v16Ev
  virtual void  v17(); // _ZN8S20524C63v17Ev
  virtual void  v18(); // _ZN8S20524C63v18Ev
  ~S20524C6(); // tgen
  S20524C6(); // tgen
};
//SIG(-1 S20524C6) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S20524C6 ::v14(){vfunc_called(this, "_ZN8S20524C63v14Ev");}
void  S20524C6 ::v15(){vfunc_called(this, "_ZN8S20524C63v15Ev");}
void  S20524C6 ::v16(){vfunc_called(this, "_ZN8S20524C63v16Ev");}
void  S20524C6 ::v17(){vfunc_called(this, "_ZN8S20524C63v17Ev");}
void  S20524C6 ::v18(){vfunc_called(this, "_ZN8S20524C63v18Ev");}
S20524C6 ::~S20524C6(){ note_dtor("S20524C6", this);} // tgen
S20524C6 ::S20524C6(){ note_ctor("S20524C6", this);} // tgen

static void Test_S20524C6()
{
  extern Class_Descriptor cd_S20524C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20524C6, buf);
    S20524C6 *dp, &lv = *(dp=new (buf) S20524C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20524C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C6)");
    check_field_offset(lv, s20524c6f0, ABISELECT(8,4), "S20524C6.s20524c6f0");
    check_field_offset(lv, s20524c6f1, ABISELECT(12,8), "S20524C6.s20524c6f1");
    test_class_info(&lv, &cd_S20524C6);
    dp->~S20524C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C6(Test_S20524C6, "S20524C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20524C6C1Ev();
extern void _ZN8S20524C6D1Ev();
Name_Map name_map_S20524C6[] = {
  NSPAIR(_ZN8S20524C6C1Ev),
  NSPAIR(_ZN8S20524C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20524C6[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
static  VTBL_ENTRY vtc_S20524C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C6[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
};
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
Class_Descriptor cd_S20524C6 = {  "S20524C6", // class name
  0,0,//no base classes
  &(vtc_S20524C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20524C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20524C6),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  S20524C5  : S20524C6 {
  virtual void  v19(); // _ZN8S20524C53v19Ev
  virtual void  v20(); // _ZN8S20524C53v20Ev
  virtual void  v21(); // _ZN8S20524C53v21Ev
  virtual void  v22(); // _ZN8S20524C53v22Ev
  virtual void  v23(); // _ZN8S20524C53v23Ev
  ~S20524C5(); // tgen
  S20524C5(); // tgen
};
//SIG(-1 S20524C5) C1{ BC2{ v6 v7 v8 v9 v10 Fi Fc[2]} v1 v2 v3 v4 v5}


void  S20524C5 ::v19(){vfunc_called(this, "_ZN8S20524C53v19Ev");}
void  S20524C5 ::v20(){vfunc_called(this, "_ZN8S20524C53v20Ev");}
void  S20524C5 ::v21(){vfunc_called(this, "_ZN8S20524C53v21Ev");}
void  S20524C5 ::v22(){vfunc_called(this, "_ZN8S20524C53v22Ev");}
void  S20524C5 ::v23(){vfunc_called(this, "_ZN8S20524C53v23Ev");}
S20524C5 ::~S20524C5(){ note_dtor("S20524C5", this);} // tgen
S20524C5 ::S20524C5(){ note_ctor("S20524C5", this);} // tgen

static void Test_S20524C5()
{
  extern Class_Descriptor cd_S20524C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20524C5, buf);
    S20524C5 *dp, &lv = *(dp=new (buf) S20524C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20524C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C5)");
    check_base_class_offset(lv, (S20524C6*), 0, "S20524C5");
    test_class_info(&lv, &cd_S20524C5);
    dp->~S20524C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C5(Test_S20524C5, "S20524C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20524C5C1Ev();
extern void _ZN8S20524C5D1Ev();
Name_Map name_map_S20524C5[] = {
  NSPAIR(_ZN8S20524C5C1Ev),
  NSPAIR(_ZN8S20524C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C6;
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
static Base_Class bases_S20524C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S20524C5[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
extern void _ZN8S20524C53v19Ev();
extern void _ZN8S20524C53v20Ev();
extern void _ZN8S20524C53v21Ev();
extern void _ZN8S20524C53v22Ev();
extern void _ZN8S20524C53v23Ev();
static  VTBL_ENTRY vtc_S20524C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C5[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v19Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v20Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v21Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v23Ev,
};
extern VTBL_ENTRY _ZTI8S20524C5[];
extern  VTBL_ENTRY _ZTV8S20524C5[];
Class_Descriptor cd_S20524C5 = {  "S20524C5", // class name
  bases_S20524C5, 1,
  &(vtc_S20524C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20524C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20524C5),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  S20524C1  : virtual S20524C2 , S20524C5 {
  virtual  ~S20524C1(); // _ZN8S20524C1D2Ev
  virtual void  v1(); // _ZN8S20524C12v1Ev
  S20524C1(); // tgen
};
//SIG(1 S20524C1) C1{ VBC2{ VBC3{ BC4{ v2} vd v3 v4 v5} vd v6 v7 v8 v9 v10 v11 v12 v13 Fi:6 Fi[4]} BC5{ BC6{ v14 v15 v16 v17 v18 Fi Fc[2]} v19 v20 v21 v22 v23} vd v1}


 S20524C1 ::~S20524C1(){ note_dtor("S20524C1", this);}
void  S20524C1 ::v1(){vfunc_called(this, "_ZN8S20524C12v1Ev");}
S20524C1 ::S20524C1(){ note_ctor("S20524C1", this);} // tgen

static void Test_S20524C1()
{
  extern Class_Descriptor cd_S20524C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S20524C1, buf);
    S20524C1 *dp, &lv = *(dp=new (buf) S20524C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S20524C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20524C1)");
    check_base_class_offset(lv, (S20524C4*)(S20524C3*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C3*)(S20524C2*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C2*), ABISELECT(16,12), "S20524C1");
    check_base_class_offset(lv, (S20524C6*)(S20524C5*), 0, "S20524C1");
    check_base_class_offset(lv, (S20524C5*), 0, "S20524C1");
    test_class_info(&lv, &cd_S20524C1);
    dp->~S20524C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20524C1(Test_S20524C1, "S20524C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S20524C1C1Ev();
extern void _ZN8S20524C1D2Ev();
Name_Map name_map_S20524C1[] = {
  NSPAIR(_ZN8S20524C1C1Ev),
  NSPAIR(_ZN8S20524C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20524C4;
extern VTBL_ENTRY _ZTI8S20524C4[];
extern  VTBL_ENTRY _ZTV8S20524C4[];
extern Class_Descriptor cd_S20524C3;
extern VTBL_ENTRY _ZTI8S20524C3[];
extern  VTBL_ENTRY _ZTV8S20524C3[];
extern Class_Descriptor cd_S20524C2;
extern VTBL_ENTRY _ZTI8S20524C2[];
extern  VTBL_ENTRY _ZTV8S20524C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C2[];
extern Class_Descriptor cd_S20524C6;
extern VTBL_ENTRY _ZTI8S20524C6[];
extern  VTBL_ENTRY _ZTV8S20524C6[];
extern Class_Descriptor cd_S20524C5;
extern VTBL_ENTRY _ZTI8S20524C5[];
extern  VTBL_ENTRY _ZTV8S20524C5[];
static Base_Class bases_S20524C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20524C4,    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_S20524C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20524C2,    ABISELECT(16,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //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_S20524C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20524C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20524C1[];
extern void _ZN8S20524C63v14Ev();
extern void _ZN8S20524C63v15Ev();
extern void _ZN8S20524C63v16Ev();
extern void _ZN8S20524C63v17Ev();
extern void _ZN8S20524C63v18Ev();
extern void _ZN8S20524C53v19Ev();
extern void _ZN8S20524C53v20Ev();
extern void _ZN8S20524C53v21Ev();
extern void _ZN8S20524C53v22Ev();
extern void _ZN8S20524C53v23Ev();
extern void _ZN8S20524C1D1Ev();
extern void _ZN8S20524C1D0Ev();
extern void _ZN8S20524C12v1Ev();
extern void _ZN8S20524C42v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20524C1D1Ev,_ZThn12_N8S20524C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20524C1D0Ev,_ZThn12_N8S20524C1D0Ev)() __attribute__((weak));
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY vtc_S20524C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C1[0]),
  (VTBL_ENTRY)&_ZN8S20524C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20524C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v19Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v20Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v21Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v22Ev,
  (VTBL_ENTRY)&_ZN8S20524C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20524C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20524C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20524C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20524C1[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20524C1[];
extern void _ZN8S20524C42v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev)();
extern void _ZN8S20524C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev)();
extern void _ZN8S20524C2D0Ev() __attribute__((weak));
extern void _ZN8S20524C32v3Ev();
extern void _ZN8S20524C32v4Ev();
extern void _ZN8S20524C32v5Ev();
extern void _ZN8S20524C22v6Ev();
extern void _ZN8S20524C22v7Ev();
extern void _ZN8S20524C22v8Ev();
extern void _ZN8S20524C22v9Ev();
extern void _ZN8S20524C23v10Ev();
extern void _ZN8S20524C23v11Ev();
extern void _ZN8S20524C23v12Ev();
extern void _ZN8S20524C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20524C2__8S20524C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20524C2[0]),
  (VTBL_ENTRY)&_ZN8S20524C42v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20524C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20524C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20524C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20524C23v13Ev,
};
static  VTT_ENTRY vtt_S20524C1[] = {
  {&(_ZTV8S20524C1[4]),  4,47},
  {&(_ZTV8S20524C1[33]),  33,47},
  {&(_ZTV8S20524C1[33]),  33,47},
  {&(_tg__ZTV8S20524C2__8S20524C1[8]),  8,22},
  {&(_tg__ZTV8S20524C2__8S20524C1[8]),  8,22},
};
extern VTBL_ENTRY _ZTI8S20524C1[];
extern  VTBL_ENTRY _ZTV8S20524C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20524C1[];
static VTBL_ENTRY alt_thunk_names186[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C2D0Ev,_ZTv0_n16_N8S20524C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20524C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C2D1Ev,_ZTv0_n16_N8S20524C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20524C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C1D0Ev,_ZTv0_n16_N8S20524C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20524C1D0Ev,_ZThn12_N8S20524C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20524C1D1Ev,_ZTv0_n16_N8S20524C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20524C1D1Ev,_ZThn12_N8S20524C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20524C1 = {  "S20524C1", // class name
  bases_S20524C1, 5,
  &(vtc_S20524C1[0]), // expected_vtbl_contents
  &(vtt_S20524C1[0]), // expected_vtt_contents
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S20524C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20524C1),47, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20524C1),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names186,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C3_nt  {
  virtual  ~S4235C3_nt(); // _ZN10S4235C3_ntD1Ev
  virtual void  v11(); // _ZN10S4235C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4235C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4235C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4235C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4235C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4235C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4235C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4235C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4235C3_nt3v19Ev
  S4235C3_nt(); // tgen
};
//SIG(-1 S4235C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S4235C3_nt ::~S4235C3_nt(){ note_dtor("S4235C3_nt", this);}
void  S4235C3_nt ::v11(){vfunc_called(this, "_ZN10S4235C3_nt3v11Ev");}
void  S4235C3_nt ::v12(){vfunc_called(this, "_ZN10S4235C3_nt3v12Ev");}
void  S4235C3_nt ::v13(){vfunc_called(this, "_ZN10S4235C3_nt3v13Ev");}
void  S4235C3_nt ::v14(){vfunc_called(this, "_ZN10S4235C3_nt3v14Ev");}
void  S4235C3_nt ::v15(){vfunc_called(this, "_ZN10S4235C3_nt3v15Ev");}
void  S4235C3_nt ::v16(){vfunc_called(this, "_ZN10S4235C3_nt3v16Ev");}
void  S4235C3_nt ::v17(){vfunc_called(this, "_ZN10S4235C3_nt3v17Ev");}
void  S4235C3_nt ::v18(){vfunc_called(this, "_ZN10S4235C3_nt3v18Ev");}
void  S4235C3_nt ::v19(){vfunc_called(this, "_ZN10S4235C3_nt3v19Ev");}
S4235C3_nt ::S4235C3_nt(){ note_ctor("S4235C3_nt", this);} // tgen

//skip512 S4235C3_nt

#else // __cplusplus

extern void _ZN10S4235C3_ntC1Ev();
extern void _ZN10S4235C3_ntD1Ev();
Name_Map name_map_S4235C3_nt[] = {
  NSPAIR(_ZN10S4235C3_ntC1Ev),
  NSPAIR(_ZN10S4235C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern void _ZN10S4235C3_ntD1Ev();
extern void _ZN10S4235C3_ntD0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
static  VTBL_ENTRY vtc_S4235C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4235C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4235C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
VTBL_ENTRY *P__ZTI10S4235C3_nt = _ZTI10S4235C3_nt; 
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
Class_Descriptor cd_S4235C3_nt = {  "S4235C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4235C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4235C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4235C3_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C2_nt  : S4235C3_nt {
  virtual  ~S4235C2_nt(); // _ZN10S4235C2_ntD1Ev
  S4235C2_nt(); // tgen
};
//SIG(-1 S4235C2_nt) C1{ BC2{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9} vd}


 S4235C2_nt ::~S4235C2_nt(){ note_dtor("S4235C2_nt", this);}
S4235C2_nt ::S4235C2_nt(){ note_ctor("S4235C2_nt", this);} // tgen

//skip512 S4235C2_nt

#else // __cplusplus

extern void _ZN10S4235C2_ntC1Ev();
extern void _ZN10S4235C2_ntD1Ev();
Name_Map name_map_S4235C2_nt[] = {
  NSPAIR(_ZN10S4235C2_ntC1Ev),
  NSPAIR(_ZN10S4235C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4235C3_nt;
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
static Base_Class bases_S4235C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4235C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S4235C2_nt[];
extern void _ZN10S4235C2_ntD1Ev();
extern void _ZN10S4235C2_ntD0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
static  VTBL_ENTRY vtc_S4235C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4235C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4235C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4235C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S4235C2_nt[];
VTBL_ENTRY *P__ZTI10S4235C2_nt = _ZTI10S4235C2_nt; 
extern  VTBL_ENTRY _ZTV10S4235C2_nt[];
Class_Descriptor cd_S4235C2_nt = {  "S4235C2_nt", // class name
  bases_S4235C2_nt, 1,
  &(vtc_S4235C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4235C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4235C2_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C4_nt  {
  void *s4235c4f0;
  char s4235c4f1;
  void  mf4235c4(); // _ZN10S4235C4_nt8mf4235c4Ev
};
//SIG(-1 S4235C4_nt) C1{ m Fp Fc}


void  S4235C4_nt ::mf4235c4(){}

//skip512 S4235C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C6_nt  {
  ::S4235C4_nt s4235c6f0;
  void *s4235c6f1[2];
  void  mf4235c6(); // _ZN10S4235C6_nt8mf4235c6Ev
};
//SIG(-1 S4235C6_nt) C1{ m FC2{ m Fp Fc} Fp[2]}


void  S4235C6_nt ::mf4235c6(){}

//skip512 S4235C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C5_nt  {
  ::S4235C6_nt s4235c5f0;
  int s4235c5f1;
  void  mf4235c5(); // _ZN10S4235C5_nt8mf4235c5Ev
};
//SIG(-1 S4235C5_nt) C1{ m FC2{ m FC3{ m Fp Fc} Fp[2]} Fi}


void  S4235C5_nt ::mf4235c5(){}

//skip512 S4235C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4235C1  : S4235C2_nt {
  ::S4235C4_nt s4235c1f0;
  ::S4235C5_nt s4235c1f1;
  virtual  ~S4235C1(); // _ZN7S4235C1D1Ev
  virtual void  v1(); // _ZN7S4235C12v1Ev
  virtual void  v2(); // _ZN7S4235C12v2Ev
  virtual void  v3(); // _ZN7S4235C12v3Ev
  virtual void  v4(); // _ZN7S4235C12v4Ev
  virtual void  v5(); // _ZN7S4235C12v5Ev
  virtual void  v6(); // _ZN7S4235C12v6Ev
  virtual void  v7(); // _ZN7S4235C12v7Ev
  virtual void  v8(); // _ZN7S4235C12v8Ev
  virtual void  v9(); // _ZN7S4235C12v9Ev
  virtual void  v10(); // _ZN7S4235C13v10Ev
  S4235C1(); // tgen
};
//SIG(1 S4235C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19} vd} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC4{ m Fp Fc} FC5{ m FC6{ m FC4 Fp[2]} Fi}}


 S4235C1 ::~S4235C1(){ note_dtor("S4235C1", this);}
void  S4235C1 ::v1(){vfunc_called(this, "_ZN7S4235C12v1Ev");}
void  S4235C1 ::v2(){vfunc_called(this, "_ZN7S4235C12v2Ev");}
void  S4235C1 ::v3(){vfunc_called(this, "_ZN7S4235C12v3Ev");}
void  S4235C1 ::v4(){vfunc_called(this, "_ZN7S4235C12v4Ev");}
void  S4235C1 ::v5(){vfunc_called(this, "_ZN7S4235C12v5Ev");}
void  S4235C1 ::v6(){vfunc_called(this, "_ZN7S4235C12v6Ev");}
void  S4235C1 ::v7(){vfunc_called(this, "_ZN7S4235C12v7Ev");}
void  S4235C1 ::v8(){vfunc_called(this, "_ZN7S4235C12v8Ev");}
void  S4235C1 ::v9(){vfunc_called(this, "_ZN7S4235C12v9Ev");}
void  S4235C1 ::v10(){vfunc_called(this, "_ZN7S4235C13v10Ev");}
S4235C1 ::S4235C1(){ note_ctor("S4235C1", this);} // tgen

static void Test_S4235C1()
{
  extern Class_Descriptor cd_S4235C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S4235C1, buf);
    S4235C1 *dp, &lv = *(dp=new (buf) S4235C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S4235C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4235C1)");
    check_base_class_offset(lv, (S4235C3_nt*)(S4235C2_nt*), 0, "S4235C1");
    check_base_class_offset(lv, (S4235C2_nt*), 0, "S4235C1");
    check_field_offset(lv, s4235c1f0, ABISELECT(8,4), "S4235C1.s4235c1f0");
    check_field_offset(lv, s4235c1f1, ABISELECT(24,12), "S4235C1.s4235c1f1");
    test_class_info(&lv, &cd_S4235C1);
    dp->~S4235C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4235C1(Test_S4235C1, "S4235C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S4235C1C1Ev();
extern void _ZN7S4235C1D1Ev();
Name_Map name_map_S4235C1[] = {
  NSPAIR(_ZN7S4235C1C1Ev),
  NSPAIR(_ZN7S4235C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4235C3_nt;
extern VTBL_ENTRY _ZTI10S4235C3_nt[];
extern  VTBL_ENTRY _ZTV10S4235C3_nt[];
extern Class_Descriptor cd_S4235C2_nt;
extern VTBL_ENTRY _ZTI10S4235C2_nt[];
extern  VTBL_ENTRY _ZTV10S4235C2_nt[];
static Base_Class bases_S4235C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4235C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4235C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4235C1[];
extern void _ZN7S4235C1D1Ev();
extern void _ZN7S4235C1D0Ev();
extern void _ZN10S4235C3_nt3v11Ev();
extern void _ZN10S4235C3_nt3v12Ev();
extern void _ZN10S4235C3_nt3v13Ev();
extern void _ZN10S4235C3_nt3v14Ev();
extern void _ZN10S4235C3_nt3v15Ev();
extern void _ZN10S4235C3_nt3v16Ev();
extern void _ZN10S4235C3_nt3v17Ev();
extern void _ZN10S4235C3_nt3v18Ev();
extern void _ZN10S4235C3_nt3v19Ev();
extern void _ZN7S4235C12v1Ev();
extern void _ZN7S4235C12v2Ev();
extern void _ZN7S4235C12v3Ev();
extern void _ZN7S4235C12v4Ev();
extern void _ZN7S4235C12v5Ev();
extern void _ZN7S4235C12v6Ev();
extern void _ZN7S4235C12v7Ev();
extern void _ZN7S4235C12v8Ev();
extern void _ZN7S4235C12v9Ev();
extern void _ZN7S4235C13v10Ev();
static  VTBL_ENTRY vtc_S4235C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4235C1[0]),
  (VTBL_ENTRY)&_ZN7S4235C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4235C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4235C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4235C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4235C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4235C1[];
extern  VTBL_ENTRY _ZTV7S4235C1[];
Class_Descriptor cd_S4235C1 = {  "S4235C1", // class name
  bases_S4235C1, 2,
  &(vtc_S4235C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S4235C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4235C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C2  {
  ::S18423C15_nt s9724c2f0;
  int s9724c2f1[2];
  char s9724c2f2;
  virtual  ~S9724C2(); // _ZN7S9724C2D1Ev
  virtual void  v4(); // _ZN7S9724C22v4Ev
  virtual void  v5(); // _ZN7S9724C22v5Ev
  virtual void  v6(); // _ZN7S9724C22v6Ev
  S9724C2(); // tgen
};
//SIG(-1 S9724C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9724C2 ::~S9724C2(){ note_dtor("S9724C2", this);}
void  S9724C2 ::v4(){vfunc_called(this, "_ZN7S9724C22v4Ev");}
void  S9724C2 ::v5(){vfunc_called(this, "_ZN7S9724C22v5Ev");}
void  S9724C2 ::v6(){vfunc_called(this, "_ZN7S9724C22v6Ev");}
S9724C2 ::S9724C2(){ note_ctor("S9724C2", this);} // tgen

static void Test_S9724C2()
{
  extern Class_Descriptor cd_S9724C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9724C2, buf);
    S9724C2 *dp, &lv = *(dp=new (buf) S9724C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9724C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9724C2)");
    check_field_offset(lv, s9724c2f0, ABISELECT(8,4), "S9724C2.s9724c2f0");
    check_field_offset(lv, s9724c2f1, ABISELECT(24,16), "S9724C2.s9724c2f1");
    check_field_offset(lv, s9724c2f2, ABISELECT(32,24), "S9724C2.s9724c2f2");
    test_class_info(&lv, &cd_S9724C2);
    dp->~S9724C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9724C2(Test_S9724C2, "S9724C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9724C2C1Ev();
extern void _ZN7S9724C2D1Ev();
Name_Map name_map_S9724C2[] = {
  NSPAIR(_ZN7S9724C2C1Ev),
  NSPAIR(_ZN7S9724C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9724C2[];
extern void _ZN7S9724C2D1Ev();
extern void _ZN7S9724C2D0Ev();
extern void _ZN7S9724C22v4Ev();
extern void _ZN7S9724C22v5Ev();
extern void _ZN7S9724C22v6Ev();
static  VTBL_ENTRY vtc_S9724C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9724C2[0]),
  (VTBL_ENTRY)&_ZN7S9724C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9724C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9724C2[];
extern  VTBL_ENTRY _ZTV7S9724C2[];
Class_Descriptor cd_S9724C2 = {  "S9724C2", // class name
  0,0,//no base classes
  &(vtc_S9724C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9724C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9724C2),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  S9724C5_nt  {
  __tsi64 s9724c5f0;
};
//SIG(-1 S9724C5_nt) C1{ FL}



//skip512 S9724C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C7_nt  {
  __tsi64 s9724c7f0[4];
};
//SIG(-1 S9724C7_nt) C1{ FL[4]}



//skip512 S9724C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9724C1  : S9724C2 {
  void *s9724c1f0[3];
  char s9724c1f1[2];
  void *s9724c1f2[2];
  char s9724c1f3;
  int s9724c1f4[2];
  __tsi64 s9724c1f5[3];
  char s9724c1f6;
  ::S9724C5_nt s9724c1f7;
  ::S9724C5_nt s9724c1f8;
  ::S17556C4_nt s9724c1f9;
  ::S17556C4_nt s9724c1f10;
  ::S9724C7_nt s9724c1f11;
  virtual  ~S9724C1(); // _ZN7S9724C1D1Ev
  virtual void  v1(); // _ZN7S9724C12v1Ev
  virtual void  v2(); // _ZN7S9724C12v2Ev
  virtual void  v3(); // _ZN7S9724C12v3Ev
  S9724C1(); // tgen
};
//SIG(1 S9724C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fp[3] Fc[2] Fp[2] Fc Fi[2] FL[3] Fc FC5{ FL} FC5 FC6{ FL[4]} FC6 FC7{ FL[4]}}


 S9724C1 ::~S9724C1(){ note_dtor("S9724C1", this);}
void  S9724C1 ::v1(){vfunc_called(this, "_ZN7S9724C12v1Ev");}
void  S9724C1 ::v2(){vfunc_called(this, "_ZN7S9724C12v2Ev");}
void  S9724C1 ::v3(){vfunc_called(this, "_ZN7S9724C12v3Ev");}
S9724C1 ::S9724C1(){ note_ctor("S9724C1", this);} // tgen

static void Test_S9724C1()
{
  extern Class_Descriptor cd_S9724C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,52)];
    init_test(&cd_S9724C1, buf);
    S9724C1 *dp, &lv = *(dp=new (buf) S9724C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,204), "sizeof(S9724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9724C1)");
    check_base_class_offset(lv, (S9724C2*), 0, "S9724C1");
    check_field_offset(lv, s9724c1f0, ABISELECT(40,28), "S9724C1.s9724c1f0");
    check_field_offset(lv, s9724c1f1, ABISELECT(64,40), "S9724C1.s9724c1f1");
    check_field_offset(lv, s9724c1f2, ABISELECT(72,44), "S9724C1.s9724c1f2");
    check_field_offset(lv, s9724c1f3, ABISELECT(88,52), "S9724C1.s9724c1f3");
    check_field_offset(lv, s9724c1f4, ABISELECT(92,56), "S9724C1.s9724c1f4");
    check_field_offset(lv, s9724c1f5, ABISELECT(104,64), "S9724C1.s9724c1f5");
    check_field_offset(lv, s9724c1f6, ABISELECT(128,88), "S9724C1.s9724c1f6");
    check_field_offset(lv, s9724c1f7, ABISELECT(136,92), "S9724C1.s9724c1f7");
    check_field_offset(lv, s9724c1f8, ABISELECT(144,100), "S9724C1.s9724c1f8");
    check_field_offset(lv, s9724c1f9, ABISELECT(152,108), "S9724C1.s9724c1f9");
    check_field_offset(lv, s9724c1f10, ABISELECT(184,140), "S9724C1.s9724c1f10");
    check_field_offset(lv, s9724c1f11, ABISELECT(216,172), "S9724C1.s9724c1f11");
    test_class_info(&lv, &cd_S9724C1);
    dp->~S9724C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9724C1(Test_S9724C1, "S9724C1", ABISELECT(248,204));

#else // __cplusplus

extern void _ZN7S9724C1C1Ev();
extern void _ZN7S9724C1D1Ev();
Name_Map name_map_S9724C1[] = {
  NSPAIR(_ZN7S9724C1C1Ev),
  NSPAIR(_ZN7S9724C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9724C2;
extern VTBL_ENTRY _ZTI7S9724C2[];
extern  VTBL_ENTRY _ZTV7S9724C2[];
static Base_Class bases_S9724C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9724C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9724C1[];
extern void _ZN7S9724C1D1Ev();
extern void _ZN7S9724C1D0Ev();
extern void _ZN7S9724C22v4Ev();
extern void _ZN7S9724C22v5Ev();
extern void _ZN7S9724C22v6Ev();
extern void _ZN7S9724C12v1Ev();
extern void _ZN7S9724C12v2Ev();
extern void _ZN7S9724C12v3Ev();
static  VTBL_ENTRY vtc_S9724C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9724C1[0]),
  (VTBL_ENTRY)&_ZN7S9724C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9724C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9724C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9724C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9724C1[];
extern  VTBL_ENTRY _ZTV7S9724C1[];
Class_Descriptor cd_S9724C1 = {  "S9724C1", // class name
  bases_S9724C1, 1,
  &(vtc_S9724C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(248,204), // object size
  NSPAIRA(_ZTI7S9724C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9724C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8580C2_nt  {
  int s8580c2f0;
  void *s8580c2f1[2];
  virtual  ~S8580C2_nt(); // _ZN10S8580C2_ntD1Ev
  virtual void  v13(); // _ZN10S8580C2_nt3v13Ev
  virtual void  v14(); // _ZN10S8580C2_nt3v14Ev
  virtual void  v15(); // _ZN10S8580C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8580C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8580C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8580C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8580C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8580C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8580C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8580C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8580C2_nt3v23Ev
  S8580C2_nt(); // tgen
};
//SIG(-1 S8580C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fi Fp[2]}


 S8580C2_nt ::~S8580C2_nt(){ note_dtor("S8580C2_nt", this);}
void  S8580C2_nt ::v13(){vfunc_called(this, "_ZN10S8580C2_nt3v13Ev");}
void  S8580C2_nt ::v14(){vfunc_called(this, "_ZN10S8580C2_nt3v14Ev");}
void  S8580C2_nt ::v15(){vfunc_called(this, "_ZN10S8580C2_nt3v15Ev");}
void  S8580C2_nt ::v16(){vfunc_called(this, "_ZN10S8580C2_nt3v16Ev");}
void  S8580C2_nt ::v17(){vfunc_called(this, "_ZN10S8580C2_nt3v17Ev");}
void  S8580C2_nt ::v18(){vfunc_called(this, "_ZN10S8580C2_nt3v18Ev");}
void  S8580C2_nt ::v19(){vfunc_called(this, "_ZN10S8580C2_nt3v19Ev");}
void  S8580C2_nt ::v20(){vfunc_called(this, "_ZN10S8580C2_nt3v20Ev");}
void  S8580C2_nt ::v21(){vfunc_called(this, "_ZN10S8580C2_nt3v21Ev");}
void  S8580C2_nt ::v22(){vfunc_called(this, "_ZN10S8580C2_nt3v22Ev");}
void  S8580C2_nt ::v23(){vfunc_called(this, "_ZN10S8580C2_nt3v23Ev");}
S8580C2_nt ::S8580C2_nt(){ note_ctor("S8580C2_nt", this);} // tgen

//skip512 S8580C2_nt

#else // __cplusplus

extern void _ZN10S8580C2_ntC1Ev();
extern void _ZN10S8580C2_ntD1Ev();
Name_Map name_map_S8580C2_nt[] = {
  NSPAIR(_ZN10S8580C2_ntC1Ev),
  NSPAIR(_ZN10S8580C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
extern void _ZN10S8580C2_ntD1Ev();
extern void _ZN10S8580C2_ntD0Ev();
extern void _ZN10S8580C2_nt3v13Ev();
extern void _ZN10S8580C2_nt3v14Ev();
extern void _ZN10S8580C2_nt3v15Ev();
extern void _ZN10S8580C2_nt3v16Ev();
extern void _ZN10S8580C2_nt3v17Ev();
extern void _ZN10S8580C2_nt3v18Ev();
extern void _ZN10S8580C2_nt3v19Ev();
extern void _ZN10S8580C2_nt3v20Ev();
extern void _ZN10S8580C2_nt3v21Ev();
extern void _ZN10S8580C2_nt3v22Ev();
extern void _ZN10S8580C2_nt3v23Ev();
static  VTBL_ENTRY vtc_S8580C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8580C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8580C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v23Ev,
};
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
VTBL_ENTRY *P__ZTI10S8580C2_nt = _ZTI10S8580C2_nt; 
extern  VTBL_ENTRY _ZTV10S8580C2_nt[];
Class_Descriptor cd_S8580C2_nt = {  "S8580C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8580C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI10S8580C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8580C2_nt),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8580C1  : S8580C2_nt {
  void *s8580c1f0;
  int s8580c1f1[3];
  char s8580c1f2;
  ::S9208C7_nt s8580c1f3;
  virtual  ~S8580C1(); // _ZN7S8580C1D1Ev
  virtual void  v1(); // _ZN7S8580C12v1Ev
  virtual void  v2(); // _ZN7S8580C12v2Ev
  virtual void  v3(); // _ZN7S8580C12v3Ev
  virtual void  v4(); // _ZN7S8580C12v4Ev
  virtual void  v5(); // _ZN7S8580C12v5Ev
  virtual void  v6(); // _ZN7S8580C12v6Ev
  virtual void  v7(); // _ZN7S8580C12v7Ev
  virtual void  v8(); // _ZN7S8580C12v8Ev
  virtual void  v9(); // _ZN7S8580C12v9Ev
  virtual void  v10(); // _ZN7S8580C13v10Ev
  virtual void  v11(); // _ZN7S8580C13v11Ev
  virtual void  v12(); // _ZN7S8580C13v12Ev
  S8580C1(); // tgen
};
//SIG(1 S8580C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fi Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi[3] Fc FC3{ Fp Fi[3]}}


 S8580C1 ::~S8580C1(){ note_dtor("S8580C1", this);}
void  S8580C1 ::v1(){vfunc_called(this, "_ZN7S8580C12v1Ev");}
void  S8580C1 ::v2(){vfunc_called(this, "_ZN7S8580C12v2Ev");}
void  S8580C1 ::v3(){vfunc_called(this, "_ZN7S8580C12v3Ev");}
void  S8580C1 ::v4(){vfunc_called(this, "_ZN7S8580C12v4Ev");}
void  S8580C1 ::v5(){vfunc_called(this, "_ZN7S8580C12v5Ev");}
void  S8580C1 ::v6(){vfunc_called(this, "_ZN7S8580C12v6Ev");}
void  S8580C1 ::v7(){vfunc_called(this, "_ZN7S8580C12v7Ev");}
void  S8580C1 ::v8(){vfunc_called(this, "_ZN7S8580C12v8Ev");}
void  S8580C1 ::v9(){vfunc_called(this, "_ZN7S8580C12v9Ev");}
void  S8580C1 ::v10(){vfunc_called(this, "_ZN7S8580C13v10Ev");}
void  S8580C1 ::v11(){vfunc_called(this, "_ZN7S8580C13v11Ev");}
void  S8580C1 ::v12(){vfunc_called(this, "_ZN7S8580C13v12Ev");}
S8580C1 ::S8580C1(){ note_ctor("S8580C1", this);} // tgen

static void Test_S8580C1()
{
  extern Class_Descriptor cd_S8580C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S8580C1, buf);
    S8580C1 *dp, &lv = *(dp=new (buf) S8580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S8580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8580C1)");
    check_base_class_offset(lv, (S8580C2_nt*), 0, "S8580C1");
    check_field_offset(lv, s8580c1f0, ABISELECT(32,16), "S8580C1.s8580c1f0");
    check_field_offset(lv, s8580c1f1, ABISELECT(40,20), "S8580C1.s8580c1f1");
    check_field_offset(lv, s8580c1f2, ABISELECT(52,32), "S8580C1.s8580c1f2");
    check_field_offset(lv, s8580c1f3, ABISELECT(56,36), "S8580C1.s8580c1f3");
    test_class_info(&lv, &cd_S8580C1);
    dp->~S8580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8580C1(Test_S8580C1, "S8580C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S8580C1C1Ev();
extern void _ZN7S8580C1D1Ev();
Name_Map name_map_S8580C1[] = {
  NSPAIR(_ZN7S8580C1C1Ev),
  NSPAIR(_ZN7S8580C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8580C2_nt;
extern VTBL_ENTRY _ZTI10S8580C2_nt[];
extern  VTBL_ENTRY _ZTV10S8580C2_nt[];
static Base_Class bases_S8580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8580C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8580C1[];
extern void _ZN7S8580C1D1Ev();
extern void _ZN7S8580C1D0Ev();
extern void _ZN10S8580C2_nt3v13Ev();
extern void _ZN10S8580C2_nt3v14Ev();
extern void _ZN10S8580C2_nt3v15Ev();
extern void _ZN10S8580C2_nt3v16Ev();
extern void _ZN10S8580C2_nt3v17Ev();
extern void _ZN10S8580C2_nt3v18Ev();
extern void _ZN10S8580C2_nt3v19Ev();
extern void _ZN10S8580C2_nt3v20Ev();
extern void _ZN10S8580C2_nt3v21Ev();
extern void _ZN10S8580C2_nt3v22Ev();
extern void _ZN10S8580C2_nt3v23Ev();
extern void _ZN7S8580C12v1Ev();
extern void _ZN7S8580C12v2Ev();
extern void _ZN7S8580C12v3Ev();
extern void _ZN7S8580C12v4Ev();
extern void _ZN7S8580C12v5Ev();
extern void _ZN7S8580C12v6Ev();
extern void _ZN7S8580C12v7Ev();
extern void _ZN7S8580C12v8Ev();
extern void _ZN7S8580C12v9Ev();
extern void _ZN7S8580C13v10Ev();
extern void _ZN7S8580C13v11Ev();
extern void _ZN7S8580C13v12Ev();
static  VTBL_ENTRY vtc_S8580C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8580C1[0]),
  (VTBL_ENTRY)&_ZN7S8580C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8580C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8580C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8580C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8580C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8580C1[];
extern  VTBL_ENTRY _ZTV7S8580C1[];
Class_Descriptor cd_S8580C1 = {  "S8580C1", // class name
  bases_S8580C1, 1,
  &(vtc_S8580C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S8580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8580C1),27, //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  S8565C2  {
  virtual  ~S8565C2(); // _ZN7S8565C2D1Ev
  virtual void  v12(); // _ZN7S8565C23v12Ev
  virtual void  v13(); // _ZN7S8565C23v13Ev
  virtual void  v14(); // _ZN7S8565C23v14Ev
  virtual void  v15(); // _ZN7S8565C23v15Ev
  virtual void  v16(); // _ZN7S8565C23v16Ev
  virtual void  v17(); // _ZN7S8565C23v17Ev
  virtual void  v18(); // _ZN7S8565C23v18Ev
  virtual void  v19(); // _ZN7S8565C23v19Ev
  virtual void  v20(); // _ZN7S8565C23v20Ev
  virtual void  v21(); // _ZN7S8565C23v21Ev
  virtual void  v22(); // _ZN7S8565C23v22Ev
  virtual void  v23(); // _ZN7S8565C23v23Ev
  S8565C2(); // tgen
};
//SIG(-1 S8565C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8565C2 ::~S8565C2(){ note_dtor("S8565C2", this);}
void  S8565C2 ::v12(){vfunc_called(this, "_ZN7S8565C23v12Ev");}
void  S8565C2 ::v13(){vfunc_called(this, "_ZN7S8565C23v13Ev");}
void  S8565C2 ::v14(){vfunc_called(this, "_ZN7S8565C23v14Ev");}
void  S8565C2 ::v15(){vfunc_called(this, "_ZN7S8565C23v15Ev");}
void  S8565C2 ::v16(){vfunc_called(this, "_ZN7S8565C23v16Ev");}
void  S8565C2 ::v17(){vfunc_called(this, "_ZN7S8565C23v17Ev");}
void  S8565C2 ::v18(){vfunc_called(this, "_ZN7S8565C23v18Ev");}
void  S8565C2 ::v19(){vfunc_called(this, "_ZN7S8565C23v19Ev");}
void  S8565C2 ::v20(){vfunc_called(this, "_ZN7S8565C23v20Ev");}
void  S8565C2 ::v21(){vfunc_called(this, "_ZN7S8565C23v21Ev");}
void  S8565C2 ::v22(){vfunc_called(this, "_ZN7S8565C23v22Ev");}
void  S8565C2 ::v23(){vfunc_called(this, "_ZN7S8565C23v23Ev");}
S8565C2 ::S8565C2(){ note_ctor("S8565C2", this);} // tgen

static void Test_S8565C2()
{
  extern Class_Descriptor cd_S8565C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8565C2, buf);
    S8565C2 *dp, &lv = *(dp=new (buf) S8565C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8565C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8565C2)");
    test_class_info(&lv, &cd_S8565C2);
    dp->~S8565C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8565C2(Test_S8565C2, "S8565C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8565C2C1Ev();
extern void _ZN7S8565C2D1Ev();
Name_Map name_map_S8565C2[] = {
  NSPAIR(_ZN7S8565C2C1Ev),
  NSPAIR(_ZN7S8565C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8565C2[];
extern void _ZN7S8565C2D1Ev();
extern void _ZN7S8565C2D0Ev();
extern void _ZN7S8565C23v12Ev();
extern void _ZN7S8565C23v13Ev();
extern void _ZN7S8565C23v14Ev();
extern void _ZN7S8565C23v15Ev();
extern void _ZN7S8565C23v16Ev();
extern void _ZN7S8565C23v17Ev();
extern void _ZN7S8565C23v18Ev();
extern void _ZN7S8565C23v19Ev();
extern void _ZN7S8565C23v20Ev();
extern void _ZN7S8565C23v21Ev();
extern void _ZN7S8565C23v22Ev();
extern void _ZN7S8565C23v23Ev();
static  VTBL_ENTRY vtc_S8565C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8565C2[0]),
  (VTBL_ENTRY)&_ZN7S8565C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8565C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8565C2[];
extern  VTBL_ENTRY _ZTV7S8565C2[];
Class_Descriptor cd_S8565C2 = {  "S8565C2", // class name
  0,0,//no base classes
  &(vtc_S8565C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8565C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8565C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8565C3_nt  {
  int s8565c3f0;
};
//SIG(-1 S8565C3_nt) C1{ Fi}



//skip512 S8565C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8565C1  : S8565C2 {
  void *s8565c1f0[20];
  ::S8565C3_nt s8565c1f1;
  char s8565c1f2[4];
  ::S7856C24 s8565c1f3;
  void *s8565c1f4[2];
  virtual  ~S8565C1(); // _ZN7S8565C1D1Ev
  virtual void  v1(); // _ZN7S8565C12v1Ev
  virtual void  v2(); // _ZN7S8565C12v2Ev
  virtual void  v3(); // _ZN7S8565C12v3Ev
  virtual void  v4(); // _ZN7S8565C12v4Ev
  virtual void  v5(); // _ZN7S8565C12v5Ev
  virtual void  v6(); // _ZN7S8565C12v6Ev
  virtual void  v7(); // _ZN7S8565C12v7Ev
  virtual void  v8(); // _ZN7S8565C12v8Ev
  virtual void  v9(); // _ZN7S8565C12v9Ev
  virtual void  v10(); // _ZN7S8565C13v10Ev
  virtual void  v11(); // _ZN7S8565C13v11Ev
  S8565C1(); // tgen
};
//SIG(1 S8565C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] FC3{ Fi} Fc[4] FC4{ m} Fp[2]}


 S8565C1 ::~S8565C1(){ note_dtor("S8565C1", this);}
void  S8565C1 ::v1(){vfunc_called(this, "_ZN7S8565C12v1Ev");}
void  S8565C1 ::v2(){vfunc_called(this, "_ZN7S8565C12v2Ev");}
void  S8565C1 ::v3(){vfunc_called(this, "_ZN7S8565C12v3Ev");}
void  S8565C1 ::v4(){vfunc_called(this, "_ZN7S8565C12v4Ev");}
void  S8565C1 ::v5(){vfunc_called(this, "_ZN7S8565C12v5Ev");}
void  S8565C1 ::v6(){vfunc_called(this, "_ZN7S8565C12v6Ev");}
void  S8565C1 ::v7(){vfunc_called(this, "_ZN7S8565C12v7Ev");}
void  S8565C1 ::v8(){vfunc_called(this, "_ZN7S8565C12v8Ev");}
void  S8565C1 ::v9(){vfunc_called(this, "_ZN7S8565C12v9Ev");}
void  S8565C1 ::v10(){vfunc_called(this, "_ZN7S8565C13v10Ev");}
void  S8565C1 ::v11(){vfunc_called(this, "_ZN7S8565C13v11Ev");}
S8565C1 ::S8565C1(){ note_ctor("S8565C1", this);} // tgen

static void Test_S8565C1()
{
  extern Class_Descriptor cd_S8565C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S8565C1, buf);
    S8565C1 *dp, &lv = *(dp=new (buf) S8565C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S8565C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8565C1)");
    check_base_class_offset(lv, (S8565C2*), 0, "S8565C1");
    check_field_offset(lv, s8565c1f0, ABISELECT(8,4), "S8565C1.s8565c1f0");
    check_field_offset(lv, s8565c1f1, ABISELECT(168,84), "S8565C1.s8565c1f1");
    check_field_offset(lv, s8565c1f2, ABISELECT(172,88), "S8565C1.s8565c1f2");
    check_field_offset(lv, s8565c1f3, ABISELECT(176,92), "S8565C1.s8565c1f3");
    check_field_offset(lv, s8565c1f4, ABISELECT(184,96), "S8565C1.s8565c1f4");
    test_class_info(&lv, &cd_S8565C1);
    dp->~S8565C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8565C1(Test_S8565C1, "S8565C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S8565C1C1Ev();
extern void _ZN7S8565C1D1Ev();
Name_Map name_map_S8565C1[] = {
  NSPAIR(_ZN7S8565C1C1Ev),
  NSPAIR(_ZN7S8565C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8565C2;
extern VTBL_ENTRY _ZTI7S8565C2[];
extern  VTBL_ENTRY _ZTV7S8565C2[];
static Base_Class bases_S8565C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8565C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8565C1[];
extern void _ZN7S8565C1D1Ev();
extern void _ZN7S8565C1D0Ev();
extern void _ZN7S8565C23v12Ev();
extern void _ZN7S8565C23v13Ev();
extern void _ZN7S8565C23v14Ev();
extern void _ZN7S8565C23v15Ev();
extern void _ZN7S8565C23v16Ev();
extern void _ZN7S8565C23v17Ev();
extern void _ZN7S8565C23v18Ev();
extern void _ZN7S8565C23v19Ev();
extern void _ZN7S8565C23v20Ev();
extern void _ZN7S8565C23v21Ev();
extern void _ZN7S8565C23v22Ev();
extern void _ZN7S8565C23v23Ev();
extern void _ZN7S8565C12v1Ev();
extern void _ZN7S8565C12v2Ev();
extern void _ZN7S8565C12v3Ev();
extern void _ZN7S8565C12v4Ev();
extern void _ZN7S8565C12v5Ev();
extern void _ZN7S8565C12v6Ev();
extern void _ZN7S8565C12v7Ev();
extern void _ZN7S8565C12v8Ev();
extern void _ZN7S8565C12v9Ev();
extern void _ZN7S8565C13v10Ev();
extern void _ZN7S8565C13v11Ev();
static  VTBL_ENTRY vtc_S8565C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8565C1[0]),
  (VTBL_ENTRY)&_ZN7S8565C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8565C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8565C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8565C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8565C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8565C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8565C1[];
extern  VTBL_ENTRY _ZTV7S8565C1[];
Class_Descriptor cd_S8565C1 = {  "S8565C1", // class name
  bases_S8565C1, 1,
  &(vtc_S8565C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S8565C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8565C1),27, //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  S8568C2  {
  virtual  ~S8568C2(); // _ZN7S8568C2D1Ev
  virtual void  v12(); // _ZN7S8568C23v12Ev
  virtual void  v13(); // _ZN7S8568C23v13Ev
  virtual void  v14(); // _ZN7S8568C23v14Ev
  virtual void  v15(); // _ZN7S8568C23v15Ev
  virtual void  v16(); // _ZN7S8568C23v16Ev
  virtual void  v17(); // _ZN7S8568C23v17Ev
  virtual void  v18(); // _ZN7S8568C23v18Ev
  virtual void  v19(); // _ZN7S8568C23v19Ev
  virtual void  v20(); // _ZN7S8568C23v20Ev
  virtual void  v21(); // _ZN7S8568C23v21Ev
  virtual void  v22(); // _ZN7S8568C23v22Ev
  virtual void  v23(); // _ZN7S8568C23v23Ev
  S8568C2(); // tgen
};
//SIG(-1 S8568C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8568C2 ::~S8568C2(){ note_dtor("S8568C2", this);}
void  S8568C2 ::v12(){vfunc_called(this, "_ZN7S8568C23v12Ev");}
void  S8568C2 ::v13(){vfunc_called(this, "_ZN7S8568C23v13Ev");}
void  S8568C2 ::v14(){vfunc_called(this, "_ZN7S8568C23v14Ev");}
void  S8568C2 ::v15(){vfunc_called(this, "_ZN7S8568C23v15Ev");}
void  S8568C2 ::v16(){vfunc_called(this, "_ZN7S8568C23v16Ev");}
void  S8568C2 ::v17(){vfunc_called(this, "_ZN7S8568C23v17Ev");}
void  S8568C2 ::v18(){vfunc_called(this, "_ZN7S8568C23v18Ev");}
void  S8568C2 ::v19(){vfunc_called(this, "_ZN7S8568C23v19Ev");}
void  S8568C2 ::v20(){vfunc_called(this, "_ZN7S8568C23v20Ev");}
void  S8568C2 ::v21(){vfunc_called(this, "_ZN7S8568C23v21Ev");}
void  S8568C2 ::v22(){vfunc_called(this, "_ZN7S8568C23v22Ev");}
void  S8568C2 ::v23(){vfunc_called(this, "_ZN7S8568C23v23Ev");}
S8568C2 ::S8568C2(){ note_ctor("S8568C2", this);} // tgen

static void Test_S8568C2()
{
  extern Class_Descriptor cd_S8568C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8568C2, buf);
    S8568C2 *dp, &lv = *(dp=new (buf) S8568C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8568C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8568C2)");
    test_class_info(&lv, &cd_S8568C2);
    dp->~S8568C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8568C2(Test_S8568C2, "S8568C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8568C2C1Ev();
extern void _ZN7S8568C2D1Ev();
Name_Map name_map_S8568C2[] = {
  NSPAIR(_ZN7S8568C2C1Ev),
  NSPAIR(_ZN7S8568C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8568C2[];
extern void _ZN7S8568C2D1Ev();
extern void _ZN7S8568C2D0Ev();
extern void _ZN7S8568C23v12Ev();
extern void _ZN7S8568C23v13Ev();
extern void _ZN7S8568C23v14Ev();
extern void _ZN7S8568C23v15Ev();
extern void _ZN7S8568C23v16Ev();
extern void _ZN7S8568C23v17Ev();
extern void _ZN7S8568C23v18Ev();
extern void _ZN7S8568C23v19Ev();
extern void _ZN7S8568C23v20Ev();
extern void _ZN7S8568C23v21Ev();
extern void _ZN7S8568C23v22Ev();
extern void _ZN7S8568C23v23Ev();
static  VTBL_ENTRY vtc_S8568C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8568C2[0]),
  (VTBL_ENTRY)&_ZN7S8568C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8568C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8568C2[];
extern  VTBL_ENTRY _ZTV7S8568C2[];
Class_Descriptor cd_S8568C2 = {  "S8568C2", // class name
  0,0,//no base classes
  &(vtc_S8568C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8568C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8568C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8568C3_nt  {
  int s8568c3f0[2];
};
//SIG(-1 S8568C3_nt) C1{ Fi[2]}



//skip512 S8568C3_nt

#else // __cplusplus

Class_Descriptor cd_S8568C3_nt = {  "S8568C3_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  S8568C1  : S8568C2 {
  void *s8568c1f0[9];
  ::S8568C3_nt s8568c1f1;
  void *s8568c1f2;
  ::S7856C24 s8568c1f3;
  void *s8568c1f4[3];
  virtual  ~S8568C1(); // _ZN7S8568C1D1Ev
  virtual void  v1(); // _ZN7S8568C12v1Ev
  virtual void  v2(); // _ZN7S8568C12v2Ev
  virtual void  v3(); // _ZN7S8568C12v3Ev
  virtual void  v4(); // _ZN7S8568C12v4Ev
  virtual void  v5(); // _ZN7S8568C12v5Ev
  virtual void  v6(); // _ZN7S8568C12v6Ev
  virtual void  v7(); // _ZN7S8568C12v7Ev
  virtual void  v8(); // _ZN7S8568C12v8Ev
  virtual void  v9(); // _ZN7S8568C12v9Ev
  virtual void  v10(); // _ZN7S8568C13v10Ev
  virtual void  v11(); // _ZN7S8568C13v11Ev
  S8568C1(); // tgen
};
//SIG(1 S8568C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[9] FC3{ Fi[2]} Fp FC4{ m} Fp[3]}


 S8568C1 ::~S8568C1(){ note_dtor("S8568C1", this);}
void  S8568C1 ::v1(){vfunc_called(this, "_ZN7S8568C12v1Ev");}
void  S8568C1 ::v2(){vfunc_called(this, "_ZN7S8568C12v2Ev");}
void  S8568C1 ::v3(){vfunc_called(this, "_ZN7S8568C12v3Ev");}
void  S8568C1 ::v4(){vfunc_called(this, "_ZN7S8568C12v4Ev");}
void  S8568C1 ::v5(){vfunc_called(this, "_ZN7S8568C12v5Ev");}
void  S8568C1 ::v6(){vfunc_called(this, "_ZN7S8568C12v6Ev");}
void  S8568C1 ::v7(){vfunc_called(this, "_ZN7S8568C12v7Ev");}
void  S8568C1 ::v8(){vfunc_called(this, "_ZN7S8568C12v8Ev");}
void  S8568C1 ::v9(){vfunc_called(this, "_ZN7S8568C12v9Ev");}
void  S8568C1 ::v10(){vfunc_called(this, "_ZN7S8568C13v10Ev");}
void  S8568C1 ::v11(){vfunc_called(this, "_ZN7S8568C13v11Ev");}
S8568C1 ::S8568C1(){ note_ctor("S8568C1", this);} // tgen

static void Test_S8568C1()
{
  extern Class_Descriptor cd_S8568C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S8568C1, buf);
    S8568C1 *dp, &lv = *(dp=new (buf) S8568C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S8568C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8568C1)");
    check_base_class_offset(lv, (S8568C2*), 0, "S8568C1");
    check_field_offset(lv, s8568c1f0, ABISELECT(8,4), "S8568C1.s8568c1f0");
    check_field_offset(lv, s8568c1f1, ABISELECT(80,40), "S8568C1.s8568c1f1");
    check_field_offset(lv, s8568c1f2, ABISELECT(88,48), "S8568C1.s8568c1f2");
    check_field_offset(lv, s8568c1f3, ABISELECT(96,52), "S8568C1.s8568c1f3");
    check_field_offset(lv, s8568c1f4, ABISELECT(104,56), "S8568C1.s8568c1f4");
    test_class_info(&lv, &cd_S8568C1);
    dp->~S8568C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8568C1(Test_S8568C1, "S8568C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S8568C1C1Ev();
extern void _ZN7S8568C1D1Ev();
Name_Map name_map_S8568C1[] = {
  NSPAIR(_ZN7S8568C1C1Ev),
  NSPAIR(_ZN7S8568C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8568C2;
extern VTBL_ENTRY _ZTI7S8568C2[];
extern  VTBL_ENTRY _ZTV7S8568C2[];
static Base_Class bases_S8568C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8568C1[];
extern void _ZN7S8568C1D1Ev();
extern void _ZN7S8568C1D0Ev();
extern void _ZN7S8568C23v12Ev();
extern void _ZN7S8568C23v13Ev();
extern void _ZN7S8568C23v14Ev();
extern void _ZN7S8568C23v15Ev();
extern void _ZN7S8568C23v16Ev();
extern void _ZN7S8568C23v17Ev();
extern void _ZN7S8568C23v18Ev();
extern void _ZN7S8568C23v19Ev();
extern void _ZN7S8568C23v20Ev();
extern void _ZN7S8568C23v21Ev();
extern void _ZN7S8568C23v22Ev();
extern void _ZN7S8568C23v23Ev();
extern void _ZN7S8568C12v1Ev();
extern void _ZN7S8568C12v2Ev();
extern void _ZN7S8568C12v3Ev();
extern void _ZN7S8568C12v4Ev();
extern void _ZN7S8568C12v5Ev();
extern void _ZN7S8568C12v6Ev();
extern void _ZN7S8568C12v7Ev();
extern void _ZN7S8568C12v8Ev();
extern void _ZN7S8568C12v9Ev();
extern void _ZN7S8568C13v10Ev();
extern void _ZN7S8568C13v11Ev();
static  VTBL_ENTRY vtc_S8568C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8568C1[0]),
  (VTBL_ENTRY)&_ZN7S8568C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8568C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8568C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8568C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8568C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8568C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8568C1[];
extern  VTBL_ENTRY _ZTV7S8568C1[];
Class_Descriptor cd_S8568C1 = {  "S8568C1", // class name
  bases_S8568C1, 1,
  &(vtc_S8568C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S8568C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8568C1),27, //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  S8564C2  {
  virtual  ~S8564C2(); // _ZN7S8564C2D1Ev
  virtual void  v12(); // _ZN7S8564C23v12Ev
  virtual void  v13(); // _ZN7S8564C23v13Ev
  virtual void  v14(); // _ZN7S8564C23v14Ev
  virtual void  v15(); // _ZN7S8564C23v15Ev
  virtual void  v16(); // _ZN7S8564C23v16Ev
  virtual void  v17(); // _ZN7S8564C23v17Ev
  virtual void  v18(); // _ZN7S8564C23v18Ev
  virtual void  v19(); // _ZN7S8564C23v19Ev
  virtual void  v20(); // _ZN7S8564C23v20Ev
  virtual void  v21(); // _ZN7S8564C23v21Ev
  virtual void  v22(); // _ZN7S8564C23v22Ev
  virtual void  v23(); // _ZN7S8564C23v23Ev
  S8564C2(); // tgen
};
//SIG(-1 S8564C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8564C2 ::~S8564C2(){ note_dtor("S8564C2", this);}
void  S8564C2 ::v12(){vfunc_called(this, "_ZN7S8564C23v12Ev");}
void  S8564C2 ::v13(){vfunc_called(this, "_ZN7S8564C23v13Ev");}
void  S8564C2 ::v14(){vfunc_called(this, "_ZN7S8564C23v14Ev");}
void  S8564C2 ::v15(){vfunc_called(this, "_ZN7S8564C23v15Ev");}
void  S8564C2 ::v16(){vfunc_called(this, "_ZN7S8564C23v16Ev");}
void  S8564C2 ::v17(){vfunc_called(this, "_ZN7S8564C23v17Ev");}
void  S8564C2 ::v18(){vfunc_called(this, "_ZN7S8564C23v18Ev");}
void  S8564C2 ::v19(){vfunc_called(this, "_ZN7S8564C23v19Ev");}
void  S8564C2 ::v20(){vfunc_called(this, "_ZN7S8564C23v20Ev");}
void  S8564C2 ::v21(){vfunc_called(this, "_ZN7S8564C23v21Ev");}
void  S8564C2 ::v22(){vfunc_called(this, "_ZN7S8564C23v22Ev");}
void  S8564C2 ::v23(){vfunc_called(this, "_ZN7S8564C23v23Ev");}
S8564C2 ::S8564C2(){ note_ctor("S8564C2", this);} // tgen

static void Test_S8564C2()
{
  extern Class_Descriptor cd_S8564C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8564C2, buf);
    S8564C2 *dp, &lv = *(dp=new (buf) S8564C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8564C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8564C2)");
    test_class_info(&lv, &cd_S8564C2);
    dp->~S8564C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8564C2(Test_S8564C2, "S8564C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8564C2C1Ev();
extern void _ZN7S8564C2D1Ev();
Name_Map name_map_S8564C2[] = {
  NSPAIR(_ZN7S8564C2C1Ev),
  NSPAIR(_ZN7S8564C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8564C2[];
extern void _ZN7S8564C2D1Ev();
extern void _ZN7S8564C2D0Ev();
extern void _ZN7S8564C23v12Ev();
extern void _ZN7S8564C23v13Ev();
extern void _ZN7S8564C23v14Ev();
extern void _ZN7S8564C23v15Ev();
extern void _ZN7S8564C23v16Ev();
extern void _ZN7S8564C23v17Ev();
extern void _ZN7S8564C23v18Ev();
extern void _ZN7S8564C23v19Ev();
extern void _ZN7S8564C23v20Ev();
extern void _ZN7S8564C23v21Ev();
extern void _ZN7S8564C23v22Ev();
extern void _ZN7S8564C23v23Ev();
static  VTBL_ENTRY vtc_S8564C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8564C2[0]),
  (VTBL_ENTRY)&_ZN7S8564C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8564C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8564C2[];
extern  VTBL_ENTRY _ZTV7S8564C2[];
Class_Descriptor cd_S8564C2 = {  "S8564C2", // class name
  0,0,//no base classes
  &(vtc_S8564C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8564C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8564C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8564C1  : S8564C2 {
  void *s8564c1f0[14];
  ::S8565C3_nt s8564c1f1;
  char s8564c1f2[3];
  ::S7856C24 s8564c1f3;
  void *s8564c1f4;
  virtual  ~S8564C1(); // _ZN7S8564C1D1Ev
  virtual void  v1(); // _ZN7S8564C12v1Ev
  virtual void  v2(); // _ZN7S8564C12v2Ev
  virtual void  v3(); // _ZN7S8564C12v3Ev
  virtual void  v4(); // _ZN7S8564C12v4Ev
  virtual void  v5(); // _ZN7S8564C12v5Ev
  virtual void  v6(); // _ZN7S8564C12v6Ev
  virtual void  v7(); // _ZN7S8564C12v7Ev
  virtual void  v8(); // _ZN7S8564C12v8Ev
  virtual void  v9(); // _ZN7S8564C12v9Ev
  virtual void  v10(); // _ZN7S8564C13v10Ev
  virtual void  v11(); // _ZN7S8564C13v11Ev
  S8564C1(); // tgen
};
//SIG(1 S8564C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[14] FC3{ Fi} Fc[3] FC4{ m} Fp}


 S8564C1 ::~S8564C1(){ note_dtor("S8564C1", this);}
void  S8564C1 ::v1(){vfunc_called(this, "_ZN7S8564C12v1Ev");}
void  S8564C1 ::v2(){vfunc_called(this, "_ZN7S8564C12v2Ev");}
void  S8564C1 ::v3(){vfunc_called(this, "_ZN7S8564C12v3Ev");}
void  S8564C1 ::v4(){vfunc_called(this, "_ZN7S8564C12v4Ev");}
void  S8564C1 ::v5(){vfunc_called(this, "_ZN7S8564C12v5Ev");}
void  S8564C1 ::v6(){vfunc_called(this, "_ZN7S8564C12v6Ev");}
void  S8564C1 ::v7(){vfunc_called(this, "_ZN7S8564C12v7Ev");}
void  S8564C1 ::v8(){vfunc_called(this, "_ZN7S8564C12v8Ev");}
void  S8564C1 ::v9(){vfunc_called(this, "_ZN7S8564C12v9Ev");}
void  S8564C1 ::v10(){vfunc_called(this, "_ZN7S8564C13v10Ev");}
void  S8564C1 ::v11(){vfunc_called(this, "_ZN7S8564C13v11Ev");}
S8564C1 ::S8564C1(){ note_ctor("S8564C1", this);} // tgen

static void Test_S8564C1()
{
  extern Class_Descriptor cd_S8564C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S8564C1, buf);
    S8564C1 *dp, &lv = *(dp=new (buf) S8564C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S8564C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8564C1)");
    check_base_class_offset(lv, (S8564C2*), 0, "S8564C1");
    check_field_offset(lv, s8564c1f0, ABISELECT(8,4), "S8564C1.s8564c1f0");
    check_field_offset(lv, s8564c1f1, ABISELECT(120,60), "S8564C1.s8564c1f1");
    check_field_offset(lv, s8564c1f2, ABISELECT(124,64), "S8564C1.s8564c1f2");
    check_field_offset(lv, s8564c1f3, ABISELECT(127,67), "S8564C1.s8564c1f3");
    check_field_offset(lv, s8564c1f4, ABISELECT(128,68), "S8564C1.s8564c1f4");
    test_class_info(&lv, &cd_S8564C1);
    dp->~S8564C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8564C1(Test_S8564C1, "S8564C1", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN7S8564C1C1Ev();
extern void _ZN7S8564C1D1Ev();
Name_Map name_map_S8564C1[] = {
  NSPAIR(_ZN7S8564C1C1Ev),
  NSPAIR(_ZN7S8564C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8564C2;
extern VTBL_ENTRY _ZTI7S8564C2[];
extern  VTBL_ENTRY _ZTV7S8564C2[];
static Base_Class bases_S8564C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8564C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8564C1[];
extern void _ZN7S8564C1D1Ev();
extern void _ZN7S8564C1D0Ev();
extern void _ZN7S8564C23v12Ev();
extern void _ZN7S8564C23v13Ev();
extern void _ZN7S8564C23v14Ev();
extern void _ZN7S8564C23v15Ev();
extern void _ZN7S8564C23v16Ev();
extern void _ZN7S8564C23v17Ev();
extern void _ZN7S8564C23v18Ev();
extern void _ZN7S8564C23v19Ev();
extern void _ZN7S8564C23v20Ev();
extern void _ZN7S8564C23v21Ev();
extern void _ZN7S8564C23v22Ev();
extern void _ZN7S8564C23v23Ev();
extern void _ZN7S8564C12v1Ev();
extern void _ZN7S8564C12v2Ev();
extern void _ZN7S8564C12v3Ev();
extern void _ZN7S8564C12v4Ev();
extern void _ZN7S8564C12v5Ev();
extern void _ZN7S8564C12v6Ev();
extern void _ZN7S8564C12v7Ev();
extern void _ZN7S8564C12v8Ev();
extern void _ZN7S8564C12v9Ev();
extern void _ZN7S8564C13v10Ev();
extern void _ZN7S8564C13v11Ev();
static  VTBL_ENTRY vtc_S8564C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8564C1[0]),
  (VTBL_ENTRY)&_ZN7S8564C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8564C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8564C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8564C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8564C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8564C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8564C1[];
extern  VTBL_ENTRY _ZTV7S8564C1[];
Class_Descriptor cd_S8564C1 = {  "S8564C1", // class name
  bases_S8564C1, 1,
  &(vtc_S8564C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI7S8564C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8564C1),27, //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  S8566C2  {
  virtual  ~S8566C2(); // _ZN7S8566C2D1Ev
  virtual void  v12(); // _ZN7S8566C23v12Ev
  virtual void  v13(); // _ZN7S8566C23v13Ev
  virtual void  v14(); // _ZN7S8566C23v14Ev
  virtual void  v15(); // _ZN7S8566C23v15Ev
  virtual void  v16(); // _ZN7S8566C23v16Ev
  virtual void  v17(); // _ZN7S8566C23v17Ev
  virtual void  v18(); // _ZN7S8566C23v18Ev
  virtual void  v19(); // _ZN7S8566C23v19Ev
  virtual void  v20(); // _ZN7S8566C23v20Ev
  virtual void  v21(); // _ZN7S8566C23v21Ev
  virtual void  v22(); // _ZN7S8566C23v22Ev
  virtual void  v23(); // _ZN7S8566C23v23Ev
  S8566C2(); // tgen
};
//SIG(-1 S8566C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8566C2 ::~S8566C2(){ note_dtor("S8566C2", this);}
void  S8566C2 ::v12(){vfunc_called(this, "_ZN7S8566C23v12Ev");}
void  S8566C2 ::v13(){vfunc_called(this, "_ZN7S8566C23v13Ev");}
void  S8566C2 ::v14(){vfunc_called(this, "_ZN7S8566C23v14Ev");}
void  S8566C2 ::v15(){vfunc_called(this, "_ZN7S8566C23v15Ev");}
void  S8566C2 ::v16(){vfunc_called(this, "_ZN7S8566C23v16Ev");}
void  S8566C2 ::v17(){vfunc_called(this, "_ZN7S8566C23v17Ev");}
void  S8566C2 ::v18(){vfunc_called(this, "_ZN7S8566C23v18Ev");}
void  S8566C2 ::v19(){vfunc_called(this, "_ZN7S8566C23v19Ev");}
void  S8566C2 ::v20(){vfunc_called(this, "_ZN7S8566C23v20Ev");}
void  S8566C2 ::v21(){vfunc_called(this, "_ZN7S8566C23v21Ev");}
void  S8566C2 ::v22(){vfunc_called(this, "_ZN7S8566C23v22Ev");}
void  S8566C2 ::v23(){vfunc_called(this, "_ZN7S8566C23v23Ev");}
S8566C2 ::S8566C2(){ note_ctor("S8566C2", this);} // tgen

static void Test_S8566C2()
{
  extern Class_Descriptor cd_S8566C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8566C2, buf);
    S8566C2 *dp, &lv = *(dp=new (buf) S8566C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8566C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8566C2)");
    test_class_info(&lv, &cd_S8566C2);
    dp->~S8566C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8566C2(Test_S8566C2, "S8566C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8566C2C1Ev();
extern void _ZN7S8566C2D1Ev();
Name_Map name_map_S8566C2[] = {
  NSPAIR(_ZN7S8566C2C1Ev),
  NSPAIR(_ZN7S8566C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8566C2[];
extern void _ZN7S8566C2D1Ev();
extern void _ZN7S8566C2D0Ev();
extern void _ZN7S8566C23v12Ev();
extern void _ZN7S8566C23v13Ev();
extern void _ZN7S8566C23v14Ev();
extern void _ZN7S8566C23v15Ev();
extern void _ZN7S8566C23v16Ev();
extern void _ZN7S8566C23v17Ev();
extern void _ZN7S8566C23v18Ev();
extern void _ZN7S8566C23v19Ev();
extern void _ZN7S8566C23v20Ev();
extern void _ZN7S8566C23v21Ev();
extern void _ZN7S8566C23v22Ev();
extern void _ZN7S8566C23v23Ev();
static  VTBL_ENTRY vtc_S8566C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8566C2[0]),
  (VTBL_ENTRY)&_ZN7S8566C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8566C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8566C2[];
extern  VTBL_ENTRY _ZTV7S8566C2[];
Class_Descriptor cd_S8566C2 = {  "S8566C2", // class name
  0,0,//no base classes
  &(vtc_S8566C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8566C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8566C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8566C1  : S8566C2 {
  void *s8566c1f0[20];
  ::S8565C3_nt s8566c1f1;
  char s8566c1f2[4];
  ::S7856C24 s8566c1f3;
  void *s8566c1f4;
  virtual  ~S8566C1(); // _ZN7S8566C1D1Ev
  virtual void  v1(); // _ZN7S8566C12v1Ev
  virtual void  v2(); // _ZN7S8566C12v2Ev
  virtual void  v3(); // _ZN7S8566C12v3Ev
  virtual void  v4(); // _ZN7S8566C12v4Ev
  virtual void  v5(); // _ZN7S8566C12v5Ev
  virtual void  v6(); // _ZN7S8566C12v6Ev
  virtual void  v7(); // _ZN7S8566C12v7Ev
  virtual void  v8(); // _ZN7S8566C12v8Ev
  virtual void  v9(); // _ZN7S8566C12v9Ev
  virtual void  v10(); // _ZN7S8566C13v10Ev
  virtual void  v11(); // _ZN7S8566C13v11Ev
  S8566C1(); // tgen
};
//SIG(1 S8566C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] FC3{ Fi} Fc[4] FC4{ m} Fp}


 S8566C1 ::~S8566C1(){ note_dtor("S8566C1", this);}
void  S8566C1 ::v1(){vfunc_called(this, "_ZN7S8566C12v1Ev");}
void  S8566C1 ::v2(){vfunc_called(this, "_ZN7S8566C12v2Ev");}
void  S8566C1 ::v3(){vfunc_called(this, "_ZN7S8566C12v3Ev");}
void  S8566C1 ::v4(){vfunc_called(this, "_ZN7S8566C12v4Ev");}
void  S8566C1 ::v5(){vfunc_called(this, "_ZN7S8566C12v5Ev");}
void  S8566C1 ::v6(){vfunc_called(this, "_ZN7S8566C12v6Ev");}
void  S8566C1 ::v7(){vfunc_called(this, "_ZN7S8566C12v7Ev");}
void  S8566C1 ::v8(){vfunc_called(this, "_ZN7S8566C12v8Ev");}
void  S8566C1 ::v9(){vfunc_called(this, "_ZN7S8566C12v9Ev");}
void  S8566C1 ::v10(){vfunc_called(this, "_ZN7S8566C13v10Ev");}
void  S8566C1 ::v11(){vfunc_called(this, "_ZN7S8566C13v11Ev");}
S8566C1 ::S8566C1(){ note_ctor("S8566C1", this);} // tgen

static void Test_S8566C1()
{
  extern Class_Descriptor cd_S8566C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S8566C1, buf);
    S8566C1 *dp, &lv = *(dp=new (buf) S8566C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S8566C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8566C1)");
    check_base_class_offset(lv, (S8566C2*), 0, "S8566C1");
    check_field_offset(lv, s8566c1f0, ABISELECT(8,4), "S8566C1.s8566c1f0");
    check_field_offset(lv, s8566c1f1, ABISELECT(168,84), "S8566C1.s8566c1f1");
    check_field_offset(lv, s8566c1f2, ABISELECT(172,88), "S8566C1.s8566c1f2");
    check_field_offset(lv, s8566c1f3, ABISELECT(176,92), "S8566C1.s8566c1f3");
    check_field_offset(lv, s8566c1f4, ABISELECT(184,96), "S8566C1.s8566c1f4");
    test_class_info(&lv, &cd_S8566C1);
    dp->~S8566C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8566C1(Test_S8566C1, "S8566C1", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S8566C1C1Ev();
extern void _ZN7S8566C1D1Ev();
Name_Map name_map_S8566C1[] = {
  NSPAIR(_ZN7S8566C1C1Ev),
  NSPAIR(_ZN7S8566C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8566C2;
extern VTBL_ENTRY _ZTI7S8566C2[];
extern  VTBL_ENTRY _ZTV7S8566C2[];
static Base_Class bases_S8566C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8566C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8566C1[];
extern void _ZN7S8566C1D1Ev();
extern void _ZN7S8566C1D0Ev();
extern void _ZN7S8566C23v12Ev();
extern void _ZN7S8566C23v13Ev();
extern void _ZN7S8566C23v14Ev();
extern void _ZN7S8566C23v15Ev();
extern void _ZN7S8566C23v16Ev();
extern void _ZN7S8566C23v17Ev();
extern void _ZN7S8566C23v18Ev();
extern void _ZN7S8566C23v19Ev();
extern void _ZN7S8566C23v20Ev();
extern void _ZN7S8566C23v21Ev();
extern void _ZN7S8566C23v22Ev();
extern void _ZN7S8566C23v23Ev();
extern void _ZN7S8566C12v1Ev();
extern void _ZN7S8566C12v2Ev();
extern void _ZN7S8566C12v3Ev();
extern void _ZN7S8566C12v4Ev();
extern void _ZN7S8566C12v5Ev();
extern void _ZN7S8566C12v6Ev();
extern void _ZN7S8566C12v7Ev();
extern void _ZN7S8566C12v8Ev();
extern void _ZN7S8566C12v9Ev();
extern void _ZN7S8566C13v10Ev();
extern void _ZN7S8566C13v11Ev();
static  VTBL_ENTRY vtc_S8566C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8566C1[0]),
  (VTBL_ENTRY)&_ZN7S8566C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8566C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8566C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8566C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8566C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8566C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8566C1[];
extern  VTBL_ENTRY _ZTV7S8566C1[];
Class_Descriptor cd_S8566C1 = {  "S8566C1", // class name
  bases_S8566C1, 1,
  &(vtc_S8566C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S8566C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8566C1),27, //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  S8569C2  {
  virtual  ~S8569C2(); // _ZN7S8569C2D1Ev
  virtual void  v12(); // _ZN7S8569C23v12Ev
  virtual void  v13(); // _ZN7S8569C23v13Ev
  virtual void  v14(); // _ZN7S8569C23v14Ev
  virtual void  v15(); // _ZN7S8569C23v15Ev
  virtual void  v16(); // _ZN7S8569C23v16Ev
  virtual void  v17(); // _ZN7S8569C23v17Ev
  virtual void  v18(); // _ZN7S8569C23v18Ev
  virtual void  v19(); // _ZN7S8569C23v19Ev
  virtual void  v20(); // _ZN7S8569C23v20Ev
  virtual void  v21(); // _ZN7S8569C23v21Ev
  virtual void  v22(); // _ZN7S8569C23v22Ev
  virtual void  v23(); // _ZN7S8569C23v23Ev
  S8569C2(); // tgen
};
//SIG(-1 S8569C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8569C2 ::~S8569C2(){ note_dtor("S8569C2", this);}
void  S8569C2 ::v12(){vfunc_called(this, "_ZN7S8569C23v12Ev");}
void  S8569C2 ::v13(){vfunc_called(this, "_ZN7S8569C23v13Ev");}
void  S8569C2 ::v14(){vfunc_called(this, "_ZN7S8569C23v14Ev");}
void  S8569C2 ::v15(){vfunc_called(this, "_ZN7S8569C23v15Ev");}
void  S8569C2 ::v16(){vfunc_called(this, "_ZN7S8569C23v16Ev");}
void  S8569C2 ::v17(){vfunc_called(this, "_ZN7S8569C23v17Ev");}
void  S8569C2 ::v18(){vfunc_called(this, "_ZN7S8569C23v18Ev");}
void  S8569C2 ::v19(){vfunc_called(this, "_ZN7S8569C23v19Ev");}
void  S8569C2 ::v20(){vfunc_called(this, "_ZN7S8569C23v20Ev");}
void  S8569C2 ::v21(){vfunc_called(this, "_ZN7S8569C23v21Ev");}
void  S8569C2 ::v22(){vfunc_called(this, "_ZN7S8569C23v22Ev");}
void  S8569C2 ::v23(){vfunc_called(this, "_ZN7S8569C23v23Ev");}
S8569C2 ::S8569C2(){ note_ctor("S8569C2", this);} // tgen

static void Test_S8569C2()
{
  extern Class_Descriptor cd_S8569C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8569C2, buf);
    S8569C2 *dp, &lv = *(dp=new (buf) S8569C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8569C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8569C2)");
    test_class_info(&lv, &cd_S8569C2);
    dp->~S8569C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8569C2(Test_S8569C2, "S8569C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8569C2C1Ev();
extern void _ZN7S8569C2D1Ev();
Name_Map name_map_S8569C2[] = {
  NSPAIR(_ZN7S8569C2C1Ev),
  NSPAIR(_ZN7S8569C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8569C2[];
extern void _ZN7S8569C2D1Ev();
extern void _ZN7S8569C2D0Ev();
extern void _ZN7S8569C23v12Ev();
extern void _ZN7S8569C23v13Ev();
extern void _ZN7S8569C23v14Ev();
extern void _ZN7S8569C23v15Ev();
extern void _ZN7S8569C23v16Ev();
extern void _ZN7S8569C23v17Ev();
extern void _ZN7S8569C23v18Ev();
extern void _ZN7S8569C23v19Ev();
extern void _ZN7S8569C23v20Ev();
extern void _ZN7S8569C23v21Ev();
extern void _ZN7S8569C23v22Ev();
extern void _ZN7S8569C23v23Ev();
static  VTBL_ENTRY vtc_S8569C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8569C2[0]),
  (VTBL_ENTRY)&_ZN7S8569C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8569C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8569C2[];
extern  VTBL_ENTRY _ZTV7S8569C2[];
Class_Descriptor cd_S8569C2 = {  "S8569C2", // class name
  0,0,//no base classes
  &(vtc_S8569C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8569C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8569C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8569C1  : S8569C2 {
  void *s8569c1f0[9];
  int s8569c1f1;
  ::S8565C3_nt s8569c1f2;
  char s8569c1f3;
  void *s8569c1f4[18];
  virtual  ~S8569C1(); // _ZN7S8569C1D1Ev
  virtual void  v1(); // _ZN7S8569C12v1Ev
  virtual void  v2(); // _ZN7S8569C12v2Ev
  virtual void  v3(); // _ZN7S8569C12v3Ev
  virtual void  v4(); // _ZN7S8569C12v4Ev
  virtual void  v5(); // _ZN7S8569C12v5Ev
  virtual void  v6(); // _ZN7S8569C12v6Ev
  virtual void  v7(); // _ZN7S8569C12v7Ev
  virtual void  v8(); // _ZN7S8569C12v8Ev
  virtual void  v9(); // _ZN7S8569C12v9Ev
  virtual void  v10(); // _ZN7S8569C13v10Ev
  virtual void  v11(); // _ZN7S8569C13v11Ev
  S8569C1(); // tgen
};
//SIG(1 S8569C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[9] Fi FC3{ Fi} Fc Fp[18]}


 S8569C1 ::~S8569C1(){ note_dtor("S8569C1", this);}
void  S8569C1 ::v1(){vfunc_called(this, "_ZN7S8569C12v1Ev");}
void  S8569C1 ::v2(){vfunc_called(this, "_ZN7S8569C12v2Ev");}
void  S8569C1 ::v3(){vfunc_called(this, "_ZN7S8569C12v3Ev");}
void  S8569C1 ::v4(){vfunc_called(this, "_ZN7S8569C12v4Ev");}
void  S8569C1 ::v5(){vfunc_called(this, "_ZN7S8569C12v5Ev");}
void  S8569C1 ::v6(){vfunc_called(this, "_ZN7S8569C12v6Ev");}
void  S8569C1 ::v7(){vfunc_called(this, "_ZN7S8569C12v7Ev");}
void  S8569C1 ::v8(){vfunc_called(this, "_ZN7S8569C12v8Ev");}
void  S8569C1 ::v9(){vfunc_called(this, "_ZN7S8569C12v9Ev");}
void  S8569C1 ::v10(){vfunc_called(this, "_ZN7S8569C13v10Ev");}
void  S8569C1 ::v11(){vfunc_called(this, "_ZN7S8569C13v11Ev");}
S8569C1 ::S8569C1(){ note_ctor("S8569C1", this);} // tgen

static void Test_S8569C1()
{
  extern Class_Descriptor cd_S8569C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,32)];
    init_test(&cd_S8569C1, buf);
    S8569C1 *dp, &lv = *(dp=new (buf) S8569C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,124), "sizeof(S8569C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8569C1)");
    check_base_class_offset(lv, (S8569C2*), 0, "S8569C1");
    check_field_offset(lv, s8569c1f0, ABISELECT(8,4), "S8569C1.s8569c1f0");
    check_field_offset(lv, s8569c1f1, ABISELECT(80,40), "S8569C1.s8569c1f1");
    check_field_offset(lv, s8569c1f2, ABISELECT(84,44), "S8569C1.s8569c1f2");
    check_field_offset(lv, s8569c1f3, ABISELECT(88,48), "S8569C1.s8569c1f3");
    check_field_offset(lv, s8569c1f4, ABISELECT(96,52), "S8569C1.s8569c1f4");
    test_class_info(&lv, &cd_S8569C1);
    dp->~S8569C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8569C1(Test_S8569C1, "S8569C1", ABISELECT(240,124));

#else // __cplusplus

extern void _ZN7S8569C1C1Ev();
extern void _ZN7S8569C1D1Ev();
Name_Map name_map_S8569C1[] = {
  NSPAIR(_ZN7S8569C1C1Ev),
  NSPAIR(_ZN7S8569C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8569C2;
extern VTBL_ENTRY _ZTI7S8569C2[];
extern  VTBL_ENTRY _ZTV7S8569C2[];
static Base_Class bases_S8569C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8569C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8569C1[];
extern void _ZN7S8569C1D1Ev();
extern void _ZN7S8569C1D0Ev();
extern void _ZN7S8569C23v12Ev();
extern void _ZN7S8569C23v13Ev();
extern void _ZN7S8569C23v14Ev();
extern void _ZN7S8569C23v15Ev();
extern void _ZN7S8569C23v16Ev();
extern void _ZN7S8569C23v17Ev();
extern void _ZN7S8569C23v18Ev();
extern void _ZN7S8569C23v19Ev();
extern void _ZN7S8569C23v20Ev();
extern void _ZN7S8569C23v21Ev();
extern void _ZN7S8569C23v22Ev();
extern void _ZN7S8569C23v23Ev();
extern void _ZN7S8569C12v1Ev();
extern void _ZN7S8569C12v2Ev();
extern void _ZN7S8569C12v3Ev();
extern void _ZN7S8569C12v4Ev();
extern void _ZN7S8569C12v5Ev();
extern void _ZN7S8569C12v6Ev();
extern void _ZN7S8569C12v7Ev();
extern void _ZN7S8569C12v8Ev();
extern void _ZN7S8569C12v9Ev();
extern void _ZN7S8569C13v10Ev();
extern void _ZN7S8569C13v11Ev();
static  VTBL_ENTRY vtc_S8569C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8569C1[0]),
  (VTBL_ENTRY)&_ZN7S8569C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8569C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8569C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8569C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8569C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8569C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8569C1[];
extern  VTBL_ENTRY _ZTV7S8569C1[];
Class_Descriptor cd_S8569C1 = {  "S8569C1", // class name
  bases_S8569C1, 1,
  &(vtc_S8569C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,124), // object size
  NSPAIRA(_ZTI7S8569C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8569C1),27, //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  S4589C3  {
  virtual  ~S4589C3(); // _ZN7S4589C3D1Ev
  virtual void  v2(); // _ZN7S4589C32v2Ev
  S4589C3(); // tgen
};
//SIG(-1 S4589C3) C1{ vd v1}


 S4589C3 ::~S4589C3(){ note_dtor("S4589C3", this);}
void  S4589C3 ::v2(){vfunc_called(this, "_ZN7S4589C32v2Ev");}
S4589C3 ::S4589C3(){ note_ctor("S4589C3", this);} // tgen

static void Test_S4589C3()
{
  extern Class_Descriptor cd_S4589C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4589C3, buf);
    S4589C3 *dp, &lv = *(dp=new (buf) S4589C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4589C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C3)");
    test_class_info(&lv, &cd_S4589C3);
    dp->~S4589C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C3(Test_S4589C3, "S4589C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4589C3C1Ev();
extern void _ZN7S4589C3D1Ev();
Name_Map name_map_S4589C3[] = {
  NSPAIR(_ZN7S4589C3C1Ev),
  NSPAIR(_ZN7S4589C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4589C3[];
extern void _ZN7S4589C3D1Ev();
extern void _ZN7S4589C3D0Ev();
extern void _ZN7S4589C32v2Ev();
static  VTBL_ENTRY vtc_S4589C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C3[0]),
  (VTBL_ENTRY)&_ZN7S4589C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
Class_Descriptor cd_S4589C3 = {  "S4589C3", // class name
  0,0,//no base classes
  &(vtc_S4589C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4589C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4589C3),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  S4589C2  : S4589C3 {
  char s4589c2f0;
  ::S18423C15_nt s4589c2f1;
  ::S18423C15_nt s4589c2f2;
  ::S18423C15_nt s4589c2f3;
  void *s4589c2f4;
  ::S18423C15_nt s4589c2f5;
  ::S18423C15_nt s4589c2f6;
  int s4589c2f7;
  void *s4589c2f8[3];
  virtual  ~S4589C2(); // _ZN7S4589C2D1Ev
  virtual void  v3(); // _ZN7S4589C22v3Ev
  virtual void  v4(); // _ZN7S4589C22v4Ev
  S4589C2(); // tgen
};
//SIG(-1 S4589C2) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S4589C2 ::~S4589C2(){ note_dtor("S4589C2", this);}
void  S4589C2 ::v3(){vfunc_called(this, "_ZN7S4589C22v3Ev");}
void  S4589C2 ::v4(){vfunc_called(this, "_ZN7S4589C22v4Ev");}
S4589C2 ::S4589C2(){ note_ctor("S4589C2", this);} // tgen

static void Test_S4589C2()
{
  extern Class_Descriptor cd_S4589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S4589C2, buf);
    S4589C2 *dp, &lv = *(dp=new (buf) S4589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S4589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C2)");
    check_base_class_offset(lv, (S4589C3*), 0, "S4589C2");
    check_field_offset(lv, s4589c2f0, ABISELECT(8,4), "S4589C2.s4589c2f0");
    check_field_offset(lv, s4589c2f1, ABISELECT(16,8), "S4589C2.s4589c2f1");
    check_field_offset(lv, s4589c2f2, ABISELECT(32,20), "S4589C2.s4589c2f2");
    check_field_offset(lv, s4589c2f3, ABISELECT(48,32), "S4589C2.s4589c2f3");
    check_field_offset(lv, s4589c2f4, ABISELECT(64,44), "S4589C2.s4589c2f4");
    check_field_offset(lv, s4589c2f5, ABISELECT(72,48), "S4589C2.s4589c2f5");
    check_field_offset(lv, s4589c2f6, ABISELECT(88,60), "S4589C2.s4589c2f6");
    check_field_offset(lv, s4589c2f7, ABISELECT(104,72), "S4589C2.s4589c2f7");
    check_field_offset(lv, s4589c2f8, ABISELECT(112,76), "S4589C2.s4589c2f8");
    test_class_info(&lv, &cd_S4589C2);
    dp->~S4589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C2(Test_S4589C2, "S4589C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S4589C2C1Ev();
extern void _ZN7S4589C2D1Ev();
Name_Map name_map_S4589C2[] = {
  NSPAIR(_ZN7S4589C2C1Ev),
  NSPAIR(_ZN7S4589C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4589C3;
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
static Base_Class bases_S4589C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4589C2[];
extern void _ZN7S4589C2D1Ev();
extern void _ZN7S4589C2D0Ev();
extern void _ZN7S4589C32v2Ev();
extern void _ZN7S4589C22v3Ev();
extern void _ZN7S4589C22v4Ev();
static  VTBL_ENTRY vtc_S4589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C2[0]),
  (VTBL_ENTRY)&_ZN7S4589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4589C2[];
extern  VTBL_ENTRY _ZTV7S4589C2[];
Class_Descriptor cd_S4589C2 = {  "S4589C2", // class name
  bases_S4589C2, 1,
  &(vtc_S4589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S4589C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4589C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4589C1  : S4589C2 {
  int s4589c1f0;
  ::S17556C28_nt s4589c1f1;
  ::S18423C15_nt s4589c1f2;
  ::S18423C15_nt s4589c1f3;
  ::S18423C15_nt s4589c1f4;
  ::S18423C15_nt s4589c1f5;
  ::S18423C15_nt s4589c1f6;
  ::S18423C15_nt s4589c1f7;
  virtual  ~S4589C1(); // _ZN7S4589C1D1Ev
  virtual void  v1(); // _ZN7S4589C12v1Ev
  S4589C1(); // tgen
};
//SIG(1 S4589C1) C1{ BC2{ BC3{ vd v2} vd v3 v4 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 Fi FC6{ m Fp[2]} FC4 FC4 FC4 FC4 FC4 FC4}


 S4589C1 ::~S4589C1(){ note_dtor("S4589C1", this);}
void  S4589C1 ::v1(){vfunc_called(this, "_ZN7S4589C12v1Ev");}
S4589C1 ::S4589C1(){ note_ctor("S4589C1", this);} // tgen

static void Test_S4589C1()
{
  extern Class_Descriptor cd_S4589C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,44)];
    init_test(&cd_S4589C1, buf);
    S4589C1 *dp, &lv = *(dp=new (buf) S4589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,172), "sizeof(S4589C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4589C1)");
    check_base_class_offset(lv, (S4589C3*)(S4589C2*), 0, "S4589C1");
    check_base_class_offset(lv, (S4589C2*), 0, "S4589C1");
    check_field_offset(lv, s4589c1f0, ABISELECT(136,88), "S4589C1.s4589c1f0");
    check_field_offset(lv, s4589c1f1, ABISELECT(144,92), "S4589C1.s4589c1f1");
    check_field_offset(lv, s4589c1f2, ABISELECT(160,100), "S4589C1.s4589c1f2");
    check_field_offset(lv, s4589c1f3, ABISELECT(176,112), "S4589C1.s4589c1f3");
    check_field_offset(lv, s4589c1f4, ABISELECT(192,124), "S4589C1.s4589c1f4");
    check_field_offset(lv, s4589c1f5, ABISELECT(208,136), "S4589C1.s4589c1f5");
    check_field_offset(lv, s4589c1f6, ABISELECT(224,148), "S4589C1.s4589c1f6");
    check_field_offset(lv, s4589c1f7, ABISELECT(240,160), "S4589C1.s4589c1f7");
    test_class_info(&lv, &cd_S4589C1);
    dp->~S4589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4589C1(Test_S4589C1, "S4589C1", ABISELECT(256,172));

#else // __cplusplus

extern void _ZN7S4589C1C1Ev();
extern void _ZN7S4589C1D1Ev();
Name_Map name_map_S4589C1[] = {
  NSPAIR(_ZN7S4589C1C1Ev),
  NSPAIR(_ZN7S4589C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4589C3;
extern VTBL_ENTRY _ZTI7S4589C3[];
extern  VTBL_ENTRY _ZTV7S4589C3[];
extern Class_Descriptor cd_S4589C2;
extern VTBL_ENTRY _ZTI7S4589C2[];
extern  VTBL_ENTRY _ZTV7S4589C2[];
static Base_Class bases_S4589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4589C1[];
extern void _ZN7S4589C1D1Ev();
extern void _ZN7S4589C1D0Ev();
extern void _ZN7S4589C32v2Ev();
extern void _ZN7S4589C22v3Ev();
extern void _ZN7S4589C22v4Ev();
extern void _ZN7S4589C12v1Ev();
static  VTBL_ENTRY vtc_S4589C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4589C1[0]),
  (VTBL_ENTRY)&_ZN7S4589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4589C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4589C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4589C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4589C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4589C1[];
extern  VTBL_ENTRY _ZTV7S4589C1[];
Class_Descriptor cd_S4589C1 = {  "S4589C1", // class name
  bases_S4589C1, 2,
  &(vtc_S4589C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,172), // object size
  NSPAIRA(_ZTI7S4589C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4589C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7592C3  {
  virtual void  v3(); // _ZN7S7592C32v3Ev
  ~S7592C3(); // tgen
  S7592C3(); // tgen
};
//SIG(-1 S7592C3) C1{ v1}


void  S7592C3 ::v3(){vfunc_called(this, "_ZN7S7592C32v3Ev");}
S7592C3 ::~S7592C3(){ note_dtor("S7592C3", this);} // tgen
S7592C3 ::S7592C3(){ note_ctor("S7592C3", this);} // tgen

static void Test_S7592C3()
{
  extern Class_Descriptor cd_S7592C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7592C3, buf);
    S7592C3 *dp, &lv = *(dp=new (buf) S7592C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7592C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C3)");
    test_class_info(&lv, &cd_S7592C3);
    dp->~S7592C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C3(Test_S7592C3, "S7592C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7592C3C1Ev();
extern void _ZN7S7592C3D1Ev();
Name_Map name_map_S7592C3[] = {
  NSPAIR(_ZN7S7592C3C1Ev),
  NSPAIR(_ZN7S7592C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7592C3[];
extern void _ZN7S7592C32v3Ev();
static  VTBL_ENTRY vtc_S7592C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C3[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
Class_Descriptor cd_S7592C3 = {  "S7592C3", // class name
  0,0,//no base classes
  &(vtc_S7592C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7592C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7592C3),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  S7592C2  : virtual S7592C3 {
  int s7592c2f0;
  __tsi64 s7592c2f1;
  int s7592c2f2;
  char s7592c2f3;
  virtual void  v4(); // _ZN7S7592C22v4Ev
  virtual void  v5(); // _ZN7S7592C22v5Ev
  virtual void  v6(); // _ZN7S7592C22v6Ev
  virtual void  v7(); // _ZN7S7592C22v7Ev
  ~S7592C2(); // tgen
  S7592C2(); // tgen
};
//SIG(-1 S7592C2) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S7592C2 ::v4(){vfunc_called(this, "_ZN7S7592C22v4Ev");}
void  S7592C2 ::v5(){vfunc_called(this, "_ZN7S7592C22v5Ev");}
void  S7592C2 ::v6(){vfunc_called(this, "_ZN7S7592C22v6Ev");}
void  S7592C2 ::v7(){vfunc_called(this, "_ZN7S7592C22v7Ev");}
S7592C2 ::~S7592C2(){ note_dtor("S7592C2", this);} // tgen
S7592C2 ::S7592C2(){ note_ctor("S7592C2", this);} // tgen

static void Test_S7592C2()
{
  extern Class_Descriptor cd_S7592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7592C2, buf);
    S7592C2 *dp, &lv = *(dp=new (buf) S7592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C2)");
    check_base_class_offset(lv, (S7592C3*), 0, "S7592C2");
    check_field_offset(lv, s7592c2f0, ABISELECT(8,4), "S7592C2.s7592c2f0");
    check_field_offset(lv, s7592c2f1, ABISELECT(16,8), "S7592C2.s7592c2f1");
    check_field_offset(lv, s7592c2f2, ABISELECT(24,16), "S7592C2.s7592c2f2");
    check_field_offset(lv, s7592c2f3, ABISELECT(28,20), "S7592C2.s7592c2f3");
    test_class_info(&lv, &cd_S7592C2);
    dp->~S7592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C2(Test_S7592C2, "S7592C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S7592C2C1Ev();
extern void _ZN7S7592C2D1Ev();
Name_Map name_map_S7592C2[] = {
  NSPAIR(_ZN7S7592C2C1Ev),
  NSPAIR(_ZN7S7592C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C3;
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
static Base_Class bases_S7592C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C3,    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 _ZTI7S7592C2[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
static  VTBL_ENTRY vtc_S7592C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C2[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
};
extern VTBL_ENTRY _ZTV7S7592C2[];
static  VTT_ENTRY vtt_S7592C2[] = {
  {&(_ZTV7S7592C2[4]),  4,9},
  {&(_ZTV7S7592C2[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7592C2[];
extern  VTBL_ENTRY _ZTV7S7592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C2[];
Class_Descriptor cd_S7592C2 = {  "S7592C2", // class name
  bases_S7592C2, 1,
  &(vtc_S7592C2[0]), // expected_vtbl_contents
  &(vtt_S7592C2[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S7592C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7592C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7592C2),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  S7592C5  {
  int s7592c5f0;
  char s7592c5f1[2];
  virtual void  v8(); // _ZN7S7592C52v8Ev
  virtual void  v9(); // _ZN7S7592C52v9Ev
  virtual void  v10(); // _ZN7S7592C53v10Ev
  virtual void  v11(); // _ZN7S7592C53v11Ev
  virtual void  v12(); // _ZN7S7592C53v12Ev
  ~S7592C5(); // tgen
  S7592C5(); // tgen
};
//SIG(-1 S7592C5) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S7592C5 ::v8(){vfunc_called(this, "_ZN7S7592C52v8Ev");}
void  S7592C5 ::v9(){vfunc_called(this, "_ZN7S7592C52v9Ev");}
void  S7592C5 ::v10(){vfunc_called(this, "_ZN7S7592C53v10Ev");}
void  S7592C5 ::v11(){vfunc_called(this, "_ZN7S7592C53v11Ev");}
void  S7592C5 ::v12(){vfunc_called(this, "_ZN7S7592C53v12Ev");}
S7592C5 ::~S7592C5(){ note_dtor("S7592C5", this);} // tgen
S7592C5 ::S7592C5(){ note_ctor("S7592C5", this);} // tgen

static void Test_S7592C5()
{
  extern Class_Descriptor cd_S7592C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7592C5, buf);
    S7592C5 *dp, &lv = *(dp=new (buf) S7592C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7592C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C5)");
    check_field_offset(lv, s7592c5f0, ABISELECT(8,4), "S7592C5.s7592c5f0");
    check_field_offset(lv, s7592c5f1, ABISELECT(12,8), "S7592C5.s7592c5f1");
    test_class_info(&lv, &cd_S7592C5);
    dp->~S7592C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C5(Test_S7592C5, "S7592C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7592C5C1Ev();
extern void _ZN7S7592C5D1Ev();
Name_Map name_map_S7592C5[] = {
  NSPAIR(_ZN7S7592C5C1Ev),
  NSPAIR(_ZN7S7592C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7592C5[];
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
static  VTBL_ENTRY vtc_S7592C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C5[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
};
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
Class_Descriptor cd_S7592C5 = {  "S7592C5", // class name
  0,0,//no base classes
  &(vtc_S7592C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7592C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7592C5),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  S7592C4  : S7592C5 {
  virtual  ~S7592C4(); // _ZN7S7592C4D1Ev
  virtual void  v13(); // _ZN7S7592C43v13Ev
  virtual void  v14(); // _ZN7S7592C43v14Ev
  virtual void  v15(); // _ZN7S7592C43v15Ev
  virtual void  v16(); // _ZN7S7592C43v16Ev
  virtual void  v17(); // _ZN7S7592C43v17Ev
  virtual void  v18(); // _ZN7S7592C43v18Ev
  virtual void  v19(); // _ZN7S7592C43v19Ev
  virtual void  v20(); // _ZN7S7592C43v20Ev
  S7592C4(); // tgen
};
//SIG(-1 S7592C4) C1{ BC2{ v9 v10 v11 v12 v13 Fi Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S7592C4 ::~S7592C4(){ note_dtor("S7592C4", this);}
void  S7592C4 ::v13(){vfunc_called(this, "_ZN7S7592C43v13Ev");}
void  S7592C4 ::v14(){vfunc_called(this, "_ZN7S7592C43v14Ev");}
void  S7592C4 ::v15(){vfunc_called(this, "_ZN7S7592C43v15Ev");}
void  S7592C4 ::v16(){vfunc_called(this, "_ZN7S7592C43v16Ev");}
void  S7592C4 ::v17(){vfunc_called(this, "_ZN7S7592C43v17Ev");}
void  S7592C4 ::v18(){vfunc_called(this, "_ZN7S7592C43v18Ev");}
void  S7592C4 ::v19(){vfunc_called(this, "_ZN7S7592C43v19Ev");}
void  S7592C4 ::v20(){vfunc_called(this, "_ZN7S7592C43v20Ev");}
S7592C4 ::S7592C4(){ note_ctor("S7592C4", this);} // tgen

static void Test_S7592C4()
{
  extern Class_Descriptor cd_S7592C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7592C4, buf);
    S7592C4 *dp, &lv = *(dp=new (buf) S7592C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7592C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C4)");
    check_base_class_offset(lv, (S7592C5*), 0, "S7592C4");
    test_class_info(&lv, &cd_S7592C4);
    dp->~S7592C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C4(Test_S7592C4, "S7592C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7592C4C1Ev();
extern void _ZN7S7592C4D1Ev();
Name_Map name_map_S7592C4[] = {
  NSPAIR(_ZN7S7592C4C1Ev),
  NSPAIR(_ZN7S7592C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C5;
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
static Base_Class bases_S7592C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S7592C4[];
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
extern void _ZN7S7592C4D1Ev();
extern void _ZN7S7592C4D0Ev();
extern void _ZN7S7592C43v13Ev();
extern void _ZN7S7592C43v14Ev();
extern void _ZN7S7592C43v15Ev();
extern void _ZN7S7592C43v16Ev();
extern void _ZN7S7592C43v17Ev();
extern void _ZN7S7592C43v18Ev();
extern void _ZN7S7592C43v19Ev();
extern void _ZN7S7592C43v20Ev();
static  VTBL_ENTRY vtc_S7592C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C4[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7592C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7592C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v20Ev,
};
extern VTBL_ENTRY _ZTI7S7592C4[];
extern  VTBL_ENTRY _ZTV7S7592C4[];
Class_Descriptor cd_S7592C4 = {  "S7592C4", // class name
  bases_S7592C4, 1,
  &(vtc_S7592C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7592C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7592C4),17, //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  S7592C1  : S7592C2 , S7592C4 {
  virtual  ~S7592C1(); // _ZN7S7592C1D2Ev
  virtual void  v1(); // _ZN7S7592C12v1Ev
  virtual void  v2(); // _ZN7S7592C12v2Ev
  S7592C1(); // tgen
};
//SIG(1 S7592C1) C1{ BC2{ VBC3{ v3} v4 v5 v6 v7 Fi FL Fi Fc} BC4{ BC5{ v8 v9 v10 v11 v12 Fi Fc[2]} vd v13 v14 v15 v16 v17 v18 v19 v20} vd v1 v2}


 S7592C1 ::~S7592C1(){ note_dtor("S7592C1", this);}
void  S7592C1 ::v1(){vfunc_called(this, "_ZN7S7592C12v1Ev");}
void  S7592C1 ::v2(){vfunc_called(this, "_ZN7S7592C12v2Ev");}
S7592C1 ::S7592C1(){ note_ctor("S7592C1", this);} // tgen

static void Test_S7592C1()
{
  extern Class_Descriptor cd_S7592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S7592C1, buf);
    S7592C1 *dp, &lv = *(dp=new (buf) S7592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7592C1)");
    check_base_class_offset(lv, (S7592C3*)(S7592C2*), 0, "S7592C1");
    check_base_class_offset(lv, (S7592C2*), 0, "S7592C1");
    check_base_class_offset(lv, (S7592C5*)(S7592C4*), ABISELECT(32,24), "S7592C1");
    check_base_class_offset(lv, (S7592C4*), ABISELECT(32,24), "S7592C1");
    test_class_info(&lv, &cd_S7592C1);
    dp->~S7592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7592C1(Test_S7592C1, "S7592C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S7592C1C1Ev();
extern void _ZN7S7592C1D2Ev();
Name_Map name_map_S7592C1[] = {
  NSPAIR(_ZN7S7592C1C1Ev),
  NSPAIR(_ZN7S7592C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7592C3;
extern VTBL_ENTRY _ZTI7S7592C3[];
extern  VTBL_ENTRY _ZTV7S7592C3[];
extern Class_Descriptor cd_S7592C2;
extern VTBL_ENTRY _ZTI7S7592C2[];
extern  VTBL_ENTRY _ZTV7S7592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C2[];
extern Class_Descriptor cd_S7592C5;
extern VTBL_ENTRY _ZTI7S7592C5[];
extern  VTBL_ENTRY _ZTV7S7592C5[];
extern Class_Descriptor cd_S7592C4;
extern VTBL_ENTRY _ZTI7S7592C4[];
extern  VTBL_ENTRY _ZTV7S7592C4[];
static Base_Class bases_S7592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7592C3,    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_S7592C2,    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},
  {&cd_S7592C5,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7592C4,    ABISELECT(32,24), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7592C1[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
extern void _ZN7S7592C1D1Ev();
extern void _ZN7S7592C1D0Ev();
extern void _ZN7S7592C12v1Ev();
extern void _ZN7S7592C12v2Ev();
extern void _ZN7S7592C52v8Ev();
extern void _ZN7S7592C52v9Ev();
extern void _ZN7S7592C53v10Ev();
extern void _ZN7S7592C53v11Ev();
extern void _ZN7S7592C53v12Ev();
extern void ABISELECT(_ZThn32_N7S7592C1D1Ev,_ZThn24_N7S7592C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7592C1D0Ev,_ZThn24_N7S7592C1D0Ev)();
extern void _ZN7S7592C43v13Ev();
extern void _ZN7S7592C43v14Ev();
extern void _ZN7S7592C43v15Ev();
extern void _ZN7S7592C43v16Ev();
extern void _ZN7S7592C43v17Ev();
extern void _ZN7S7592C43v18Ev();
extern void _ZN7S7592C43v19Ev();
extern void _ZN7S7592C43v20Ev();
static  VTBL_ENTRY vtc_S7592C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C1[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7592C12v2Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7592C1[0]),
  (VTBL_ENTRY)&_ZN7S7592C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7592C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7592C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7592C1D1Ev,_ZThn24_N7S7592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7592C1D0Ev,_ZThn24_N7S7592C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7592C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7592C43v20Ev,
};
extern VTBL_ENTRY _ZTV7S7592C1[];
extern void _ZN7S7592C32v3Ev();
extern void _ZN7S7592C22v4Ev();
extern void _ZN7S7592C22v5Ev();
extern void _ZN7S7592C22v6Ev();
extern void _ZN7S7592C22v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7592C2__7S7592C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7592C2[0]),
  (VTBL_ENTRY)&_ZN7S7592C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7592C22v7Ev,
};
static  VTT_ENTRY vtt_S7592C1[] = {
  {&(_ZTV7S7592C1[4]),  4,30},
  {&(_tg__ZTV7S7592C2__7S7592C1[4]),  4,9},
  {&(_tg__ZTV7S7592C2__7S7592C1[4]),  4,9},
  {&(_ZTV7S7592C1[4]),  4,30},
};
extern VTBL_ENTRY _ZTI7S7592C1[];
extern  VTBL_ENTRY _ZTV7S7592C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7592C1[];
Class_Descriptor cd_S7592C1 = {  "S7592C1", // class name
  bases_S7592C1, 4,
  &(vtc_S7592C1[0]), // expected_vtbl_contents
  &(vtt_S7592C1[0]), // expected_vtt_contents
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S7592C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7592C1),30, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7592C1),4, //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  S8567C2  {
  virtual  ~S8567C2(); // _ZN7S8567C2D1Ev
  virtual void  v12(); // _ZN7S8567C23v12Ev
  virtual void  v13(); // _ZN7S8567C23v13Ev
  virtual void  v14(); // _ZN7S8567C23v14Ev
  virtual void  v15(); // _ZN7S8567C23v15Ev
  virtual void  v16(); // _ZN7S8567C23v16Ev
  virtual void  v17(); // _ZN7S8567C23v17Ev
  virtual void  v18(); // _ZN7S8567C23v18Ev
  virtual void  v19(); // _ZN7S8567C23v19Ev
  virtual void  v20(); // _ZN7S8567C23v20Ev
  virtual void  v21(); // _ZN7S8567C23v21Ev
  virtual void  v22(); // _ZN7S8567C23v22Ev
  virtual void  v23(); // _ZN7S8567C23v23Ev
  S8567C2(); // tgen
};
//SIG(-1 S8567C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8567C2 ::~S8567C2(){ note_dtor("S8567C2", this);}
void  S8567C2 ::v12(){vfunc_called(this, "_ZN7S8567C23v12Ev");}
void  S8567C2 ::v13(){vfunc_called(this, "_ZN7S8567C23v13Ev");}
void  S8567C2 ::v14(){vfunc_called(this, "_ZN7S8567C23v14Ev");}
void  S8567C2 ::v15(){vfunc_called(this, "_ZN7S8567C23v15Ev");}
void  S8567C2 ::v16(){vfunc_called(this, "_ZN7S8567C23v16Ev");}
void  S8567C2 ::v17(){vfunc_called(this, "_ZN7S8567C23v17Ev");}
void  S8567C2 ::v18(){vfunc_called(this, "_ZN7S8567C23v18Ev");}
void  S8567C2 ::v19(){vfunc_called(this, "_ZN7S8567C23v19Ev");}
void  S8567C2 ::v20(){vfunc_called(this, "_ZN7S8567C23v20Ev");}
void  S8567C2 ::v21(){vfunc_called(this, "_ZN7S8567C23v21Ev");}
void  S8567C2 ::v22(){vfunc_called(this, "_ZN7S8567C23v22Ev");}
void  S8567C2 ::v23(){vfunc_called(this, "_ZN7S8567C23v23Ev");}
S8567C2 ::S8567C2(){ note_ctor("S8567C2", this);} // tgen

static void Test_S8567C2()
{
  extern Class_Descriptor cd_S8567C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8567C2, buf);
    S8567C2 *dp, &lv = *(dp=new (buf) S8567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8567C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8567C2)");
    test_class_info(&lv, &cd_S8567C2);
    dp->~S8567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8567C2(Test_S8567C2, "S8567C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8567C2C1Ev();
extern void _ZN7S8567C2D1Ev();
Name_Map name_map_S8567C2[] = {
  NSPAIR(_ZN7S8567C2C1Ev),
  NSPAIR(_ZN7S8567C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8567C2[];
extern void _ZN7S8567C2D1Ev();
extern void _ZN7S8567C2D0Ev();
extern void _ZN7S8567C23v12Ev();
extern void _ZN7S8567C23v13Ev();
extern void _ZN7S8567C23v14Ev();
extern void _ZN7S8567C23v15Ev();
extern void _ZN7S8567C23v16Ev();
extern void _ZN7S8567C23v17Ev();
extern void _ZN7S8567C23v18Ev();
extern void _ZN7S8567C23v19Ev();
extern void _ZN7S8567C23v20Ev();
extern void _ZN7S8567C23v21Ev();
extern void _ZN7S8567C23v22Ev();
extern void _ZN7S8567C23v23Ev();
static  VTBL_ENTRY vtc_S8567C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8567C2[0]),
  (VTBL_ENTRY)&_ZN7S8567C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8567C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S8567C2[];
extern  VTBL_ENTRY _ZTV7S8567C2[];
Class_Descriptor cd_S8567C2 = {  "S8567C2", // class name
  0,0,//no base classes
  &(vtc_S8567C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8567C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8567C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8567C1  : S8567C2 {
  void *s8567c1f0[20];
  int s8567c1f1;
  ::S8565C3_nt s8567c1f2;
  virtual  ~S8567C1(); // _ZN7S8567C1D1Ev
  virtual void  v1(); // _ZN7S8567C12v1Ev
  virtual void  v2(); // _ZN7S8567C12v2Ev
  virtual void  v3(); // _ZN7S8567C12v3Ev
  virtual void  v4(); // _ZN7S8567C12v4Ev
  virtual void  v5(); // _ZN7S8567C12v5Ev
  virtual void  v6(); // _ZN7S8567C12v6Ev
  virtual void  v7(); // _ZN7S8567C12v7Ev
  virtual void  v8(); // _ZN7S8567C12v8Ev
  virtual void  v9(); // _ZN7S8567C12v9Ev
  virtual void  v10(); // _ZN7S8567C13v10Ev
  virtual void  v11(); // _ZN7S8567C13v11Ev
  S8567C1(); // tgen
};
//SIG(1 S8567C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[20] Fi FC3{ Fi}}


 S8567C1 ::~S8567C1(){ note_dtor("S8567C1", this);}
void  S8567C1 ::v1(){vfunc_called(this, "_ZN7S8567C12v1Ev");}
void  S8567C1 ::v2(){vfunc_called(this, "_ZN7S8567C12v2Ev");}
void  S8567C1 ::v3(){vfunc_called(this, "_ZN7S8567C12v3Ev");}
void  S8567C1 ::v4(){vfunc_called(this, "_ZN7S8567C12v4Ev");}
void  S8567C1 ::v5(){vfunc_called(this, "_ZN7S8567C12v5Ev");}
void  S8567C1 ::v6(){vfunc_called(this, "_ZN7S8567C12v6Ev");}
void  S8567C1 ::v7(){vfunc_called(this, "_ZN7S8567C12v7Ev");}
void  S8567C1 ::v8(){vfunc_called(this, "_ZN7S8567C12v8Ev");}
void  S8567C1 ::v9(){vfunc_called(this, "_ZN7S8567C12v9Ev");}
void  S8567C1 ::v10(){vfunc_called(this, "_ZN7S8567C13v10Ev");}
void  S8567C1 ::v11(){vfunc_called(this, "_ZN7S8567C13v11Ev");}
S8567C1 ::S8567C1(){ note_ctor("S8567C1", this);} // tgen

static void Test_S8567C1()
{
  extern Class_Descriptor cd_S8567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S8567C1, buf);
    S8567C1 *dp, &lv = *(dp=new (buf) S8567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S8567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8567C1)");
    check_base_class_offset(lv, (S8567C2*), 0, "S8567C1");
    check_field_offset(lv, s8567c1f0, ABISELECT(8,4), "S8567C1.s8567c1f0");
    check_field_offset(lv, s8567c1f1, ABISELECT(168,84), "S8567C1.s8567c1f1");
    check_field_offset(lv, s8567c1f2, ABISELECT(172,88), "S8567C1.s8567c1f2");
    test_class_info(&lv, &cd_S8567C1);
    dp->~S8567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8567C1(Test_S8567C1, "S8567C1", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S8567C1C1Ev();
extern void _ZN7S8567C1D1Ev();
Name_Map name_map_S8567C1[] = {
  NSPAIR(_ZN7S8567C1C1Ev),
  NSPAIR(_ZN7S8567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8567C2;
extern VTBL_ENTRY _ZTI7S8567C2[];
extern  VTBL_ENTRY _ZTV7S8567C2[];
static Base_Class bases_S8567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8567C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8567C1[];
extern void _ZN7S8567C1D1Ev();
extern void _ZN7S8567C1D0Ev();
extern void _ZN7S8567C23v12Ev();
extern void _ZN7S8567C23v13Ev();
extern void _ZN7S8567C23v14Ev();
extern void _ZN7S8567C23v15Ev();
extern void _ZN7S8567C23v16Ev();
extern void _ZN7S8567C23v17Ev();
extern void _ZN7S8567C23v18Ev();
extern void _ZN7S8567C23v19Ev();
extern void _ZN7S8567C23v20Ev();
extern void _ZN7S8567C23v21Ev();
extern void _ZN7S8567C23v22Ev();
extern void _ZN7S8567C23v23Ev();
extern void _ZN7S8567C12v1Ev();
extern void _ZN7S8567C12v2Ev();
extern void _ZN7S8567C12v3Ev();
extern void _ZN7S8567C12v4Ev();
extern void _ZN7S8567C12v5Ev();
extern void _ZN7S8567C12v6Ev();
extern void _ZN7S8567C12v7Ev();
extern void _ZN7S8567C12v8Ev();
extern void _ZN7S8567C12v9Ev();
extern void _ZN7S8567C13v10Ev();
extern void _ZN7S8567C13v11Ev();
static  VTBL_ENTRY vtc_S8567C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8567C1[0]),
  (VTBL_ENTRY)&_ZN7S8567C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8567C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8567C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8567C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8567C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8567C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8567C1[];
extern  VTBL_ENTRY _ZTV7S8567C1[];
Class_Descriptor cd_S8567C1 = {  "S8567C1", // class name
  bases_S8567C1, 1,
  &(vtc_S8567C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S8567C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8567C1),27, //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  S9660C2  {
  ::S18423C15_nt s9660c2f0;
  int s9660c2f1[2];
  char s9660c2f2;
  virtual  ~S9660C2(); // _ZN7S9660C2D1Ev
  virtual void  v4(); // _ZN7S9660C22v4Ev
  virtual void  v5(); // _ZN7S9660C22v5Ev
  virtual void  v6(); // _ZN7S9660C22v6Ev
  S9660C2(); // tgen
};
//SIG(-1 S9660C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9660C2 ::~S9660C2(){ note_dtor("S9660C2", this);}
void  S9660C2 ::v4(){vfunc_called(this, "_ZN7S9660C22v4Ev");}
void  S9660C2 ::v5(){vfunc_called(this, "_ZN7S9660C22v5Ev");}
void  S9660C2 ::v6(){vfunc_called(this, "_ZN7S9660C22v6Ev");}
S9660C2 ::S9660C2(){ note_ctor("S9660C2", this);} // tgen

static void Test_S9660C2()
{
  extern Class_Descriptor cd_S9660C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9660C2, buf);
    S9660C2 *dp, &lv = *(dp=new (buf) S9660C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9660C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C2)");
    check_field_offset(lv, s9660c2f0, ABISELECT(8,4), "S9660C2.s9660c2f0");
    check_field_offset(lv, s9660c2f1, ABISELECT(24,16), "S9660C2.s9660c2f1");
    check_field_offset(lv, s9660c2f2, ABISELECT(32,24), "S9660C2.s9660c2f2");
    test_class_info(&lv, &cd_S9660C2);
    dp->~S9660C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9660C2(Test_S9660C2, "S9660C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9660C2C1Ev();
extern void _ZN7S9660C2D1Ev();
Name_Map name_map_S9660C2[] = {
  NSPAIR(_ZN7S9660C2C1Ev),
  NSPAIR(_ZN7S9660C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9660C2[];
extern void _ZN7S9660C2D1Ev();
extern void _ZN7S9660C2D0Ev();
extern void _ZN7S9660C22v4Ev();
extern void _ZN7S9660C22v5Ev();
extern void _ZN7S9660C22v6Ev();
static  VTBL_ENTRY vtc_S9660C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9660C2[0]),
  (VTBL_ENTRY)&_ZN7S9660C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9660C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9660C2[];
extern  VTBL_ENTRY _ZTV7S9660C2[];
Class_Descriptor cd_S9660C2 = {  "S9660C2", // class name
  0,0,//no base classes
  &(vtc_S9660C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9660C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9660C2),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  S9660C5  {
  ::S18423C15_nt s9660c5f0;
  ::S40C9_nt s9660c5f1;
  void *s9660c5f2[2];
  void  mf9660c5(); // _ZN7S9660C58mf9660c5Ev
};
//SIG(-1 S9660C5) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m Fi[2]} Fp[2]}


void  S9660C5 ::mf9660c5(){}

static void Test_S9660C5()
{
  {
    init_simple_test("S9660C5");
    S9660C5 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9660C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C5)");
    check_field_offset(lv, s9660c5f0, 0, "S9660C5.s9660c5f0");
    check_field_offset(lv, s9660c5f1, ABISELECT(16,12), "S9660C5.s9660c5f1");
    check_field_offset(lv, s9660c5f2, ABISELECT(24,20), "S9660C5.s9660c5f2");
  }
}
static Arrange_To_Call_Me vS9660C5(Test_S9660C5, "S9660C5", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9660C1  : S9660C2 {
  ::S9660C5 s9660c1f0;
  ::S1868C17 s9660c1f1;
  ::S17556C28_nt s9660c1f2;
  virtual  ~S9660C1(); // _ZN7S9660C1D1Ev
  virtual void  v1(); // _ZN7S9660C12v1Ev
  virtual void  v2(); // _ZN7S9660C12v2Ev
  virtual void  v3(); // _ZN7S9660C12v3Ev
  S9660C1(); // tgen
};
//SIG(1 S9660C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 FC5{ m FC3 FC6{ m Fi[2]} Fp[2]} FC7{ m Fp} FC8{ m Fp[2]}}


 S9660C1 ::~S9660C1(){ note_dtor("S9660C1", this);}
void  S9660C1 ::v1(){vfunc_called(this, "_ZN7S9660C12v1Ev");}
void  S9660C1 ::v2(){vfunc_called(this, "_ZN7S9660C12v2Ev");}
void  S9660C1 ::v3(){vfunc_called(this, "_ZN7S9660C12v3Ev");}
S9660C1 ::S9660C1(){ note_ctor("S9660C1", this);} // tgen

static void Test_S9660C1()
{
  extern Class_Descriptor cd_S9660C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S9660C1, buf);
    S9660C1 *dp, &lv = *(dp=new (buf) S9660C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S9660C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9660C1)");
    check_base_class_offset(lv, (S9660C2*), 0, "S9660C1");
    check_field_offset(lv, s9660c1f0, ABISELECT(40,28), "S9660C1.s9660c1f0");
    check_field_offset(lv, s9660c1f1, ABISELECT(80,56), "S9660C1.s9660c1f1");
    check_field_offset(lv, s9660c1f2, ABISELECT(88,60), "S9660C1.s9660c1f2");
    test_class_info(&lv, &cd_S9660C1);
    dp->~S9660C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9660C1(Test_S9660C1, "S9660C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S9660C1C1Ev();
extern void _ZN7S9660C1D1Ev();
Name_Map name_map_S9660C1[] = {
  NSPAIR(_ZN7S9660C1C1Ev),
  NSPAIR(_ZN7S9660C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9660C2;
extern VTBL_ENTRY _ZTI7S9660C2[];
extern  VTBL_ENTRY _ZTV7S9660C2[];
static Base_Class bases_S9660C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9660C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9660C1[];
extern void _ZN7S9660C1D1Ev();
extern void _ZN7S9660C1D0Ev();
extern void _ZN7S9660C22v4Ev();
extern void _ZN7S9660C22v5Ev();
extern void _ZN7S9660C22v6Ev();
extern void _ZN7S9660C12v1Ev();
extern void _ZN7S9660C12v2Ev();
extern void _ZN7S9660C12v3Ev();
static  VTBL_ENTRY vtc_S9660C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9660C1[0]),
  (VTBL_ENTRY)&_ZN7S9660C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9660C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9660C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9660C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9660C1[];
extern  VTBL_ENTRY _ZTV7S9660C1[];
Class_Descriptor cd_S9660C1 = {  "S9660C1", // class name
  bases_S9660C1, 1,
  &(vtc_S9660C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S9660C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9660C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19900C7  : virtual S7856C15 , S7856C12 , virtual S7856C24 {
  ~S19900C7(); // tgen
  S19900C7(); // tgen
};
//SIG(-1 S19900C7) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S19900C7 ::~S19900C7(){ note_dtor("S19900C7", this);} // tgen
S19900C7 ::S19900C7(){ note_ctor("S19900C7", this);} // tgen

static void Test_S19900C7()
{
  extern Class_Descriptor cd_S19900C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19900C7, buf);
    S19900C7 *dp, &lv = *(dp=new (buf) S19900C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19900C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C7)");
    check_base_class_offset(lv, (S7856C15*), 0, "S19900C7");
    check_base_class_offset(lv, (S7856C12*), 0, "S19900C7");
    check_base_class_offset(lv, (S7856C24*), 0, "S19900C7");
    test_class_info(&lv, &cd_S19900C7);
    dp->~S19900C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C7(Test_S19900C7, "S19900C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19900C7C1Ev();
extern void _ZN8S19900C7D1Ev();
Name_Map name_map_S19900C7[] = {
  NSPAIR(_ZN8S19900C7C1Ev),
  NSPAIR(_ZN8S19900C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S19900C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19900C7[];
static  VTBL_ENTRY vtc_S19900C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
extern VTBL_ENTRY _ZTV8S19900C7[];
static  VTT_ENTRY vtt_S19900C7[] = {
  {&(_ZTV8S19900C7[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
Class_Descriptor cd_S19900C7 = {  "S19900C7", // class name
  bases_S19900C7, 3,
  &(vtc_S19900C7[0]), // expected_vtbl_contents
  &(vtt_S19900C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19900C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C7),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C7),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  S19900C6  : S7856C15 , virtual S19900C7 , virtual S7856C12 {
  ~S19900C6(); // tgen
  S19900C6(); // tgen
};
//SIG(-1 S19900C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S19900C6 ::~S19900C6(){ note_dtor("S19900C6", this);} // tgen
S19900C6 ::S19900C6(){ note_ctor("S19900C6", this);} // tgen

static void Test_S19900C6()
{
  extern Class_Descriptor cd_S19900C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19900C6, buf);
    S19900C6 *dp, &lv = *(dp=new (buf) S19900C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19900C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C6)");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C6");
    check_base_class_offset(lv, (S7856C15*)(S19900C7*), ABISELECT(8,4), "S19900C6");
    check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C6");
    check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C6");
    check_base_class_offset(lv, (S19900C7*), 0, "S19900C6");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S19900C6");
    test_class_info(&lv, &cd_S19900C6);
    dp->~S19900C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C6(Test_S19900C6, "S19900C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19900C6C1Ev();
extern void _ZN8S19900C6D1Ev();
Name_Map name_map_S19900C6[] = {
  NSPAIR(_ZN8S19900C6C1Ev),
  NSPAIR(_ZN8S19900C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S19900C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19900C7,    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},
  {&cd_S7856C12,    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 _ZTI8S19900C6[];
static  VTBL_ENTRY vtc_S19900C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
extern VTBL_ENTRY _ZTV8S19900C6[];
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C6[] = {
  {&(_ZTV8S19900C6[6]),  6,6},
  {&(_ZTV8S19900C6[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
Class_Descriptor cd_S19900C6 = {  "S19900C6", // class name
  bases_S19900C6, 6,
  &(vtc_S19900C6[0]), // expected_vtbl_contents
  &(vtt_S19900C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19900C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C6),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  S19900C8  : S7856C12 , virtual S7856C15 , virtual S7856C24 , S19900C7 , virtual S19900C6 {
  virtual  ~S19900C8(); // _ZN8S19900C8D2Ev
  S19900C8(); // tgen
};
//SIG(-1 S19900C8) C1{ BC2{ m} VBC3{ m} VBC4{ m} BC5{ VBC3 BC2 VBC4} VBC6{ BC3 VBC5 VBC2} vd}


 S19900C8 ::~S19900C8(){ note_dtor("S19900C8", this);}
S19900C8 ::S19900C8(){ note_ctor("S19900C8", this);} // tgen

static void Test_S19900C8()
{
  extern Class_Descriptor cd_S19900C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19900C8, buf);
    S19900C8 *dp, &lv = *(dp=new (buf) S19900C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19900C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C8)");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(8,4), "S19900C8");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C8");
    check_base_class_offset(lv, (S7856C24*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*), 0, "S19900C8");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), ABISELECT(16,8), "S19900C8");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), ABISELECT(16,8), "S19900C8");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), ABISELECT(16,8), "S19900C8");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(24,12), "S19900C8");
    check_base_class_offset(lv, (S19900C6*), ABISELECT(16,8), "S19900C8");
    test_class_info(&lv, &cd_S19900C8);
    dp->~S19900C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C8(Test_S19900C8, "S19900C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19900C8C1Ev();
extern void _ZN8S19900C8D2Ev();
Name_Map name_map_S19900C8[] = {
  NSPAIR(_ZN8S19900C8C1Ev),
  NSPAIR(_ZN8S19900C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
static Base_Class bases_S19900C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C12,    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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19900C7,    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_S7856C15,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7856C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19900C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7856C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19900C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C8[];
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY vtc_S19900C8[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
extern VTBL_ENTRY _ZTV8S19900C8[];
static  VTBL_ENTRY _tg__ZTV8S19900C7__A__8S19900C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C8[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__A1__8S19900C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C8[] = {
  {&(_ZTV8S19900C8[7]),  7,15},
  {&(_tg__ZTV8S19900C7__A__8S19900C8[4]),  4,4},
  {&(_ZTV8S19900C8[15]),  15,15},
  {&(_ZTV8S19900C8[15]),  15,15},
  {&(_tg__ZTV8S19900C6__8S19900C8[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C8[6]),  6,6},
  {&(_tg__ZTV8S19900C7__A1__8S19900C8[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
Class_Descriptor cd_S19900C8 = {  "S19900C8", // class name
  bases_S19900C8, 10,
  &(vtc_S19900C8[0]), // expected_vtbl_contents
  &(vtt_S19900C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19900C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19900C8),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C8),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  S19900C3  : virtual S7856C15 , virtual S7856C12 , virtual S19900C6 , S7856C24 , S19900C8 {
  virtual  ~S19900C3(); // _ZN8S19900C3D2Ev
  S19900C3(); // tgen
};
//SIG(-1 S19900C3) C1{ VBC2{ m} VBC3{ m} VBC4{ BC2 VBC5{ VBC2 BC3 VBC6{ m}} VBC3} BC6 BC7{ BC3 VBC2 VBC6 BC5 VBC4 vd} vd}


 S19900C3 ::~S19900C3(){ note_dtor("S19900C3", this);}
S19900C3 ::S19900C3(){ note_ctor("S19900C3", this);} // tgen

static void Test_S19900C3()
{
  extern Class_Descriptor cd_S19900C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19900C3, buf);
    S19900C3 *dp, &lv = *(dp=new (buf) S19900C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19900C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C3)");
    /*is_ambiguous_... S19900C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), 0, "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*), ABISELECT(9,5), "S19900C3");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(9,5), "S19900C3");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), ABISELECT(24,12), "S19900C3");
    check_base_class_offset(lv, (S7856C24*)(S19900C8*), ABISELECT(24,12), "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*)(S19900C8*), ABISELECT(24,12), "S19900C3");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), ABISELECT(16,8), "S19900C3");
    check_base_class_offset(lv, (S19900C6*), ABISELECT(16,8), "S19900C3");
    check_base_class_offset(lv, (S19900C6*)(S19900C8*), ABISELECT(16,8), "S19900C3");
    /*is_ambiguous_... S19900C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C8*), ABISELECT(8,4), "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*)(S19900C8*), 0, "S19900C3");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*)(S19900C8*), 0, "S19900C3");
    check_base_class_offset(lv, (S19900C8*), 0, "S19900C3");
    test_class_info(&lv, &cd_S19900C3);
    dp->~S19900C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C3(Test_S19900C3, "S19900C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19900C3C1Ev();
extern void _ZN8S19900C3D2Ev();
Name_Map name_map_S19900C3[] = {
  NSPAIR(_ZN8S19900C3C1Ev),
  NSPAIR(_ZN8S19900C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C8;
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
static Base_Class bases_S19900C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C12,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7856C24,    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
    5, //immediately_derived
  0, 1},
  {&cd_S19900C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19900C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19900C7,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19900C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19900C3[];
extern void _ZN8S19900C3D1Ev();
extern void _ZN8S19900C3D0Ev();
static  VTBL_ENTRY vtc_S19900C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
  (VTBL_ENTRY)&_ZN8S19900C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C3D0Ev,
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
};
extern VTBL_ENTRY _ZTV8S19900C3[];
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C8__8S19900C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19900C78S19900C8__A1__8S19900C3[] = {
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C8__8S19900C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C3[] = {
  ABISELECT(-7,-3),
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C3[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C3[] = {
  {&(_ZTV8S19900C3[7]),  7,15},
  {&(_tg__ZTV8S19900C8__8S19900C3[7]),  7,9},
  {&(_tg__ZTV8S19900C78S19900C8__A1__8S19900C3[4]),  4,4},
  {&(_tg__ZTV8S19900C6__8S19900C8__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C8__8S19900C3[6]),  6,6},
  {&(_ZTV8S19900C3[15]),  15,15},
  {&(_ZTV8S19900C3[15]),  15,15},
  {&(_tg__ZTV8S19900C6__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C3[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C3[];
extern  VTBL_ENTRY _ZTV8S19900C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C3[];
Class_Descriptor cd_S19900C3 = {  "S19900C3", // class name
  bases_S19900C3, 12,
  &(vtc_S19900C3[0]), // expected_vtbl_contents
  &(vtt_S19900C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19900C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19900C3),15, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C3),10, //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  S19900C1  : virtual S7856C24 , virtual S19900C3 , virtual S7856C9_nt {
  virtual  ~S19900C1(); // _ZN8S19900C1D2Ev
  S19900C1(); // tgen
};
//SIG(1 S19900C1) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ m} VBC6{ BC4 VBC7{ VBC4 BC5 VBC2} VBC5} BC2 BC8{ BC5 VBC4 VBC2 BC7 VBC6 vd} vd} VBC9{ m} vd}


 S19900C1 ::~S19900C1(){ note_dtor("S19900C1", this);}
S19900C1 ::S19900C1(){ note_ctor("S19900C1", this);} // tgen

static void Test_S19900C1()
{
  extern Class_Descriptor cd_S19900C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19900C1, buf);
    S19900C1 *dp, &lv = *(dp=new (buf) S19900C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19900C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19900C1)");
    /*is_ambiguous_... S19900C1::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*), 0, "S19900C1");
    check_base_class_offset(lv, (S7856C24*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C7*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C8::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C8*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C3*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C6::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C6*), ABISELECT(17,9), "S19900C1");
    /*is_ambiguous_... S19900C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S19900C6*), 0, "S19900C1");
    /*is_ambiguous_... S19900C1::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C7*)(S19900C6*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C6*)(S19900C3*), 0, "S19900C1");
    check_base_class_offset(lv, (S19900C6*)(S19900C8*)(S19900C3*), 0, "S19900C1");
    /*is_ambiguous_... S19900C3::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    /*is_ambiguous_... S19900C8::S7856C12 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C8*)(S19900C3*), ABISELECT(16,8), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S7856C12*)(S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    /*is_ambiguous_... S19900C8::S19900C7 */ AMB_check_base_class_offset(lv, (S19900C7*)(S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S19900C8*)(S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S19900C3*), ABISELECT(8,4), "S19900C1");
    check_base_class_offset(lv, (S7856C9_nt*), 0, "S19900C1");
    test_class_info(&lv, &cd_S19900C1);
    dp->~S19900C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19900C1(Test_S19900C1, "S19900C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19900C1C1Ev();
extern void _ZN8S19900C1D2Ev();
Name_Map name_map_S19900C1[] = {
  NSPAIR(_ZN8S19900C1C1Ev),
  NSPAIR(_ZN8S19900C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C6;
extern VTBL_ENTRY _ZTI8S19900C6[];
extern  VTBL_ENTRY _ZTV8S19900C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C6[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S19900C7;
extern VTBL_ENTRY _ZTI8S19900C7[];
extern  VTBL_ENTRY _ZTV8S19900C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C7[];
extern Class_Descriptor cd_S19900C8;
extern VTBL_ENTRY _ZTI8S19900C8[];
extern  VTBL_ENTRY _ZTV8S19900C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C8[];
extern Class_Descriptor cd_S19900C3;
extern VTBL_ENTRY _ZTI8S19900C3[];
extern  VTBL_ENTRY _ZTV8S19900C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C3[];
extern Class_Descriptor cd_S7856C9_nt;
extern VTBL_ENTRY _ZTI10S7856C9_nt[];
static Base_Class bases_S19900C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    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, 1},
  {&cd_S7856C12,    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
    6, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19900C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19900C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7856C24,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7856C12,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19900C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19900C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19900C3,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7856C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19900C1[];
extern void _ZN8S19900C1D1Ev();
extern void _ZN8S19900C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19900C1D1Ev,_ZThn4_N8S19900C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19900C1D0Ev,_ZThn4_N8S19900C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19900C1[] = {
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C1[0]),
  (VTBL_ENTRY)&_ZN8S19900C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19900C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19900C1[];
extern void _ZN8S19900C3D1Ev();
extern void _ZN8S19900C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C3__8S19900C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
  (VTBL_ENTRY)&_ZN8S19900C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C3D0Ev,
};
extern void _ZN8S19900C8D1Ev();
extern void _ZN8S19900C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19900C88S19900C3__8S19900C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
  (VTBL_ENTRY)&_ZN8S19900C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19900C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19900C78S19900C88S19900C3__A1__8S19900C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19900C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C3__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19900C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C6__8S19900C1[] = {
  ABISELECT(17,9),
  0,
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19900C7__8S19900C1[] = {
  0,
  ABISELECT(17,9),
  0,
  (VTBL_ENTRY)&(_ZTI8S19900C7[0]),
};
static  VTT_ENTRY vtt_S19900C1[] = {
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_ZTV8S19900C1[19]),  19,21},
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_ZTV8S19900C1[9]),  9,21},
  {&(_tg__ZTV8S19900C3__8S19900C1[7]),  7,9},
  {&(_tg__ZTV8S19900C88S19900C3__8S19900C1[7]),  7,9},
  {&(_tg__ZTV8S19900C78S19900C88S19900C3__A1__8S19900C1[4]),  4,4},
  {&(_tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C88S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C3__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C6__8S19900C1[6]),  6,6},
  {&(_tg__ZTV8S19900C7__8S19900C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19900C1[];
extern  VTBL_ENTRY _ZTV8S19900C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19900C1[];
static VTBL_ENTRY alt_thunk_names187[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19900C1D0Ev,_ZTv0_n32_N8S19900C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19900C1D0Ev,_ZThn4_N8S19900C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19900C1D1Ev,_ZTv0_n32_N8S19900C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19900C1D1Ev,_ZThn4_N8S19900C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19900C1 = {  "S19900C1", // class name
  bases_S19900C1, 14,
  &(vtc_S19900C1[0]), // expected_vtbl_contents
  &(vtt_S19900C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19900C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19900C1),21, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19900C1),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names187,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4314C3  {
  char s4314c3f0;
  int s4314c3f1;
  virtual  ~S4314C3(); // _ZN7S4314C3D1Ev
  virtual void  v2(); // _ZN7S4314C32v2Ev
  S4314C3(); // tgen
};
//SIG(-1 S4314C3) C1{ vd v1 Fc Fi}


 S4314C3 ::~S4314C3(){ note_dtor("S4314C3", this);}
void  S4314C3 ::v2(){vfunc_called(this, "_ZN7S4314C32v2Ev");}
S4314C3 ::S4314C3(){ note_ctor("S4314C3", this);} // tgen

static void Test_S4314C3()
{
  extern Class_Descriptor cd_S4314C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4314C3, buf);
    S4314C3 *dp, &lv = *(dp=new (buf) S4314C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4314C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C3)");
    check_field_offset(lv, s4314c3f0, ABISELECT(8,4), "S4314C3.s4314c3f0");
    check_field_offset(lv, s4314c3f1, ABISELECT(12,8), "S4314C3.s4314c3f1");
    test_class_info(&lv, &cd_S4314C3);
    dp->~S4314C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C3(Test_S4314C3, "S4314C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4314C3C1Ev();
extern void _ZN7S4314C3D1Ev();
Name_Map name_map_S4314C3[] = {
  NSPAIR(_ZN7S4314C3C1Ev),
  NSPAIR(_ZN7S4314C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4314C3[];
extern void _ZN7S4314C3D1Ev();
extern void _ZN7S4314C3D0Ev();
extern void _ZN7S4314C32v2Ev();
static  VTBL_ENTRY vtc_S4314C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C3[0]),
  (VTBL_ENTRY)&_ZN7S4314C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
Class_Descriptor cd_S4314C3 = {  "S4314C3", // class name
  0,0,//no base classes
  &(vtc_S4314C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4314C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4314C3),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  S4314C2  : S4314C3 {
  int s4314c2f0[2];
  char s4314c2f1;
  ::S2436C5_nt s4314c2f2;
  ::S2436C6 s4314c2f3;
  virtual  ~S4314C2(); // _ZN7S4314C2D1Ev
  virtual void  v3(); // _ZN7S4314C22v3Ev
  S4314C2(); // tgen
};
//SIG(-1 S4314C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4314C2 ::~S4314C2(){ note_dtor("S4314C2", this);}
void  S4314C2 ::v3(){vfunc_called(this, "_ZN7S4314C22v3Ev");}
S4314C2 ::S4314C2(){ note_ctor("S4314C2", this);} // tgen

static void Test_S4314C2()
{
  extern Class_Descriptor cd_S4314C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4314C2, buf);
    S4314C2 *dp, &lv = *(dp=new (buf) S4314C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4314C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C2)");
    check_base_class_offset(lv, (S4314C3*), 0, "S4314C2");
    check_field_offset(lv, s4314c2f0, ABISELECT(16,12), "S4314C2.s4314c2f0");
    check_field_offset(lv, s4314c2f1, ABISELECT(24,20), "S4314C2.s4314c2f1");
    check_field_offset(lv, s4314c2f2, ABISELECT(32,24), "S4314C2.s4314c2f2");
    check_field_offset(lv, s4314c2f3, ABISELECT(40,28), "S4314C2.s4314c2f3");
    test_class_info(&lv, &cd_S4314C2);
    dp->~S4314C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C2(Test_S4314C2, "S4314C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4314C2C1Ev();
extern void _ZN7S4314C2D1Ev();
Name_Map name_map_S4314C2[] = {
  NSPAIR(_ZN7S4314C2C1Ev),
  NSPAIR(_ZN7S4314C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4314C3;
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
static Base_Class bases_S4314C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4314C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4314C2[];
extern void _ZN7S4314C2D1Ev();
extern void _ZN7S4314C2D0Ev();
extern void _ZN7S4314C32v2Ev();
extern void _ZN7S4314C22v3Ev();
static  VTBL_ENTRY vtc_S4314C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C2[0]),
  (VTBL_ENTRY)&_ZN7S4314C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4314C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S4314C2[];
extern  VTBL_ENTRY _ZTV7S4314C2[];
Class_Descriptor cd_S4314C2 = {  "S4314C2", // class name
  bases_S4314C2, 1,
  &(vtc_S4314C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4314C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4314C2),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  S4314C1  : S4314C2 {
  int s4314c1f0[3];
  void *s4314c1f1[2];
  int s4314c1f2;
  void *s4314c1f3[2];
  int s4314c1f4;
  void *s4314c1f5;
  char s4314c1f6[31];
  virtual  ~S4314C1(); // _ZN7S4314C1D1Ev
  virtual void  v1(); // _ZN7S4314C12v1Ev
  S4314C1(); // tgen
};
//SIG(1 S4314C1) C1{ BC2{ BC3{ vd v2 Fc Fi} vd v3 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v6 Fc Fi} vd v4 v5 FL[4]}} vd v1 Fi[3] Fp[2] Fi Fp[2] Fi Fp Fc[31]}


 S4314C1 ::~S4314C1(){ note_dtor("S4314C1", this);}
void  S4314C1 ::v1(){vfunc_called(this, "_ZN7S4314C12v1Ev");}
S4314C1 ::S4314C1(){ note_ctor("S4314C1", this);} // tgen

static void Test_S4314C1()
{
  extern Class_Descriptor cd_S4314C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S4314C1, buf);
    S4314C1 *dp, &lv = *(dp=new (buf) S4314C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S4314C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4314C1)");
    check_base_class_offset(lv, (S4314C3*)(S4314C2*), 0, "S4314C1");
    check_base_class_offset(lv, (S4314C2*), 0, "S4314C1");
    check_field_offset(lv, s4314c1f0, ABISELECT(88,72), "S4314C1.s4314c1f0");
    check_field_offset(lv, s4314c1f1, ABISELECT(104,84), "S4314C1.s4314c1f1");
    check_field_offset(lv, s4314c1f2, ABISELECT(120,92), "S4314C1.s4314c1f2");
    check_field_offset(lv, s4314c1f3, ABISELECT(128,96), "S4314C1.s4314c1f3");
    check_field_offset(lv, s4314c1f4, ABISELECT(144,104), "S4314C1.s4314c1f4");
    check_field_offset(lv, s4314c1f5, ABISELECT(152,108), "S4314C1.s4314c1f5");
    check_field_offset(lv, s4314c1f6, ABISELECT(160,112), "S4314C1.s4314c1f6");
    test_class_info(&lv, &cd_S4314C1);
    dp->~S4314C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4314C1(Test_S4314C1, "S4314C1", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S4314C1C1Ev();
extern void _ZN7S4314C1D1Ev();
Name_Map name_map_S4314C1[] = {
  NSPAIR(_ZN7S4314C1C1Ev),
  NSPAIR(_ZN7S4314C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4314C3;
extern VTBL_ENTRY _ZTI7S4314C3[];
extern  VTBL_ENTRY _ZTV7S4314C3[];
extern Class_Descriptor cd_S4314C2;
extern VTBL_ENTRY _ZTI7S4314C2[];
extern  VTBL_ENTRY _ZTV7S4314C2[];
static Base_Class bases_S4314C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4314C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4314C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4314C1[];
extern void _ZN7S4314C1D1Ev();
extern void _ZN7S4314C1D0Ev();
extern void _ZN7S4314C32v2Ev();
extern void _ZN7S4314C22v3Ev();
extern void _ZN7S4314C12v1Ev();
static  VTBL_ENTRY vtc_S4314C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4314C1[0]),
  (VTBL_ENTRY)&_ZN7S4314C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4314C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4314C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4314C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4314C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4314C1[];
extern  VTBL_ENTRY _ZTV7S4314C1[];
Class_Descriptor cd_S4314C1 = {  "S4314C1", // class name
  bases_S4314C1, 2,
  &(vtc_S4314C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S4314C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4314C1),7, //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  S4680C3  {
  char s4680c3f0;
  int s4680c3f1;
  virtual  ~S4680C3(); // _ZN7S4680C3D1Ev
  virtual void  v3(); // _ZN7S4680C32v3Ev
  S4680C3(); // tgen
};
//SIG(-1 S4680C3) C1{ vd v1 Fc Fi}


 S4680C3 ::~S4680C3(){ note_dtor("S4680C3", this);}
void  S4680C3 ::v3(){vfunc_called(this, "_ZN7S4680C32v3Ev");}
S4680C3 ::S4680C3(){ note_ctor("S4680C3", this);} // tgen

static void Test_S4680C3()
{
  extern Class_Descriptor cd_S4680C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4680C3, buf);
    S4680C3 *dp, &lv = *(dp=new (buf) S4680C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4680C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C3)");
    check_field_offset(lv, s4680c3f0, ABISELECT(8,4), "S4680C3.s4680c3f0");
    check_field_offset(lv, s4680c3f1, ABISELECT(12,8), "S4680C3.s4680c3f1");
    test_class_info(&lv, &cd_S4680C3);
    dp->~S4680C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C3(Test_S4680C3, "S4680C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4680C3C1Ev();
extern void _ZN7S4680C3D1Ev();
Name_Map name_map_S4680C3[] = {
  NSPAIR(_ZN7S4680C3C1Ev),
  NSPAIR(_ZN7S4680C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4680C3[];
extern void _ZN7S4680C3D1Ev();
extern void _ZN7S4680C3D0Ev();
extern void _ZN7S4680C32v3Ev();
static  VTBL_ENTRY vtc_S4680C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C3[0]),
  (VTBL_ENTRY)&_ZN7S4680C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
Class_Descriptor cd_S4680C3 = {  "S4680C3", // class name
  0,0,//no base classes
  &(vtc_S4680C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4680C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4680C3),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  S4680C2  : S4680C3 {
  int s4680c2f0[2];
  char s4680c2f1;
  ::S2436C5_nt s4680c2f2;
  ::S2436C6 s4680c2f3;
  virtual  ~S4680C2(); // _ZN7S4680C2D1Ev
  virtual void  v4(); // _ZN7S4680C22v4Ev
  S4680C2(); // tgen
};
//SIG(-1 S4680C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4680C2 ::~S4680C2(){ note_dtor("S4680C2", this);}
void  S4680C2 ::v4(){vfunc_called(this, "_ZN7S4680C22v4Ev");}
S4680C2 ::S4680C2(){ note_ctor("S4680C2", this);} // tgen

static void Test_S4680C2()
{
  extern Class_Descriptor cd_S4680C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4680C2, buf);
    S4680C2 *dp, &lv = *(dp=new (buf) S4680C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4680C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C2)");
    check_base_class_offset(lv, (S4680C3*), 0, "S4680C2");
    check_field_offset(lv, s4680c2f0, ABISELECT(16,12), "S4680C2.s4680c2f0");
    check_field_offset(lv, s4680c2f1, ABISELECT(24,20), "S4680C2.s4680c2f1");
    check_field_offset(lv, s4680c2f2, ABISELECT(32,24), "S4680C2.s4680c2f2");
    check_field_offset(lv, s4680c2f3, ABISELECT(40,28), "S4680C2.s4680c2f3");
    test_class_info(&lv, &cd_S4680C2);
    dp->~S4680C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C2(Test_S4680C2, "S4680C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4680C2C1Ev();
extern void _ZN7S4680C2D1Ev();
Name_Map name_map_S4680C2[] = {
  NSPAIR(_ZN7S4680C2C1Ev),
  NSPAIR(_ZN7S4680C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
static Base_Class bases_S4680C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4680C2[];
extern void _ZN7S4680C2D1Ev();
extern void _ZN7S4680C2D0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN7S4680C22v4Ev();
static  VTBL_ENTRY vtc_S4680C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C2[0]),
  (VTBL_ENTRY)&_ZN7S4680C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4680C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4680C2[];
extern  VTBL_ENTRY _ZTV7S4680C2[];
Class_Descriptor cd_S4680C2 = {  "S4680C2", // class name
  bases_S4680C2, 1,
  &(vtc_S4680C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4680C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4680C2),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  S4680C6_nt  : S4680C3 {
  void *s4680c6f0;
  char s4680c6f1[2];
  virtual  ~S4680C6_nt(); // _ZN10S4680C6_ntD1Ev
  virtual void  v5(); // _ZN10S4680C6_nt2v5Ev
  S4680C6_nt(); // tgen
};
//SIG(-1 S4680C6_nt) C1{ BC2{ vd v2 Fc Fi} vd v1 Fp Fc[2]}


 S4680C6_nt ::~S4680C6_nt(){ note_dtor("S4680C6_nt", this);}
void  S4680C6_nt ::v5(){vfunc_called(this, "_ZN10S4680C6_nt2v5Ev");}
S4680C6_nt ::S4680C6_nt(){ note_ctor("S4680C6_nt", this);} // tgen

//skip512 S4680C6_nt

#else // __cplusplus

extern void _ZN10S4680C6_ntC1Ev();
extern void _ZN10S4680C6_ntD1Ev();
Name_Map name_map_S4680C6_nt[] = {
  NSPAIR(_ZN10S4680C6_ntC1Ev),
  NSPAIR(_ZN10S4680C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
static Base_Class bases_S4680C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S4680C6_nt[];
extern void _ZN10S4680C6_ntD1Ev();
extern void _ZN10S4680C6_ntD0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN10S4680C6_nt2v5Ev();
static  VTBL_ENTRY vtc_S4680C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4680C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S4680C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S4680C6_nt[];
VTBL_ENTRY *P__ZTI10S4680C6_nt = _ZTI10S4680C6_nt; 
extern  VTBL_ENTRY _ZTV10S4680C6_nt[];
Class_Descriptor cd_S4680C6_nt = {  "S4680C6_nt", // class name
  bases_S4680C6_nt, 1,
  &(vtc_S4680C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S4680C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4680C6_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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4680C1  : S4680C2 , S4680C6_nt {
  void *s4680c1f0;
  int s4680c1f1;
  virtual  ~S4680C1(); // _ZN7S4680C1D1Ev
  virtual void  v1(); // _ZN7S4680C12v1Ev
  virtual void  v2(); // _ZN7S4680C12v2Ev
  S4680C1(); // tgen
};
//SIG(1 S4680C1) C1{ BC2{ BC3{ vd v3 Fc Fi} vd v4 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v8 Fc Fi} vd v6 v7 FL[4]}} BC7{ BC3 vd v5 Fp Fc[2]} vd v1 v2 Fp Fi}


 S4680C1 ::~S4680C1(){ note_dtor("S4680C1", this);}
void  S4680C1 ::v1(){vfunc_called(this, "_ZN7S4680C12v1Ev");}
void  S4680C1 ::v2(){vfunc_called(this, "_ZN7S4680C12v2Ev");}
S4680C1 ::S4680C1(){ note_ctor("S4680C1", this);} // tgen

static void Test_S4680C1()
{
  extern Class_Descriptor cd_S4680C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S4680C1, buf);
    S4680C1 *dp, &lv = *(dp=new (buf) S4680C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S4680C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4680C1)");
    check_base_class_offset(lv, (S4680C3*)(S4680C2*), 0, "S4680C1");
    check_base_class_offset(lv, (S4680C2*), 0, "S4680C1");
    check_base_class_offset(lv, (S4680C3*)(S4680C6_nt*), ABISELECT(88,72), "S4680C1");
    check_base_class_offset(lv, (S4680C6_nt*), ABISELECT(88,72), "S4680C1");
    check_field_offset(lv, s4680c1f0, ABISELECT(120,92), "S4680C1.s4680c1f0");
    check_field_offset(lv, s4680c1f1, ABISELECT(128,96), "S4680C1.s4680c1f1");
    test_class_info(&lv, &cd_S4680C1);
    dp->~S4680C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4680C1(Test_S4680C1, "S4680C1", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S4680C1C1Ev();
extern void _ZN7S4680C1D1Ev();
Name_Map name_map_S4680C1[] = {
  NSPAIR(_ZN7S4680C1C1Ev),
  NSPAIR(_ZN7S4680C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
extern Class_Descriptor cd_S4680C2;
extern VTBL_ENTRY _ZTI7S4680C2[];
extern  VTBL_ENTRY _ZTV7S4680C2[];
extern Class_Descriptor cd_S4680C3;
extern VTBL_ENTRY _ZTI7S4680C3[];
extern  VTBL_ENTRY _ZTV7S4680C3[];
extern Class_Descriptor cd_S4680C6_nt;
extern VTBL_ENTRY _ZTI10S4680C6_nt[];
extern  VTBL_ENTRY _ZTV10S4680C6_nt[];
static Base_Class bases_S4680C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4680C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4680C3,    ABISELECT(88,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_S4680C6_nt,    ABISELECT(88,72), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4680C1[];
extern void _ZN7S4680C1D1Ev();
extern void _ZN7S4680C1D0Ev();
extern void _ZN7S4680C32v3Ev();
extern void _ZN7S4680C22v4Ev();
extern void _ZN7S4680C12v1Ev();
extern void _ZN7S4680C12v2Ev();
extern void ABISELECT(_ZThn88_N7S4680C1D1Ev,_ZThn72_N7S4680C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S4680C1D0Ev,_ZThn72_N7S4680C1D0Ev)();
extern void _ZN7S4680C32v3Ev();
extern void _ZN10S4680C6_nt2v5Ev();
static  VTBL_ENTRY vtc_S4680C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4680C1[0]),
  (VTBL_ENTRY)&_ZN7S4680C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4680C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4680C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4680C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4680C12v2Ev,
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S4680C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S4680C1D1Ev,_ZThn72_N7S4680C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S4680C1D0Ev,_ZThn72_N7S4680C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4680C32v3Ev,
  (VTBL_ENTRY)&_ZN10S4680C6_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI7S4680C1[];
extern  VTBL_ENTRY _ZTV7S4680C1[];
Class_Descriptor cd_S4680C1 = {  "S4680C1", // class name
  bases_S4680C1, 4,
  &(vtc_S4680C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S4680C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4680C1),14, //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  S8593C2  {
  virtual  ~S8593C2(); // _ZN7S8593C2D1Ev
  virtual void  v13(); // _ZN7S8593C23v13Ev
  virtual void  v14(); // _ZN7S8593C23v14Ev
  virtual void  v15(); // _ZN7S8593C23v15Ev
  virtual void  v16(); // _ZN7S8593C23v16Ev
  virtual void  v17(); // _ZN7S8593C23v17Ev
  virtual void  v18(); // _ZN7S8593C23v18Ev
  virtual void  v19(); // _ZN7S8593C23v19Ev
  virtual void  v20(); // _ZN7S8593C23v20Ev
  virtual void  v21(); // _ZN7S8593C23v21Ev
  virtual void  v22(); // _ZN7S8593C23v22Ev
  virtual void  v23(); // _ZN7S8593C23v23Ev
  virtual void  v24(); // _ZN7S8593C23v24Ev
  S8593C2(); // tgen
};
//SIG(-1 S8593C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8593C2 ::~S8593C2(){ note_dtor("S8593C2", this);}
void  S8593C2 ::v13(){vfunc_called(this, "_ZN7S8593C23v13Ev");}
void  S8593C2 ::v14(){vfunc_called(this, "_ZN7S8593C23v14Ev");}
void  S8593C2 ::v15(){vfunc_called(this, "_ZN7S8593C23v15Ev");}
void  S8593C2 ::v16(){vfunc_called(this, "_ZN7S8593C23v16Ev");}
void  S8593C2 ::v17(){vfunc_called(this, "_ZN7S8593C23v17Ev");}
void  S8593C2 ::v18(){vfunc_called(this, "_ZN7S8593C23v18Ev");}
void  S8593C2 ::v19(){vfunc_called(this, "_ZN7S8593C23v19Ev");}
void  S8593C2 ::v20(){vfunc_called(this, "_ZN7S8593C23v20Ev");}
void  S8593C2 ::v21(){vfunc_called(this, "_ZN7S8593C23v21Ev");}
void  S8593C2 ::v22(){vfunc_called(this, "_ZN7S8593C23v22Ev");}
void  S8593C2 ::v23(){vfunc_called(this, "_ZN7S8593C23v23Ev");}
void  S8593C2 ::v24(){vfunc_called(this, "_ZN7S8593C23v24Ev");}
S8593C2 ::S8593C2(){ note_ctor("S8593C2", this);} // tgen

static void Test_S8593C2()
{
  extern Class_Descriptor cd_S8593C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8593C2, buf);
    S8593C2 *dp, &lv = *(dp=new (buf) S8593C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8593C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8593C2)");
    test_class_info(&lv, &cd_S8593C2);
    dp->~S8593C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8593C2(Test_S8593C2, "S8593C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8593C2C1Ev();
extern void _ZN7S8593C2D1Ev();
Name_Map name_map_S8593C2[] = {
  NSPAIR(_ZN7S8593C2C1Ev),
  NSPAIR(_ZN7S8593C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8593C2[];
extern void _ZN7S8593C2D1Ev();
extern void _ZN7S8593C2D0Ev();
extern void _ZN7S8593C23v13Ev();
extern void _ZN7S8593C23v14Ev();
extern void _ZN7S8593C23v15Ev();
extern void _ZN7S8593C23v16Ev();
extern void _ZN7S8593C23v17Ev();
extern void _ZN7S8593C23v18Ev();
extern void _ZN7S8593C23v19Ev();
extern void _ZN7S8593C23v20Ev();
extern void _ZN7S8593C23v21Ev();
extern void _ZN7S8593C23v22Ev();
extern void _ZN7S8593C23v23Ev();
extern void _ZN7S8593C23v24Ev();
static  VTBL_ENTRY vtc_S8593C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8593C2[0]),
  (VTBL_ENTRY)&_ZN7S8593C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8593C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8593C2[];
extern  VTBL_ENTRY _ZTV7S8593C2[];
Class_Descriptor cd_S8593C2 = {  "S8593C2", // class name
  0,0,//no base classes
  &(vtc_S8593C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8593C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8593C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8593C1  : S8593C2 {
  void *s8593c1f0[5];
  virtual  ~S8593C1(); // _ZN7S8593C1D1Ev
  virtual void  v1(); // _ZN7S8593C12v1Ev
  virtual void  v2(); // _ZN7S8593C12v2Ev
  virtual void  v3(); // _ZN7S8593C12v3Ev
  virtual void  v4(); // _ZN7S8593C12v4Ev
  virtual void  v5(); // _ZN7S8593C12v5Ev
  virtual void  v6(); // _ZN7S8593C12v6Ev
  virtual void  v7(); // _ZN7S8593C12v7Ev
  virtual void  v8(); // _ZN7S8593C12v8Ev
  virtual void  v9(); // _ZN7S8593C12v9Ev
  virtual void  v10(); // _ZN7S8593C13v10Ev
  virtual void  v11(); // _ZN7S8593C13v11Ev
  virtual void  v12(); // _ZN7S8593C13v12Ev
  S8593C1(); // tgen
};
//SIG(1 S8593C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[5]}


 S8593C1 ::~S8593C1(){ note_dtor("S8593C1", this);}
void  S8593C1 ::v1(){vfunc_called(this, "_ZN7S8593C12v1Ev");}
void  S8593C1 ::v2(){vfunc_called(this, "_ZN7S8593C12v2Ev");}
void  S8593C1 ::v3(){vfunc_called(this, "_ZN7S8593C12v3Ev");}
void  S8593C1 ::v4(){vfunc_called(this, "_ZN7S8593C12v4Ev");}
void  S8593C1 ::v5(){vfunc_called(this, "_ZN7S8593C12v5Ev");}
void  S8593C1 ::v6(){vfunc_called(this, "_ZN7S8593C12v6Ev");}
void  S8593C1 ::v7(){vfunc_called(this, "_ZN7S8593C12v7Ev");}
void  S8593C1 ::v8(){vfunc_called(this, "_ZN7S8593C12v8Ev");}
void  S8593C1 ::v9(){vfunc_called(this, "_ZN7S8593C12v9Ev");}
void  S8593C1 ::v10(){vfunc_called(this, "_ZN7S8593C13v10Ev");}
void  S8593C1 ::v11(){vfunc_called(this, "_ZN7S8593C13v11Ev");}
void  S8593C1 ::v12(){vfunc_called(this, "_ZN7S8593C13v12Ev");}
S8593C1 ::S8593C1(){ note_ctor("S8593C1", this);} // tgen

static void Test_S8593C1()
{
  extern Class_Descriptor cd_S8593C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S8593C1, buf);
    S8593C1 *dp, &lv = *(dp=new (buf) S8593C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S8593C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8593C1)");
    check_base_class_offset(lv, (S8593C2*), 0, "S8593C1");
    check_field_offset(lv, s8593c1f0, ABISELECT(8,4), "S8593C1.s8593c1f0");
    test_class_info(&lv, &cd_S8593C1);
    dp->~S8593C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8593C1(Test_S8593C1, "S8593C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S8593C1C1Ev();
extern void _ZN7S8593C1D1Ev();
Name_Map name_map_S8593C1[] = {
  NSPAIR(_ZN7S8593C1C1Ev),
  NSPAIR(_ZN7S8593C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8593C2;
extern VTBL_ENTRY _ZTI7S8593C2[];
extern  VTBL_ENTRY _ZTV7S8593C2[];
static Base_Class bases_S8593C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8593C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8593C1[];
extern void _ZN7S8593C1D1Ev();
extern void _ZN7S8593C1D0Ev();
extern void _ZN7S8593C23v13Ev();
extern void _ZN7S8593C23v14Ev();
extern void _ZN7S8593C23v15Ev();
extern void _ZN7S8593C23v16Ev();
extern void _ZN7S8593C23v17Ev();
extern void _ZN7S8593C23v18Ev();
extern void _ZN7S8593C23v19Ev();
extern void _ZN7S8593C23v20Ev();
extern void _ZN7S8593C23v21Ev();
extern void _ZN7S8593C23v22Ev();
extern void _ZN7S8593C23v23Ev();
extern void _ZN7S8593C23v24Ev();
extern void _ZN7S8593C12v1Ev();
extern void _ZN7S8593C12v2Ev();
extern void _ZN7S8593C12v3Ev();
extern void _ZN7S8593C12v4Ev();
extern void _ZN7S8593C12v5Ev();
extern void _ZN7S8593C12v6Ev();
extern void _ZN7S8593C12v7Ev();
extern void _ZN7S8593C12v8Ev();
extern void _ZN7S8593C12v9Ev();
extern void _ZN7S8593C13v10Ev();
extern void _ZN7S8593C13v11Ev();
extern void _ZN7S8593C13v12Ev();
static  VTBL_ENTRY vtc_S8593C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8593C1[0]),
  (VTBL_ENTRY)&_ZN7S8593C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8593C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8593C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8593C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8593C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8593C1[];
extern  VTBL_ENTRY _ZTV7S8593C1[];
Class_Descriptor cd_S8593C1 = {  "S8593C1", // class name
  bases_S8593C1, 1,
  &(vtc_S8593C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S8593C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8593C1),28, //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  S8592C2  {
  virtual  ~S8592C2(); // _ZN7S8592C2D1Ev
  virtual void  v13(); // _ZN7S8592C23v13Ev
  virtual void  v14(); // _ZN7S8592C23v14Ev
  virtual void  v15(); // _ZN7S8592C23v15Ev
  virtual void  v16(); // _ZN7S8592C23v16Ev
  virtual void  v17(); // _ZN7S8592C23v17Ev
  virtual void  v18(); // _ZN7S8592C23v18Ev
  virtual void  v19(); // _ZN7S8592C23v19Ev
  virtual void  v20(); // _ZN7S8592C23v20Ev
  virtual void  v21(); // _ZN7S8592C23v21Ev
  virtual void  v22(); // _ZN7S8592C23v22Ev
  virtual void  v23(); // _ZN7S8592C23v23Ev
  virtual void  v24(); // _ZN7S8592C23v24Ev
  S8592C2(); // tgen
};
//SIG(-1 S8592C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8592C2 ::~S8592C2(){ note_dtor("S8592C2", this);}
void  S8592C2 ::v13(){vfunc_called(this, "_ZN7S8592C23v13Ev");}
void  S8592C2 ::v14(){vfunc_called(this, "_ZN7S8592C23v14Ev");}
void  S8592C2 ::v15(){vfunc_called(this, "_ZN7S8592C23v15Ev");}
void  S8592C2 ::v16(){vfunc_called(this, "_ZN7S8592C23v16Ev");}
void  S8592C2 ::v17(){vfunc_called(this, "_ZN7S8592C23v17Ev");}
void  S8592C2 ::v18(){vfunc_called(this, "_ZN7S8592C23v18Ev");}
void  S8592C2 ::v19(){vfunc_called(this, "_ZN7S8592C23v19Ev");}
void  S8592C2 ::v20(){vfunc_called(this, "_ZN7S8592C23v20Ev");}
void  S8592C2 ::v21(){vfunc_called(this, "_ZN7S8592C23v21Ev");}
void  S8592C2 ::v22(){vfunc_called(this, "_ZN7S8592C23v22Ev");}
void  S8592C2 ::v23(){vfunc_called(this, "_ZN7S8592C23v23Ev");}
void  S8592C2 ::v24(){vfunc_called(this, "_ZN7S8592C23v24Ev");}
S8592C2 ::S8592C2(){ note_ctor("S8592C2", this);} // tgen

static void Test_S8592C2()
{
  extern Class_Descriptor cd_S8592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8592C2, buf);
    S8592C2 *dp, &lv = *(dp=new (buf) S8592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8592C2)");
    test_class_info(&lv, &cd_S8592C2);
    dp->~S8592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8592C2(Test_S8592C2, "S8592C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8592C2C1Ev();
extern void _ZN7S8592C2D1Ev();
Name_Map name_map_S8592C2[] = {
  NSPAIR(_ZN7S8592C2C1Ev),
  NSPAIR(_ZN7S8592C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8592C2[];
extern void _ZN7S8592C2D1Ev();
extern void _ZN7S8592C2D0Ev();
extern void _ZN7S8592C23v13Ev();
extern void _ZN7S8592C23v14Ev();
extern void _ZN7S8592C23v15Ev();
extern void _ZN7S8592C23v16Ev();
extern void _ZN7S8592C23v17Ev();
extern void _ZN7S8592C23v18Ev();
extern void _ZN7S8592C23v19Ev();
extern void _ZN7S8592C23v20Ev();
extern void _ZN7S8592C23v21Ev();
extern void _ZN7S8592C23v22Ev();
extern void _ZN7S8592C23v23Ev();
extern void _ZN7S8592C23v24Ev();
static  VTBL_ENTRY vtc_S8592C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8592C2[0]),
  (VTBL_ENTRY)&_ZN7S8592C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8592C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8592C2[];
extern  VTBL_ENTRY _ZTV7S8592C2[];
Class_Descriptor cd_S8592C2 = {  "S8592C2", // class name
  0,0,//no base classes
  &(vtc_S8592C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8592C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8592C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8592C1  : S8592C2 {
  void *s8592c1f0[2];
  virtual  ~S8592C1(); // _ZN7S8592C1D1Ev
  virtual void  v1(); // _ZN7S8592C12v1Ev
  virtual void  v2(); // _ZN7S8592C12v2Ev
  virtual void  v3(); // _ZN7S8592C12v3Ev
  virtual void  v4(); // _ZN7S8592C12v4Ev
  virtual void  v5(); // _ZN7S8592C12v5Ev
  virtual void  v6(); // _ZN7S8592C12v6Ev
  virtual void  v7(); // _ZN7S8592C12v7Ev
  virtual void  v8(); // _ZN7S8592C12v8Ev
  virtual void  v9(); // _ZN7S8592C12v9Ev
  virtual void  v10(); // _ZN7S8592C13v10Ev
  virtual void  v11(); // _ZN7S8592C13v11Ev
  virtual void  v12(); // _ZN7S8592C13v12Ev
  S8592C1(); // tgen
};
//SIG(1 S8592C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[2]}


 S8592C1 ::~S8592C1(){ note_dtor("S8592C1", this);}
void  S8592C1 ::v1(){vfunc_called(this, "_ZN7S8592C12v1Ev");}
void  S8592C1 ::v2(){vfunc_called(this, "_ZN7S8592C12v2Ev");}
void  S8592C1 ::v3(){vfunc_called(this, "_ZN7S8592C12v3Ev");}
void  S8592C1 ::v4(){vfunc_called(this, "_ZN7S8592C12v4Ev");}
void  S8592C1 ::v5(){vfunc_called(this, "_ZN7S8592C12v5Ev");}
void  S8592C1 ::v6(){vfunc_called(this, "_ZN7S8592C12v6Ev");}
void  S8592C1 ::v7(){vfunc_called(this, "_ZN7S8592C12v7Ev");}
void  S8592C1 ::v8(){vfunc_called(this, "_ZN7S8592C12v8Ev");}
void  S8592C1 ::v9(){vfunc_called(this, "_ZN7S8592C12v9Ev");}
void  S8592C1 ::v10(){vfunc_called(this, "_ZN7S8592C13v10Ev");}
void  S8592C1 ::v11(){vfunc_called(this, "_ZN7S8592C13v11Ev");}
void  S8592C1 ::v12(){vfunc_called(this, "_ZN7S8592C13v12Ev");}
S8592C1 ::S8592C1(){ note_ctor("S8592C1", this);} // tgen

static void Test_S8592C1()
{
  extern Class_Descriptor cd_S8592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S8592C1, buf);
    S8592C1 *dp, &lv = *(dp=new (buf) S8592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S8592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8592C1)");
    check_base_class_offset(lv, (S8592C2*), 0, "S8592C1");
    check_field_offset(lv, s8592c1f0, ABISELECT(8,4), "S8592C1.s8592c1f0");
    test_class_info(&lv, &cd_S8592C1);
    dp->~S8592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8592C1(Test_S8592C1, "S8592C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S8592C1C1Ev();
extern void _ZN7S8592C1D1Ev();
Name_Map name_map_S8592C1[] = {
  NSPAIR(_ZN7S8592C1C1Ev),
  NSPAIR(_ZN7S8592C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8592C2;
extern VTBL_ENTRY _ZTI7S8592C2[];
extern  VTBL_ENTRY _ZTV7S8592C2[];
static Base_Class bases_S8592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8592C1[];
extern void _ZN7S8592C1D1Ev();
extern void _ZN7S8592C1D0Ev();
extern void _ZN7S8592C23v13Ev();
extern void _ZN7S8592C23v14Ev();
extern void _ZN7S8592C23v15Ev();
extern void _ZN7S8592C23v16Ev();
extern void _ZN7S8592C23v17Ev();
extern void _ZN7S8592C23v18Ev();
extern void _ZN7S8592C23v19Ev();
extern void _ZN7S8592C23v20Ev();
extern void _ZN7S8592C23v21Ev();
extern void _ZN7S8592C23v22Ev();
extern void _ZN7S8592C23v23Ev();
extern void _ZN7S8592C23v24Ev();
extern void _ZN7S8592C12v1Ev();
extern void _ZN7S8592C12v2Ev();
extern void _ZN7S8592C12v3Ev();
extern void _ZN7S8592C12v4Ev();
extern void _ZN7S8592C12v5Ev();
extern void _ZN7S8592C12v6Ev();
extern void _ZN7S8592C12v7Ev();
extern void _ZN7S8592C12v8Ev();
extern void _ZN7S8592C12v9Ev();
extern void _ZN7S8592C13v10Ev();
extern void _ZN7S8592C13v11Ev();
extern void _ZN7S8592C13v12Ev();
static  VTBL_ENTRY vtc_S8592C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8592C1[0]),
  (VTBL_ENTRY)&_ZN7S8592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8592C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8592C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8592C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8592C1[];
extern  VTBL_ENTRY _ZTV7S8592C1[];
Class_Descriptor cd_S8592C1 = {  "S8592C1", // class name
  bases_S8592C1, 1,
  &(vtc_S8592C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S8592C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8592C1),28, //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  S8594C2  {
  virtual  ~S8594C2(); // _ZN7S8594C2D1Ev
  virtual void  v13(); // _ZN7S8594C23v13Ev
  virtual void  v14(); // _ZN7S8594C23v14Ev
  virtual void  v15(); // _ZN7S8594C23v15Ev
  virtual void  v16(); // _ZN7S8594C23v16Ev
  virtual void  v17(); // _ZN7S8594C23v17Ev
  virtual void  v18(); // _ZN7S8594C23v18Ev
  virtual void  v19(); // _ZN7S8594C23v19Ev
  virtual void  v20(); // _ZN7S8594C23v20Ev
  virtual void  v21(); // _ZN7S8594C23v21Ev
  virtual void  v22(); // _ZN7S8594C23v22Ev
  virtual void  v23(); // _ZN7S8594C23v23Ev
  virtual void  v24(); // _ZN7S8594C23v24Ev
  S8594C2(); // tgen
};
//SIG(-1 S8594C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8594C2 ::~S8594C2(){ note_dtor("S8594C2", this);}
void  S8594C2 ::v13(){vfunc_called(this, "_ZN7S8594C23v13Ev");}
void  S8594C2 ::v14(){vfunc_called(this, "_ZN7S8594C23v14Ev");}
void  S8594C2 ::v15(){vfunc_called(this, "_ZN7S8594C23v15Ev");}
void  S8594C2 ::v16(){vfunc_called(this, "_ZN7S8594C23v16Ev");}
void  S8594C2 ::v17(){vfunc_called(this, "_ZN7S8594C23v17Ev");}
void  S8594C2 ::v18(){vfunc_called(this, "_ZN7S8594C23v18Ev");}
void  S8594C2 ::v19(){vfunc_called(this, "_ZN7S8594C23v19Ev");}
void  S8594C2 ::v20(){vfunc_called(this, "_ZN7S8594C23v20Ev");}
void  S8594C2 ::v21(){vfunc_called(this, "_ZN7S8594C23v21Ev");}
void  S8594C2 ::v22(){vfunc_called(this, "_ZN7S8594C23v22Ev");}
void  S8594C2 ::v23(){vfunc_called(this, "_ZN7S8594C23v23Ev");}
void  S8594C2 ::v24(){vfunc_called(this, "_ZN7S8594C23v24Ev");}
S8594C2 ::S8594C2(){ note_ctor("S8594C2", this);} // tgen

static void Test_S8594C2()
{
  extern Class_Descriptor cd_S8594C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8594C2, buf);
    S8594C2 *dp, &lv = *(dp=new (buf) S8594C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8594C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8594C2)");
    test_class_info(&lv, &cd_S8594C2);
    dp->~S8594C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8594C2(Test_S8594C2, "S8594C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8594C2C1Ev();
extern void _ZN7S8594C2D1Ev();
Name_Map name_map_S8594C2[] = {
  NSPAIR(_ZN7S8594C2C1Ev),
  NSPAIR(_ZN7S8594C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8594C2[];
extern void _ZN7S8594C2D1Ev();
extern void _ZN7S8594C2D0Ev();
extern void _ZN7S8594C23v13Ev();
extern void _ZN7S8594C23v14Ev();
extern void _ZN7S8594C23v15Ev();
extern void _ZN7S8594C23v16Ev();
extern void _ZN7S8594C23v17Ev();
extern void _ZN7S8594C23v18Ev();
extern void _ZN7S8594C23v19Ev();
extern void _ZN7S8594C23v20Ev();
extern void _ZN7S8594C23v21Ev();
extern void _ZN7S8594C23v22Ev();
extern void _ZN7S8594C23v23Ev();
extern void _ZN7S8594C23v24Ev();
static  VTBL_ENTRY vtc_S8594C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8594C2[0]),
  (VTBL_ENTRY)&_ZN7S8594C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8594C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8594C2[];
extern  VTBL_ENTRY _ZTV7S8594C2[];
Class_Descriptor cd_S8594C2 = {  "S8594C2", // class name
  0,0,//no base classes
  &(vtc_S8594C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8594C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8594C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8594C1  : S8594C2 {
  void *s8594c1f0;
  virtual  ~S8594C1(); // _ZN7S8594C1D1Ev
  virtual void  v1(); // _ZN7S8594C12v1Ev
  virtual void  v2(); // _ZN7S8594C12v2Ev
  virtual void  v3(); // _ZN7S8594C12v3Ev
  virtual void  v4(); // _ZN7S8594C12v4Ev
  virtual void  v5(); // _ZN7S8594C12v5Ev
  virtual void  v6(); // _ZN7S8594C12v6Ev
  virtual void  v7(); // _ZN7S8594C12v7Ev
  virtual void  v8(); // _ZN7S8594C12v8Ev
  virtual void  v9(); // _ZN7S8594C12v9Ev
  virtual void  v10(); // _ZN7S8594C13v10Ev
  virtual void  v11(); // _ZN7S8594C13v11Ev
  virtual void  v12(); // _ZN7S8594C13v12Ev
  S8594C1(); // tgen
};
//SIG(1 S8594C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp}


 S8594C1 ::~S8594C1(){ note_dtor("S8594C1", this);}
void  S8594C1 ::v1(){vfunc_called(this, "_ZN7S8594C12v1Ev");}
void  S8594C1 ::v2(){vfunc_called(this, "_ZN7S8594C12v2Ev");}
void  S8594C1 ::v3(){vfunc_called(this, "_ZN7S8594C12v3Ev");}
void  S8594C1 ::v4(){vfunc_called(this, "_ZN7S8594C12v4Ev");}
void  S8594C1 ::v5(){vfunc_called(this, "_ZN7S8594C12v5Ev");}
void  S8594C1 ::v6(){vfunc_called(this, "_ZN7S8594C12v6Ev");}
void  S8594C1 ::v7(){vfunc_called(this, "_ZN7S8594C12v7Ev");}
void  S8594C1 ::v8(){vfunc_called(this, "_ZN7S8594C12v8Ev");}
void  S8594C1 ::v9(){vfunc_called(this, "_ZN7S8594C12v9Ev");}
void  S8594C1 ::v10(){vfunc_called(this, "_ZN7S8594C13v10Ev");}
void  S8594C1 ::v11(){vfunc_called(this, "_ZN7S8594C13v11Ev");}
void  S8594C1 ::v12(){vfunc_called(this, "_ZN7S8594C13v12Ev");}
S8594C1 ::S8594C1(){ note_ctor("S8594C1", this);} // tgen

static void Test_S8594C1()
{
  extern Class_Descriptor cd_S8594C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8594C1, buf);
    S8594C1 *dp, &lv = *(dp=new (buf) S8594C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8594C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8594C1)");
    check_base_class_offset(lv, (S8594C2*), 0, "S8594C1");
    check_field_offset(lv, s8594c1f0, ABISELECT(8,4), "S8594C1.s8594c1f0");
    test_class_info(&lv, &cd_S8594C1);
    dp->~S8594C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8594C1(Test_S8594C1, "S8594C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8594C1C1Ev();
extern void _ZN7S8594C1D1Ev();
Name_Map name_map_S8594C1[] = {
  NSPAIR(_ZN7S8594C1C1Ev),
  NSPAIR(_ZN7S8594C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8594C2;
extern VTBL_ENTRY _ZTI7S8594C2[];
extern  VTBL_ENTRY _ZTV7S8594C2[];
static Base_Class bases_S8594C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8594C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8594C1[];
extern void _ZN7S8594C1D1Ev();
extern void _ZN7S8594C1D0Ev();
extern void _ZN7S8594C23v13Ev();
extern void _ZN7S8594C23v14Ev();
extern void _ZN7S8594C23v15Ev();
extern void _ZN7S8594C23v16Ev();
extern void _ZN7S8594C23v17Ev();
extern void _ZN7S8594C23v18Ev();
extern void _ZN7S8594C23v19Ev();
extern void _ZN7S8594C23v20Ev();
extern void _ZN7S8594C23v21Ev();
extern void _ZN7S8594C23v22Ev();
extern void _ZN7S8594C23v23Ev();
extern void _ZN7S8594C23v24Ev();
extern void _ZN7S8594C12v1Ev();
extern void _ZN7S8594C12v2Ev();
extern void _ZN7S8594C12v3Ev();
extern void _ZN7S8594C12v4Ev();
extern void _ZN7S8594C12v5Ev();
extern void _ZN7S8594C12v6Ev();
extern void _ZN7S8594C12v7Ev();
extern void _ZN7S8594C12v8Ev();
extern void _ZN7S8594C12v9Ev();
extern void _ZN7S8594C13v10Ev();
extern void _ZN7S8594C13v11Ev();
extern void _ZN7S8594C13v12Ev();
static  VTBL_ENTRY vtc_S8594C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8594C1[0]),
  (VTBL_ENTRY)&_ZN7S8594C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8594C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8594C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8594C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8594C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8594C1[];
extern  VTBL_ENTRY _ZTV7S8594C1[];
Class_Descriptor cd_S8594C1 = {  "S8594C1", // class name
  bases_S8594C1, 1,
  &(vtc_S8594C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8594C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8594C1),28, //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  S6466C2  {
  virtual  ~S6466C2(); // _ZN7S6466C2D1Ev
  virtual void  v13(); // _ZN7S6466C23v13Ev
  virtual void  v14(); // _ZN7S6466C23v14Ev
  virtual void  v15(); // _ZN7S6466C23v15Ev
  virtual void  v16(); // _ZN7S6466C23v16Ev
  virtual void  v17(); // _ZN7S6466C23v17Ev
  virtual void  v18(); // _ZN7S6466C23v18Ev
  virtual void  v19(); // _ZN7S6466C23v19Ev
  virtual void  v20(); // _ZN7S6466C23v20Ev
  virtual void  v21(); // _ZN7S6466C23v21Ev
  virtual void  v22(); // _ZN7S6466C23v22Ev
  virtual void  v23(); // _ZN7S6466C23v23Ev
  virtual void  v24(); // _ZN7S6466C23v24Ev
  S6466C2(); // tgen
};
//SIG(-1 S6466C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S6466C2 ::~S6466C2(){ note_dtor("S6466C2", this);}
void  S6466C2 ::v13(){vfunc_called(this, "_ZN7S6466C23v13Ev");}
void  S6466C2 ::v14(){vfunc_called(this, "_ZN7S6466C23v14Ev");}
void  S6466C2 ::v15(){vfunc_called(this, "_ZN7S6466C23v15Ev");}
void  S6466C2 ::v16(){vfunc_called(this, "_ZN7S6466C23v16Ev");}
void  S6466C2 ::v17(){vfunc_called(this, "_ZN7S6466C23v17Ev");}
void  S6466C2 ::v18(){vfunc_called(this, "_ZN7S6466C23v18Ev");}
void  S6466C2 ::v19(){vfunc_called(this, "_ZN7S6466C23v19Ev");}
void  S6466C2 ::v20(){vfunc_called(this, "_ZN7S6466C23v20Ev");}
void  S6466C2 ::v21(){vfunc_called(this, "_ZN7S6466C23v21Ev");}
void  S6466C2 ::v22(){vfunc_called(this, "_ZN7S6466C23v22Ev");}
void  S6466C2 ::v23(){vfunc_called(this, "_ZN7S6466C23v23Ev");}
void  S6466C2 ::v24(){vfunc_called(this, "_ZN7S6466C23v24Ev");}
S6466C2 ::S6466C2(){ note_ctor("S6466C2", this);} // tgen

static void Test_S6466C2()
{
  extern Class_Descriptor cd_S6466C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6466C2, buf);
    S6466C2 *dp, &lv = *(dp=new (buf) S6466C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6466C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6466C2)");
    test_class_info(&lv, &cd_S6466C2);
    dp->~S6466C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6466C2(Test_S6466C2, "S6466C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6466C2C1Ev();
extern void _ZN7S6466C2D1Ev();
Name_Map name_map_S6466C2[] = {
  NSPAIR(_ZN7S6466C2C1Ev),
  NSPAIR(_ZN7S6466C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6466C2[];
extern void _ZN7S6466C2D1Ev();
extern void _ZN7S6466C2D0Ev();
extern void _ZN7S6466C23v13Ev();
extern void _ZN7S6466C23v14Ev();
extern void _ZN7S6466C23v15Ev();
extern void _ZN7S6466C23v16Ev();
extern void _ZN7S6466C23v17Ev();
extern void _ZN7S6466C23v18Ev();
extern void _ZN7S6466C23v19Ev();
extern void _ZN7S6466C23v20Ev();
extern void _ZN7S6466C23v21Ev();
extern void _ZN7S6466C23v22Ev();
extern void _ZN7S6466C23v23Ev();
extern void _ZN7S6466C23v24Ev();
static  VTBL_ENTRY vtc_S6466C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6466C2[0]),
  (VTBL_ENTRY)&_ZN7S6466C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6466C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S6466C2[];
extern  VTBL_ENTRY _ZTV7S6466C2[];
Class_Descriptor cd_S6466C2 = {  "S6466C2", // class name
  0,0,//no base classes
  &(vtc_S6466C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6466C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6466C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6466C1  : S6466C2 {
  virtual  ~S6466C1(); // _ZN7S6466C1D1Ev
  virtual void  v1(); // _ZN7S6466C12v1Ev
  virtual void  v2(); // _ZN7S6466C12v2Ev
  virtual void  v3(); // _ZN7S6466C12v3Ev
  virtual void  v4(); // _ZN7S6466C12v4Ev
  virtual void  v5(); // _ZN7S6466C12v5Ev
  virtual void  v6(); // _ZN7S6466C12v6Ev
  virtual void  v7(); // _ZN7S6466C12v7Ev
  virtual void  v8(); // _ZN7S6466C12v8Ev
  virtual void  v9(); // _ZN7S6466C12v9Ev
  virtual void  v10(); // _ZN7S6466C13v10Ev
  virtual void  v11(); // _ZN7S6466C13v11Ev
  virtual void  v12(); // _ZN7S6466C13v12Ev
  S6466C1(); // tgen
};
//SIG(1 S6466C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S6466C1 ::~S6466C1(){ note_dtor("S6466C1", this);}
void  S6466C1 ::v1(){vfunc_called(this, "_ZN7S6466C12v1Ev");}
void  S6466C1 ::v2(){vfunc_called(this, "_ZN7S6466C12v2Ev");}
void  S6466C1 ::v3(){vfunc_called(this, "_ZN7S6466C12v3Ev");}
void  S6466C1 ::v4(){vfunc_called(this, "_ZN7S6466C12v4Ev");}
void  S6466C1 ::v5(){vfunc_called(this, "_ZN7S6466C12v5Ev");}
void  S6466C1 ::v6(){vfunc_called(this, "_ZN7S6466C12v6Ev");}
void  S6466C1 ::v7(){vfunc_called(this, "_ZN7S6466C12v7Ev");}
void  S6466C1 ::v8(){vfunc_called(this, "_ZN7S6466C12v8Ev");}
void  S6466C1 ::v9(){vfunc_called(this, "_ZN7S6466C12v9Ev");}
void  S6466C1 ::v10(){vfunc_called(this, "_ZN7S6466C13v10Ev");}
void  S6466C1 ::v11(){vfunc_called(this, "_ZN7S6466C13v11Ev");}
void  S6466C1 ::v12(){vfunc_called(this, "_ZN7S6466C13v12Ev");}
S6466C1 ::S6466C1(){ note_ctor("S6466C1", this);} // tgen

static void Test_S6466C1()
{
  extern Class_Descriptor cd_S6466C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6466C1, buf);
    S6466C1 *dp, &lv = *(dp=new (buf) S6466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6466C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6466C1)");
    check_base_class_offset(lv, (S6466C2*), 0, "S6466C1");
    test_class_info(&lv, &cd_S6466C1);
    dp->~S6466C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6466C1(Test_S6466C1, "S6466C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6466C1C1Ev();
extern void _ZN7S6466C1D1Ev();
Name_Map name_map_S6466C1[] = {
  NSPAIR(_ZN7S6466C1C1Ev),
  NSPAIR(_ZN7S6466C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6466C2;
extern VTBL_ENTRY _ZTI7S6466C2[];
extern  VTBL_ENTRY _ZTV7S6466C2[];
static Base_Class bases_S6466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6466C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6466C1[];
extern void _ZN7S6466C1D1Ev();
extern void _ZN7S6466C1D0Ev();
extern void _ZN7S6466C23v13Ev();
extern void _ZN7S6466C23v14Ev();
extern void _ZN7S6466C23v15Ev();
extern void _ZN7S6466C23v16Ev();
extern void _ZN7S6466C23v17Ev();
extern void _ZN7S6466C23v18Ev();
extern void _ZN7S6466C23v19Ev();
extern void _ZN7S6466C23v20Ev();
extern void _ZN7S6466C23v21Ev();
extern void _ZN7S6466C23v22Ev();
extern void _ZN7S6466C23v23Ev();
extern void _ZN7S6466C23v24Ev();
extern void _ZN7S6466C12v1Ev();
extern void _ZN7S6466C12v2Ev();
extern void _ZN7S6466C12v3Ev();
extern void _ZN7S6466C12v4Ev();
extern void _ZN7S6466C12v5Ev();
extern void _ZN7S6466C12v6Ev();
extern void _ZN7S6466C12v7Ev();
extern void _ZN7S6466C12v8Ev();
extern void _ZN7S6466C12v9Ev();
extern void _ZN7S6466C13v10Ev();
extern void _ZN7S6466C13v11Ev();
extern void _ZN7S6466C13v12Ev();
static  VTBL_ENTRY vtc_S6466C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6466C1[0]),
  (VTBL_ENTRY)&_ZN7S6466C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6466C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6466C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6466C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6466C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S6466C1[];
extern  VTBL_ENTRY _ZTV7S6466C1[];
Class_Descriptor cd_S6466C1 = {  "S6466C1", // class name
  bases_S6466C1, 1,
  &(vtc_S6466C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6466C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6466C1),28, //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  S8595C2  {
  virtual  ~S8595C2(); // _ZN7S8595C2D1Ev
  virtual void  v13(); // _ZN7S8595C23v13Ev
  virtual void  v14(); // _ZN7S8595C23v14Ev
  virtual void  v15(); // _ZN7S8595C23v15Ev
  virtual void  v16(); // _ZN7S8595C23v16Ev
  virtual void  v17(); // _ZN7S8595C23v17Ev
  virtual void  v18(); // _ZN7S8595C23v18Ev
  virtual void  v19(); // _ZN7S8595C23v19Ev
  virtual void  v20(); // _ZN7S8595C23v20Ev
  virtual void  v21(); // _ZN7S8595C23v21Ev
  virtual void  v22(); // _ZN7S8595C23v22Ev
  virtual void  v23(); // _ZN7S8595C23v23Ev
  virtual void  v24(); // _ZN7S8595C23v24Ev
  S8595C2(); // tgen
};
//SIG(-1 S8595C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8595C2 ::~S8595C2(){ note_dtor("S8595C2", this);}
void  S8595C2 ::v13(){vfunc_called(this, "_ZN7S8595C23v13Ev");}
void  S8595C2 ::v14(){vfunc_called(this, "_ZN7S8595C23v14Ev");}
void  S8595C2 ::v15(){vfunc_called(this, "_ZN7S8595C23v15Ev");}
void  S8595C2 ::v16(){vfunc_called(this, "_ZN7S8595C23v16Ev");}
void  S8595C2 ::v17(){vfunc_called(this, "_ZN7S8595C23v17Ev");}
void  S8595C2 ::v18(){vfunc_called(this, "_ZN7S8595C23v18Ev");}
void  S8595C2 ::v19(){vfunc_called(this, "_ZN7S8595C23v19Ev");}
void  S8595C2 ::v20(){vfunc_called(this, "_ZN7S8595C23v20Ev");}
void  S8595C2 ::v21(){vfunc_called(this, "_ZN7S8595C23v21Ev");}
void  S8595C2 ::v22(){vfunc_called(this, "_ZN7S8595C23v22Ev");}
void  S8595C2 ::v23(){vfunc_called(this, "_ZN7S8595C23v23Ev");}
void  S8595C2 ::v24(){vfunc_called(this, "_ZN7S8595C23v24Ev");}
S8595C2 ::S8595C2(){ note_ctor("S8595C2", this);} // tgen

static void Test_S8595C2()
{
  extern Class_Descriptor cd_S8595C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8595C2, buf);
    S8595C2 *dp, &lv = *(dp=new (buf) S8595C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8595C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8595C2)");
    test_class_info(&lv, &cd_S8595C2);
    dp->~S8595C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8595C2(Test_S8595C2, "S8595C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8595C2C1Ev();
extern void _ZN7S8595C2D1Ev();
Name_Map name_map_S8595C2[] = {
  NSPAIR(_ZN7S8595C2C1Ev),
  NSPAIR(_ZN7S8595C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8595C2[];
extern void _ZN7S8595C2D1Ev();
extern void _ZN7S8595C2D0Ev();
extern void _ZN7S8595C23v13Ev();
extern void _ZN7S8595C23v14Ev();
extern void _ZN7S8595C23v15Ev();
extern void _ZN7S8595C23v16Ev();
extern void _ZN7S8595C23v17Ev();
extern void _ZN7S8595C23v18Ev();
extern void _ZN7S8595C23v19Ev();
extern void _ZN7S8595C23v20Ev();
extern void _ZN7S8595C23v21Ev();
extern void _ZN7S8595C23v22Ev();
extern void _ZN7S8595C23v23Ev();
extern void _ZN7S8595C23v24Ev();
static  VTBL_ENTRY vtc_S8595C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8595C2[0]),
  (VTBL_ENTRY)&_ZN7S8595C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8595C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S8595C2[];
extern  VTBL_ENTRY _ZTV7S8595C2[];
Class_Descriptor cd_S8595C2 = {  "S8595C2", // class name
  0,0,//no base classes
  &(vtc_S8595C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8595C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8595C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8595C1  : S8595C2 {
  virtual  ~S8595C1(); // _ZN7S8595C1D1Ev
  virtual void  v1(); // _ZN7S8595C12v1Ev
  virtual void  v2(); // _ZN7S8595C12v2Ev
  virtual void  v3(); // _ZN7S8595C12v3Ev
  virtual void  v4(); // _ZN7S8595C12v4Ev
  virtual void  v5(); // _ZN7S8595C12v5Ev
  virtual void  v6(); // _ZN7S8595C12v6Ev
  virtual void  v7(); // _ZN7S8595C12v7Ev
  virtual void  v8(); // _ZN7S8595C12v8Ev
  virtual void  v9(); // _ZN7S8595C12v9Ev
  virtual void  v10(); // _ZN7S8595C13v10Ev
  virtual void  v11(); // _ZN7S8595C13v11Ev
  virtual void  v12(); // _ZN7S8595C13v12Ev
  S8595C1(); // tgen
};
//SIG(1 S8595C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


 S8595C1 ::~S8595C1(){ note_dtor("S8595C1", this);}
void  S8595C1 ::v1(){vfunc_called(this, "_ZN7S8595C12v1Ev");}
void  S8595C1 ::v2(){vfunc_called(this, "_ZN7S8595C12v2Ev");}
void  S8595C1 ::v3(){vfunc_called(this, "_ZN7S8595C12v3Ev");}
void  S8595C1 ::v4(){vfunc_called(this, "_ZN7S8595C12v4Ev");}
void  S8595C1 ::v5(){vfunc_called(this, "_ZN7S8595C12v5Ev");}
void  S8595C1 ::v6(){vfunc_called(this, "_ZN7S8595C12v6Ev");}
void  S8595C1 ::v7(){vfunc_called(this, "_ZN7S8595C12v7Ev");}
void  S8595C1 ::v8(){vfunc_called(this, "_ZN7S8595C12v8Ev");}
void  S8595C1 ::v9(){vfunc_called(this, "_ZN7S8595C12v9Ev");}
void  S8595C1 ::v10(){vfunc_called(this, "_ZN7S8595C13v10Ev");}
void  S8595C1 ::v11(){vfunc_called(this, "_ZN7S8595C13v11Ev");}
void  S8595C1 ::v12(){vfunc_called(this, "_ZN7S8595C13v12Ev");}
S8595C1 ::S8595C1(){ note_ctor("S8595C1", this);} // tgen

static void Test_S8595C1()
{
  extern Class_Descriptor cd_S8595C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8595C1, buf);
    S8595C1 *dp, &lv = *(dp=new (buf) S8595C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8595C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8595C1)");
    check_base_class_offset(lv, (S8595C2*), 0, "S8595C1");
    test_class_info(&lv, &cd_S8595C1);
    dp->~S8595C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8595C1(Test_S8595C1, "S8595C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8595C1C1Ev();
extern void _ZN7S8595C1D1Ev();
Name_Map name_map_S8595C1[] = {
  NSPAIR(_ZN7S8595C1C1Ev),
  NSPAIR(_ZN7S8595C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8595C2;
extern VTBL_ENTRY _ZTI7S8595C2[];
extern  VTBL_ENTRY _ZTV7S8595C2[];
static Base_Class bases_S8595C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8595C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8595C1[];
extern void _ZN7S8595C1D1Ev();
extern void _ZN7S8595C1D0Ev();
extern void _ZN7S8595C23v13Ev();
extern void _ZN7S8595C23v14Ev();
extern void _ZN7S8595C23v15Ev();
extern void _ZN7S8595C23v16Ev();
extern void _ZN7S8595C23v17Ev();
extern void _ZN7S8595C23v18Ev();
extern void _ZN7S8595C23v19Ev();
extern void _ZN7S8595C23v20Ev();
extern void _ZN7S8595C23v21Ev();
extern void _ZN7S8595C23v22Ev();
extern void _ZN7S8595C23v23Ev();
extern void _ZN7S8595C23v24Ev();
extern void _ZN7S8595C12v1Ev();
extern void _ZN7S8595C12v2Ev();
extern void _ZN7S8595C12v3Ev();
extern void _ZN7S8595C12v4Ev();
extern void _ZN7S8595C12v5Ev();
extern void _ZN7S8595C12v6Ev();
extern void _ZN7S8595C12v7Ev();
extern void _ZN7S8595C12v8Ev();
extern void _ZN7S8595C12v9Ev();
extern void _ZN7S8595C13v10Ev();
extern void _ZN7S8595C13v11Ev();
extern void _ZN7S8595C13v12Ev();
static  VTBL_ENTRY vtc_S8595C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8595C1[0]),
  (VTBL_ENTRY)&_ZN7S8595C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8595C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8595C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8595C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8595C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8595C1[];
extern  VTBL_ENTRY _ZTV7S8595C1[];
Class_Descriptor cd_S8595C1 = {  "S8595C1", // class name
  bases_S8595C1, 1,
  &(vtc_S8595C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8595C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8595C1),28, //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  S4775C3  {
  ::S18423C15_nt s4775c3f0;
  int s4775c3f1[2];
  char s4775c3f2;
  virtual  ~S4775C3(); // _ZN7S4775C3D1Ev
  virtual void  v3(); // _ZN7S4775C32v3Ev
  virtual void  v4(); // _ZN7S4775C32v4Ev
  virtual void  v5(); // _ZN7S4775C32v5Ev
  S4775C3(); // tgen
};
//SIG(-1 S4775C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4775C3 ::~S4775C3(){ note_dtor("S4775C3", this);}
void  S4775C3 ::v3(){vfunc_called(this, "_ZN7S4775C32v3Ev");}
void  S4775C3 ::v4(){vfunc_called(this, "_ZN7S4775C32v4Ev");}
void  S4775C3 ::v5(){vfunc_called(this, "_ZN7S4775C32v5Ev");}
S4775C3 ::S4775C3(){ note_ctor("S4775C3", this);} // tgen

static void Test_S4775C3()
{
  extern Class_Descriptor cd_S4775C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4775C3, buf);
    S4775C3 *dp, &lv = *(dp=new (buf) S4775C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4775C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4775C3)");
    check_field_offset(lv, s4775c3f0, ABISELECT(8,4), "S4775C3.s4775c3f0");
    check_field_offset(lv, s4775c3f1, ABISELECT(24,16), "S4775C3.s4775c3f1");
    check_field_offset(lv, s4775c3f2, ABISELECT(32,24), "S4775C3.s4775c3f2");
    test_class_info(&lv, &cd_S4775C3);
    dp->~S4775C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4775C3(Test_S4775C3, "S4775C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4775C3C1Ev();
extern void _ZN7S4775C3D1Ev();
Name_Map name_map_S4775C3[] = {
  NSPAIR(_ZN7S4775C3C1Ev),
  NSPAIR(_ZN7S4775C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4775C3[];
extern void _ZN7S4775C3D1Ev();
extern void _ZN7S4775C3D0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
static  VTBL_ENTRY vtc_S4775C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4775C3[0]),
  (VTBL_ENTRY)&_ZN7S4775C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4775C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
Class_Descriptor cd_S4775C3 = {  "S4775C3", // class name
  0,0,//no base classes
  &(vtc_S4775C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4775C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4775C3),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  S4775C2_nt  : S4775C3 {
  void *s4775c2f0;
  virtual void  v6(); // _ZN10S4775C2_nt2v6Ev
  virtual void  v7(); // _ZN10S4775C2_nt2v7Ev
  ~S4775C2_nt(); // tgen
  S4775C2_nt(); // tgen
};
//SIG(-1 S4775C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4775C2_nt ::v6(){vfunc_called(this, "_ZN10S4775C2_nt2v6Ev");}
void  S4775C2_nt ::v7(){vfunc_called(this, "_ZN10S4775C2_nt2v7Ev");}
S4775C2_nt ::~S4775C2_nt(){ note_dtor("S4775C2_nt", this);} // tgen
S4775C2_nt ::S4775C2_nt(){ note_ctor("S4775C2_nt", this);} // tgen

//skip512 S4775C2_nt

#else // __cplusplus

extern void _ZN10S4775C2_ntC1Ev();
extern void _ZN10S4775C2_ntD1Ev();
Name_Map name_map_S4775C2_nt[] = {
  NSPAIR(_ZN10S4775C2_ntC1Ev),
  NSPAIR(_ZN10S4775C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4775C3;
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
static Base_Class bases_S4775C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI10S4775C2_nt[];
extern void _ZN10S4775C2_ntD1Ev();
extern void _ZN10S4775C2_ntD0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
extern void _ZN10S4775C2_nt2v6Ev();
extern void _ZN10S4775C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S4775C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4775C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4775C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S4775C2_nt[];
VTBL_ENTRY *P__ZTI10S4775C2_nt = _ZTI10S4775C2_nt; 
extern  VTBL_ENTRY _ZTV10S4775C2_nt[];
Class_Descriptor cd_S4775C2_nt = {  "S4775C2_nt", // class name
  bases_S4775C2_nt, 1,
  &(vtc_S4775C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4775C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4775C2_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  S4775C1  : S4775C2_nt {
  ::S15733C7_nt s4775c1f0;
  virtual  ~S4775C1(); // _ZN7S4775C1D1Ev
  virtual void  v1(); // _ZN7S4775C12v1Ev
  virtual void  v2(); // _ZN7S4775C12v2Ev
  S4775C1(); // tgen
};
//SIG(1 S4775C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 FC6{ m Fp Fi FC5 FC7{ m}}}


 S4775C1 ::~S4775C1(){ note_dtor("S4775C1", this);}
void  S4775C1 ::v1(){vfunc_called(this, "_ZN7S4775C12v1Ev");}
void  S4775C1 ::v2(){vfunc_called(this, "_ZN7S4775C12v2Ev");}
S4775C1 ::S4775C1(){ note_ctor("S4775C1", this);} // tgen

static void Test_S4775C1()
{
  extern Class_Descriptor cd_S4775C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4775C1, buf);
    S4775C1 *dp, &lv = *(dp=new (buf) S4775C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4775C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4775C1)");
    check_base_class_offset(lv, (S4775C3*)(S4775C2_nt*), 0, "S4775C1");
    check_base_class_offset(lv, (S4775C2_nt*), 0, "S4775C1");
    check_field_offset(lv, s4775c1f0, ABISELECT(48,32), "S4775C1.s4775c1f0");
    test_class_info(&lv, &cd_S4775C1);
    dp->~S4775C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4775C1(Test_S4775C1, "S4775C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4775C1C1Ev();
extern void _ZN7S4775C1D1Ev();
Name_Map name_map_S4775C1[] = {
  NSPAIR(_ZN7S4775C1C1Ev),
  NSPAIR(_ZN7S4775C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4775C3;
extern VTBL_ENTRY _ZTI7S4775C3[];
extern  VTBL_ENTRY _ZTV7S4775C3[];
extern Class_Descriptor cd_S4775C2_nt;
extern VTBL_ENTRY _ZTI10S4775C2_nt[];
extern  VTBL_ENTRY _ZTV10S4775C2_nt[];
static Base_Class bases_S4775C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4775C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4775C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4775C1[];
extern void _ZN7S4775C1D1Ev();
extern void _ZN7S4775C1D0Ev();
extern void _ZN7S4775C32v3Ev();
extern void _ZN7S4775C32v4Ev();
extern void _ZN7S4775C32v5Ev();
extern void _ZN10S4775C2_nt2v6Ev();
extern void _ZN10S4775C2_nt2v7Ev();
extern void _ZN7S4775C12v1Ev();
extern void _ZN7S4775C12v2Ev();
static  VTBL_ENTRY vtc_S4775C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4775C1[0]),
  (VTBL_ENTRY)&_ZN7S4775C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4775C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4775C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4775C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S4775C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4775C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4775C1[];
extern  VTBL_ENTRY _ZTV7S4775C1[];
Class_Descriptor cd_S4775C1 = {  "S4775C1", // class name
  bases_S4775C1, 2,
  &(vtc_S4775C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4775C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4775C1),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  S16697C1  {
  int s16697c1f0;
  ::S2619C8 s16697c1f1;
  void  mf16697c1(); // _ZN8S16697C19mf16697c1Ev
};
//SIG(1 S16697C1) C1{ m Fi FC2{ m FC3{ m FC4{ FC5{ Fl[4]}}} FC6{ m FC7{ FC8{ Fi[4]}}} FC9{ m Fi[2] FC10{ BC11{ m Fp Fi}}} Fc}}


void  S16697C1 ::mf16697c1(){}

static void Test_S16697C1()
{
  {
    init_simple_test("S16697C1");
    S16697C1 lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S16697C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16697C1)");
    check_field_offset(lv, s16697c1f0, 0, "S16697C1.s16697c1f0");
    check_field_offset(lv, s16697c1f1, ABISELECT(8,4), "S16697C1.s16697c1f1");
  }
}
static Arrange_To_Call_Me vS16697C1(Test_S16697C1, "S16697C1", ABISELECT(88,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S982C3  : S40C13_nt {
};
//SIG(-1 S982C3) C1{ BC2{ m Fi}}



static void Test_S982C3()
{
  extern Class_Descriptor cd_S982C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S982C3, buf);
    S982C3 &lv = *(new (buf) S982C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S982C3)");
    check2(__alignof__(lv), 4, "__alignof__(S982C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S982C3");
    test_class_info(&lv, &cd_S982C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C3(Test_S982C3, "S982C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S982C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S982C3 = {  "S982C3", // class name
  bases_S982C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S982C2  : S982C3 {
  unsigned int s982c2f0:1;
  unsigned int s982c2f1:1;
  int s982c2f2:4;
};
//SIG(-1 S982C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S982C2()
{
  extern Class_Descriptor cd_S982C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S982C2, buf);
    S982C2 &lv = *(new (buf) S982C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S982C2)");
    check2(__alignof__(lv), 4, "__alignof__(S982C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S982C3*), 0, "S982C2");
    check_base_class_offset(lv, (S982C3*), 0, "S982C2");
    set_bf_and_test(lv, s982c2f0, 4, 0, 1, 1, "S982C2");
    set_bf_and_test(lv, s982c2f1, 4, 1, 1, 1, "S982C2");
    set_bf_and_test(lv, s982c2f2, 4, 2, 4, 1, "S982C2");
    set_bf_and_test(lv, s982c2f2, 4, 2, 4, hide_sll(1LL<<3), "S982C2");
    test_class_info(&lv, &cd_S982C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C2(Test_S982C2, "S982C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S982C3;
static Base_Class bases_S982C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S982C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S982C2 = {  "S982C2", // class name
  bases_S982C2, 2,
  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  S982C1  : S982C2 {
  ::S1868C17 s982c1f0;
  ::S1868C12 s982c1f1;
  ::S1113C11_nt s982c1f2;
  ::S1868C9_nt s982c1f3;
};
//SIG(1 S982C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m Fp} FC6{ m Fp} FC7{ m Fi FC8{ BC9{ m Fp Fi}}} FC10{ m Fp}}



static void Test_S982C1()
{
  extern Class_Descriptor cd_S982C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S982C1, buf);
    S982C1 &lv = *(new (buf) S982C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S982C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S982C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S982C3*)(S982C2*), 0, "S982C1");
    check_base_class_offset(lv, (S982C3*)(S982C2*), 0, "S982C1");
    check_base_class_offset(lv, (S982C2*), 0, "S982C1");
    check_field_offset(lv, s982c1f0, 8, "S982C1.s982c1f0");
    check_field_offset(lv, s982c1f1, ABISELECT(16,12), "S982C1.s982c1f1");
    check_field_offset(lv, s982c1f2, ABISELECT(24,16), "S982C1.s982c1f2");
    check_field_offset(lv, s982c1f3, ABISELECT(48,28), "S982C1.s982c1f3");
    test_class_info(&lv, &cd_S982C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS982C1(Test_S982C1, "S982C1", ABISELECT(56,32));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S982C3;
extern Class_Descriptor cd_S982C2;
static Base_Class bases_S982C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S982C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S982C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S982C1 = {  "S982C1", // class name
  bases_S982C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,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  S17879C1  {
  void *s17879c1f0[2];
  ::S40C81 s17879c1f1;
  ::S40C77 s17879c1f2;
  ::S1868C17 s17879c1f3;
  ::S40C72 s17879c1f4;
  void *s17879c1f5;
  int s17879c1f6[4];
  ::S40C82 s17879c1f7;
  void  mf17879c1(); // _ZN8S17879C19mf17879c1Ev
};
//SIG(1 S17879C1) C1{ m Fp[2] FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3} FC5{ m Fp} FC6{ BC3} Fp Fi[4] FC7{ m FC8{ m Fi[3]} FC8 Fc}}


void  S17879C1 ::mf17879c1(){}

static void Test_S17879C1()
{
  {
    init_simple_test("S17879C1");
    S17879C1 lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S17879C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17879C1)");
    check_field_offset(lv, s17879c1f0, 0, "S17879C1.s17879c1f0");
    check_field_offset(lv, s17879c1f1, ABISELECT(16,8), "S17879C1.s17879c1f1");
    check_field_offset(lv, s17879c1f2, ABISELECT(32,20), "S17879C1.s17879c1f2");
    check_field_offset(lv, s17879c1f3, ABISELECT(48,32), "S17879C1.s17879c1f3");
    check_field_offset(lv, s17879c1f4, ABISELECT(56,36), "S17879C1.s17879c1f4");
    check_field_offset(lv, s17879c1f5, ABISELECT(72,48), "S17879C1.s17879c1f5");
    check_field_offset(lv, s17879c1f6, ABISELECT(80,52), "S17879C1.s17879c1f6");
    check_field_offset(lv, s17879c1f7, ABISELECT(96,68), "S17879C1.s17879c1f7");
  }
}
static Arrange_To_Call_Me vS17879C1(Test_S17879C1, "S17879C1", ABISELECT(128,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4588C3  {
  virtual  ~S4588C3(); // _ZN7S4588C3D1Ev
  virtual void  v2(); // _ZN7S4588C32v2Ev
  S4588C3(); // tgen
};
//SIG(-1 S4588C3) C1{ vd v1}


 S4588C3 ::~S4588C3(){ note_dtor("S4588C3", this);}
void  S4588C3 ::v2(){vfunc_called(this, "_ZN7S4588C32v2Ev");}
S4588C3 ::S4588C3(){ note_ctor("S4588C3", this);} // tgen

static void Test_S4588C3()
{
  extern Class_Descriptor cd_S4588C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4588C3, buf);
    S4588C3 *dp, &lv = *(dp=new (buf) S4588C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4588C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C3)");
    test_class_info(&lv, &cd_S4588C3);
    dp->~S4588C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C3(Test_S4588C3, "S4588C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4588C3C1Ev();
extern void _ZN7S4588C3D1Ev();
Name_Map name_map_S4588C3[] = {
  NSPAIR(_ZN7S4588C3C1Ev),
  NSPAIR(_ZN7S4588C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4588C3[];
extern void _ZN7S4588C3D1Ev();
extern void _ZN7S4588C3D0Ev();
extern void _ZN7S4588C32v2Ev();
static  VTBL_ENTRY vtc_S4588C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C3[0]),
  (VTBL_ENTRY)&_ZN7S4588C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
Class_Descriptor cd_S4588C3 = {  "S4588C3", // class name
  0,0,//no base classes
  &(vtc_S4588C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4588C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4588C3),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  S4588C2  : S4588C3 {
  char s4588c2f0;
  ::S18423C15_nt s4588c2f1;
  ::S18423C15_nt s4588c2f2;
  ::S18423C15_nt s4588c2f3;
  void *s4588c2f4;
  ::S18423C15_nt s4588c2f5;
  ::S18423C15_nt s4588c2f6;
  int s4588c2f7;
  void *s4588c2f8[3];
  virtual  ~S4588C2(); // _ZN7S4588C2D1Ev
  virtual void  v3(); // _ZN7S4588C22v3Ev
  virtual void  v4(); // _ZN7S4588C22v4Ev
  S4588C2(); // tgen
};
//SIG(-1 S4588C2) C1{ BC2{ vd v3} vd v1 v2 Fc FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fp FC3 FC3 Fi Fp[3]}


 S4588C2 ::~S4588C2(){ note_dtor("S4588C2", this);}
void  S4588C2 ::v3(){vfunc_called(this, "_ZN7S4588C22v3Ev");}
void  S4588C2 ::v4(){vfunc_called(this, "_ZN7S4588C22v4Ev");}
S4588C2 ::S4588C2(){ note_ctor("S4588C2", this);} // tgen

static void Test_S4588C2()
{
  extern Class_Descriptor cd_S4588C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S4588C2, buf);
    S4588C2 *dp, &lv = *(dp=new (buf) S4588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S4588C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C2)");
    check_base_class_offset(lv, (S4588C3*), 0, "S4588C2");
    check_field_offset(lv, s4588c2f0, ABISELECT(8,4), "S4588C2.s4588c2f0");
    check_field_offset(lv, s4588c2f1, ABISELECT(16,8), "S4588C2.s4588c2f1");
    check_field_offset(lv, s4588c2f2, ABISELECT(32,20), "S4588C2.s4588c2f2");
    check_field_offset(lv, s4588c2f3, ABISELECT(48,32), "S4588C2.s4588c2f3");
    check_field_offset(lv, s4588c2f4, ABISELECT(64,44), "S4588C2.s4588c2f4");
    check_field_offset(lv, s4588c2f5, ABISELECT(72,48), "S4588C2.s4588c2f5");
    check_field_offset(lv, s4588c2f6, ABISELECT(88,60), "S4588C2.s4588c2f6");
    check_field_offset(lv, s4588c2f7, ABISELECT(104,72), "S4588C2.s4588c2f7");
    check_field_offset(lv, s4588c2f8, ABISELECT(112,76), "S4588C2.s4588c2f8");
    test_class_info(&lv, &cd_S4588C2);
    dp->~S4588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C2(Test_S4588C2, "S4588C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S4588C2C1Ev();
extern void _ZN7S4588C2D1Ev();
Name_Map name_map_S4588C2[] = {
  NSPAIR(_ZN7S4588C2C1Ev),
  NSPAIR(_ZN7S4588C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4588C3;
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
static Base_Class bases_S4588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4588C2[];
extern void _ZN7S4588C2D1Ev();
extern void _ZN7S4588C2D0Ev();
extern void _ZN7S4588C32v2Ev();
extern void _ZN7S4588C22v3Ev();
extern void _ZN7S4588C22v4Ev();
static  VTBL_ENTRY vtc_S4588C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C2[0]),
  (VTBL_ENTRY)&_ZN7S4588C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4588C2[];
extern  VTBL_ENTRY _ZTV7S4588C2[];
Class_Descriptor cd_S4588C2 = {  "S4588C2", // class name
  bases_S4588C2, 1,
  &(vtc_S4588C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S4588C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4588C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4588C1  : S4588C2 {
  ::S18423C15_nt s4588c1f0;
  ::S18423C15_nt s4588c1f1;
  virtual  ~S4588C1(); // _ZN7S4588C1D1Ev
  virtual void  v1(); // _ZN7S4588C12v1Ev
  S4588C1(); // tgen
};
//SIG(1 S4588C1) C1{ BC2{ BC3{ vd v2} vd v3 v4 Fc FC4{ m Fp Fi FC5{ m}} FC4 FC4 Fp FC4 FC4 Fi Fp[3]} vd v1 FC4 FC4}


 S4588C1 ::~S4588C1(){ note_dtor("S4588C1", this);}
void  S4588C1 ::v1(){vfunc_called(this, "_ZN7S4588C12v1Ev");}
S4588C1 ::S4588C1(){ note_ctor("S4588C1", this);} // tgen

static void Test_S4588C1()
{
  extern Class_Descriptor cd_S4588C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,29)];
    init_test(&cd_S4588C1, buf);
    S4588C1 *dp, &lv = *(dp=new (buf) S4588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,112), "sizeof(S4588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4588C1)");
    check_base_class_offset(lv, (S4588C3*)(S4588C2*), 0, "S4588C1");
    check_base_class_offset(lv, (S4588C2*), 0, "S4588C1");
    check_field_offset(lv, s4588c1f0, ABISELECT(136,88), "S4588C1.s4588c1f0");
    check_field_offset(lv, s4588c1f1, ABISELECT(152,100), "S4588C1.s4588c1f1");
    test_class_info(&lv, &cd_S4588C1);
    dp->~S4588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4588C1(Test_S4588C1, "S4588C1", ABISELECT(168,112));

#else // __cplusplus

extern void _ZN7S4588C1C1Ev();
extern void _ZN7S4588C1D1Ev();
Name_Map name_map_S4588C1[] = {
  NSPAIR(_ZN7S4588C1C1Ev),
  NSPAIR(_ZN7S4588C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4588C3;
extern VTBL_ENTRY _ZTI7S4588C3[];
extern  VTBL_ENTRY _ZTV7S4588C3[];
extern Class_Descriptor cd_S4588C2;
extern VTBL_ENTRY _ZTI7S4588C2[];
extern  VTBL_ENTRY _ZTV7S4588C2[];
static Base_Class bases_S4588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4588C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4588C1[];
extern void _ZN7S4588C1D1Ev();
extern void _ZN7S4588C1D0Ev();
extern void _ZN7S4588C32v2Ev();
extern void _ZN7S4588C22v3Ev();
extern void _ZN7S4588C22v4Ev();
extern void _ZN7S4588C12v1Ev();
static  VTBL_ENTRY vtc_S4588C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4588C1[0]),
  (VTBL_ENTRY)&_ZN7S4588C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4588C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4588C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4588C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4588C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4588C1[];
extern  VTBL_ENTRY _ZTV7S4588C1[];
Class_Descriptor cd_S4588C1 = {  "S4588C1", // class name
  bases_S4588C1, 2,
  &(vtc_S4588C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI7S4588C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4588C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C3  {
  __tsi64 s13686c3f0[2];
  long s13686c3f1;
};
//SIG(-1 S13686C3) C1{ FL[2] Fl}



static void Test_S13686C3()
{
  {
    init_simple_test("S13686C3");
    S13686C3 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13686C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C3)");
    check_field_offset(lv, s13686c3f0, 0, "S13686C3.s13686c3f0");
    check_field_offset(lv, s13686c3f1, 16, "S13686C3.s13686c3f1");
  }
}
static Arrange_To_Call_Me vS13686C3(Test_S13686C3, "S13686C3", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C2  {
  char s13686c2f0;
  ::S13686C3 s13686c2f1;
};
//SIG(-1 S13686C2) C1{ Fc FC2{ FL[2] Fl}}



static void Test_S13686C2()
{
  {
    init_simple_test("S13686C2");
    S13686C2 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13686C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C2)");
    check_field_offset(lv, s13686c2f0, 0, "S13686C2.s13686c2f0");
    check_field_offset(lv, s13686c2f1, ABISELECT(8,4), "S13686C2.s13686c2f1");
  }
}
static Arrange_To_Call_Me vS13686C2(Test_S13686C2, "S13686C2", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C6_nt  {
  void *s13686c6f0[2];
};
//SIG(-1 S13686C6_nt) C1{ Fp[2]}



//skip512 S13686C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C5  {
  __tsi64 s13686c5f0;
  ::S13686C6_nt s13686c5f1;
};
//SIG(-1 S13686C5) C1{ FL FC2{ Fp[2]}}



static void Test_S13686C5()
{
  {
    init_simple_test("S13686C5");
    S13686C5 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13686C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C5)");
    check_field_offset(lv, s13686c5f0, 0, "S13686C5.s13686c5f0");
    check_field_offset(lv, s13686c5f1, 8, "S13686C5.s13686c5f1");
  }
}
static Arrange_To_Call_Me vS13686C5(Test_S13686C5, "S13686C5", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C4  {
  __tsi64 s13686c4f0;
  ::S13686C5 s13686c4f1;
};
//SIG(-1 S13686C4) C1{ FL FC2{ FL FC3{ Fp[2]}}}



static void Test_S13686C4()
{
  {
    init_simple_test("S13686C4");
    S13686C4 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13686C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C4)");
    check_field_offset(lv, s13686c4f0, 0, "S13686C4.s13686c4f0");
    check_field_offset(lv, s13686c4f1, 8, "S13686C4.s13686c4f1");
  }
}
static Arrange_To_Call_Me vS13686C4(Test_S13686C4, "S13686C4", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C7  {
  __tsi64 s13686c7f0;
  void *s13686c7f1[2];
};
//SIG(-1 S13686C7) C1{ FL Fp[2]}



static void Test_S13686C7()
{
  {
    init_simple_test("S13686C7");
    S13686C7 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13686C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C7)");
    check_field_offset(lv, s13686c7f0, 0, "S13686C7.s13686c7f0");
    check_field_offset(lv, s13686c7f1, 8, "S13686C7.s13686c7f1");
  }
}
static Arrange_To_Call_Me vS13686C7(Test_S13686C7, "S13686C7", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13686C1  {
  __tsi64 s13686c1f0;
  ::S13686C2 s13686c1f1;
  ::S13686C4 s13686c1f2;
  ::S13686C7 s13686c1f3;
  ::S13686C5 s13686c1f4;
  void *s13686c1f5;
};
//SIG(1 S13686C1) C1{ FL FC2{ Fc FC3{ FL[2] Fl}} FC4{ FL FC5{ FL FC6{ Fp[2]}}} FC7{ FL Fp[2]} FC5 Fp}



static void Test_S13686C1()
{
  {
    init_simple_test("S13686C1");
    S13686C1 lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S13686C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13686C1)");
    check_field_offset(lv, s13686c1f0, 0, "S13686C1.s13686c1f0");
    check_field_offset(lv, s13686c1f1, 8, "S13686C1.s13686c1f1");
    check_field_offset(lv, s13686c1f2, ABISELECT(40,32), "S13686C1.s13686c1f2");
    check_field_offset(lv, s13686c1f3, ABISELECT(72,56), "S13686C1.s13686c1f3");
    check_field_offset(lv, s13686c1f4, ABISELECT(96,72), "S13686C1.s13686c1f4");
    check_field_offset(lv, s13686c1f5, ABISELECT(120,88), "S13686C1.s13686c1f5");
  }
}
static Arrange_To_Call_Me vS13686C1(Test_S13686C1, "S13686C1", ABISELECT(128,92));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18831C1  {
  virtual  ~S18831C1(); // _ZN8S18831C1D1Ev
  virtual void  v1(); // _ZN8S18831C12v1Ev
  virtual void  v2(); // _ZN8S18831C12v2Ev
  virtual void  v3(); // _ZN8S18831C12v3Ev
  virtual void  v4(); // _ZN8S18831C12v4Ev
  virtual void  v5(); // _ZN8S18831C12v5Ev
  virtual void  v6(); // _ZN8S18831C12v6Ev
  virtual void  v7(); // _ZN8S18831C12v7Ev
  virtual void  v8(); // _ZN8S18831C12v8Ev
  virtual void  v9(); // _ZN8S18831C12v9Ev
  virtual void  v10(); // _ZN8S18831C13v10Ev
  virtual void  v11(); // _ZN8S18831C13v11Ev
  virtual void  v12(); // _ZN8S18831C13v12Ev
  virtual void  v13(); // _ZN8S18831C13v13Ev
  virtual void  v14(); // _ZN8S18831C13v14Ev
  virtual void  v15(); // _ZN8S18831C13v15Ev
  virtual void  v16(); // _ZN8S18831C13v16Ev
  virtual void  v17(); // _ZN8S18831C13v17Ev
  virtual void  v18(); // _ZN8S18831C13v18Ev
  virtual void  v19(); // _ZN8S18831C13v19Ev
  virtual void  v20(); // _ZN8S18831C13v20Ev
  virtual void  v21(); // _ZN8S18831C13v21Ev
  virtual void  v22(); // _ZN8S18831C13v22Ev
  S18831C1(); // tgen
};
//SIG(1 S18831C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22}


 S18831C1 ::~S18831C1(){ note_dtor("S18831C1", this);}
void  S18831C1 ::v1(){vfunc_called(this, "_ZN8S18831C12v1Ev");}
void  S18831C1 ::v2(){vfunc_called(this, "_ZN8S18831C12v2Ev");}
void  S18831C1 ::v3(){vfunc_called(this, "_ZN8S18831C12v3Ev");}
void  S18831C1 ::v4(){vfunc_called(this, "_ZN8S18831C12v4Ev");}
void  S18831C1 ::v5(){vfunc_called(this, "_ZN8S18831C12v5Ev");}
void  S18831C1 ::v6(){vfunc_called(this, "_ZN8S18831C12v6Ev");}
void  S18831C1 ::v7(){vfunc_called(this, "_ZN8S18831C12v7Ev");}
void  S18831C1 ::v8(){vfunc_called(this, "_ZN8S18831C12v8Ev");}
void  S18831C1 ::v9(){vfunc_called(this, "_ZN8S18831C12v9Ev");}
void  S18831C1 ::v10(){vfunc_called(this, "_ZN8S18831C13v10Ev");}
void  S18831C1 ::v11(){vfunc_called(this, "_ZN8S18831C13v11Ev");}
void  S18831C1 ::v12(){vfunc_called(this, "_ZN8S18831C13v12Ev");}
void  S18831C1 ::v13(){vfunc_called(this, "_ZN8S18831C13v13Ev");}
void  S18831C1 ::v14(){vfunc_called(this, "_ZN8S18831C13v14Ev");}
void  S18831C1 ::v15(){vfunc_called(this, "_ZN8S18831C13v15Ev");}
void  S18831C1 ::v16(){vfunc_called(this, "_ZN8S18831C13v16Ev");}
void  S18831C1 ::v17(){vfunc_called(this, "_ZN8S18831C13v17Ev");}
void  S18831C1 ::v18(){vfunc_called(this, "_ZN8S18831C13v18Ev");}
void  S18831C1 ::v19(){vfunc_called(this, "_ZN8S18831C13v19Ev");}
void  S18831C1 ::v20(){vfunc_called(this, "_ZN8S18831C13v20Ev");}
void  S18831C1 ::v21(){vfunc_called(this, "_ZN8S18831C13v21Ev");}
void  S18831C1 ::v22(){vfunc_called(this, "_ZN8S18831C13v22Ev");}
S18831C1 ::S18831C1(){ note_ctor("S18831C1", this);} // tgen

static void Test_S18831C1()
{
  extern Class_Descriptor cd_S18831C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18831C1, buf);
    S18831C1 *dp, &lv = *(dp=new (buf) S18831C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18831C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18831C1)");
    test_class_info(&lv, &cd_S18831C1);
    dp->~S18831C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18831C1(Test_S18831C1, "S18831C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18831C1C1Ev();
extern void _ZN8S18831C1D1Ev();
Name_Map name_map_S18831C1[] = {
  NSPAIR(_ZN8S18831C1C1Ev),
  NSPAIR(_ZN8S18831C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18831C1[];
extern void _ZN8S18831C1D1Ev();
extern void _ZN8S18831C1D0Ev();
extern void _ZN8S18831C12v1Ev();
extern void _ZN8S18831C12v2Ev();
extern void _ZN8S18831C12v3Ev();
extern void _ZN8S18831C12v4Ev();
extern void _ZN8S18831C12v5Ev();
extern void _ZN8S18831C12v6Ev();
extern void _ZN8S18831C12v7Ev();
extern void _ZN8S18831C12v8Ev();
extern void _ZN8S18831C12v9Ev();
extern void _ZN8S18831C13v10Ev();
extern void _ZN8S18831C13v11Ev();
extern void _ZN8S18831C13v12Ev();
extern void _ZN8S18831C13v13Ev();
extern void _ZN8S18831C13v14Ev();
extern void _ZN8S18831C13v15Ev();
extern void _ZN8S18831C13v16Ev();
extern void _ZN8S18831C13v17Ev();
extern void _ZN8S18831C13v18Ev();
extern void _ZN8S18831C13v19Ev();
extern void _ZN8S18831C13v20Ev();
extern void _ZN8S18831C13v21Ev();
extern void _ZN8S18831C13v22Ev();
static  VTBL_ENTRY vtc_S18831C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18831C1[0]),
  (VTBL_ENTRY)&_ZN8S18831C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18831C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18831C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v13Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v14Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v15Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v16Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v17Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v18Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v19Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v20Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v21Ev,
  (VTBL_ENTRY)&_ZN8S18831C13v22Ev,
};
extern VTBL_ENTRY _ZTI8S18831C1[];
extern  VTBL_ENTRY _ZTV8S18831C1[];
Class_Descriptor cd_S18831C1 = {  "S18831C1", // class name
  0,0,//no base classes
  &(vtc_S18831C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18831C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18831C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C3_nt  {
  char s12396c3f0[20];
};
//SIG(-1 S12396C3_nt) C1{ Fc[20]}



//skip512 S12396C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C2_nt  {
  ::S12396C3_nt s12396c2f0;
  char s12396c2f1[16];
};
//SIG(-1 S12396C2_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S12396C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C4_nt  {
  char s12396c4f0[12];
};
//SIG(-1 S12396C4_nt) C1{ Fc[12]}



//skip512 S12396C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C6_nt  {
  long s12396c6f0;
};
//SIG(-1 S12396C6_nt) C1{ Fl}



//skip512 S12396C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C5  {
  int s12396c5f0;
  char s12396c5f1[4];
  ::S12396C6_nt s12396c5f2;
};
//SIG(-1 S12396C5) C1{ Fi Fc[4] FC2{ Fl}}



static void Test_S12396C5()
{
  {
    init_simple_test("S12396C5");
    S12396C5 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S12396C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12396C5)");
    check_field_offset(lv, s12396c5f0, 0, "S12396C5.s12396c5f0");
    check_field_offset(lv, s12396c5f1, 4, "S12396C5.s12396c5f1");
    check_field_offset(lv, s12396c5f2, 8, "S12396C5.s12396c5f2");
  }
}
static Arrange_To_Call_Me vS12396C5(Test_S12396C5, "S12396C5", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12396C1  {
  int s12396c1f0;
  ::S12396C2_nt s12396c1f1;
  ::S12396C4_nt s12396c1f2;
  int s12396c1f3[3];
  ::S12396C5 s12396c1f4;
  int s12396c1f5;
  long s12396c1f6;
  int s12396c1f7;
  long s12396c1f8;
  int s12396c1f9[2];
};
//SIG(1 S12396C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[3] FC5{ Fi Fc[4] FC6{ Fl}} Fi Fl Fi Fl Fi[2]}



static void Test_S12396C1()
{
  {
    init_simple_test("S12396C1");
    S12396C1 lv;
    check2(sizeof(lv), ABISELECT(120,100), "sizeof(S12396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12396C1)");
    check_field_offset(lv, s12396c1f0, 0, "S12396C1.s12396c1f0");
    check_field_offset(lv, s12396c1f1, 4, "S12396C1.s12396c1f1");
    check_field_offset(lv, s12396c1f2, 40, "S12396C1.s12396c1f2");
    check_field_offset(lv, s12396c1f3, 52, "S12396C1.s12396c1f3");
    check_field_offset(lv, s12396c1f4, 64, "S12396C1.s12396c1f4");
    check_field_offset(lv, s12396c1f5, ABISELECT(80,76), "S12396C1.s12396c1f5");
    check_field_offset(lv, s12396c1f6, ABISELECT(88,80), "S12396C1.s12396c1f6");
    check_field_offset(lv, s12396c1f7, ABISELECT(96,84), "S12396C1.s12396c1f7");
    check_field_offset(lv, s12396c1f8, ABISELECT(104,88), "S12396C1.s12396c1f8");
    check_field_offset(lv, s12396c1f9, ABISELECT(112,92), "S12396C1.s12396c1f9");
  }
}
static Arrange_To_Call_Me vS12396C1(Test_S12396C1, "S12396C1", ABISELECT(120,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8262C1  : S1868C4_nt {
  ::S40C81 s8262c1f0;
  ::S40C81 s8262c1f1;
  int s8262c1f2;
  ::S40C77 s8262c1f3;
  ::S7856C24 s8262c1f4;
  ::S40C72 s8262c1f5;
  ::S40C72 s8262c1f6;
  int s8262c1f7;
  ::S40C67 s8262c1f8;
  int s8262c1f9;
  ::S40C67 s8262c1f10;
  ~S8262C1(); // tgen
  S8262C1(); // tgen
};
//SIG(1 S8262C1) C1{ BC2{ vd m} FC3{ BC4{ m Fp Fi[2]}} FC3 Fi FC5{ BC4} FC6{ m} FC7{ BC4} FC7 Fi FC8{ BC4} Fi FC8}


S8262C1 ::~S8262C1(){ note_dtor("S8262C1", this);} // tgen
S8262C1 ::S8262C1(){ note_ctor("S8262C1", this);} // tgen

static void Test_S8262C1()
{
  extern Class_Descriptor cd_S8262C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S8262C1, buf);
    S8262C1 *dp, &lv = *(dp=new (buf) S8262C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S8262C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8262C1)");
    check_base_class_offset(lv, (S1868C4_nt*), 0, "S8262C1");
    check_field_offset(lv, s8262c1f0, ABISELECT(8,4), "S8262C1.s8262c1f0");
    check_field_offset(lv, s8262c1f1, ABISELECT(24,16), "S8262C1.s8262c1f1");
    check_field_offset(lv, s8262c1f2, ABISELECT(40,28), "S8262C1.s8262c1f2");
    check_field_offset(lv, s8262c1f3, ABISELECT(48,32), "S8262C1.s8262c1f3");
    check_field_offset(lv, s8262c1f4, ABISELECT(64,44), "S8262C1.s8262c1f4");
    check_field_offset(lv, s8262c1f5, ABISELECT(72,48), "S8262C1.s8262c1f5");
    check_field_offset(lv, s8262c1f6, ABISELECT(88,60), "S8262C1.s8262c1f6");
    check_field_offset(lv, s8262c1f7, ABISELECT(104,72), "S8262C1.s8262c1f7");
    check_field_offset(lv, s8262c1f8, ABISELECT(112,76), "S8262C1.s8262c1f8");
    check_field_offset(lv, s8262c1f9, ABISELECT(128,88), "S8262C1.s8262c1f9");
    check_field_offset(lv, s8262c1f10, ABISELECT(136,92), "S8262C1.s8262c1f10");
    test_class_info(&lv, &cd_S8262C1);
    dp->~S8262C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8262C1(Test_S8262C1, "S8262C1", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN7S8262C1C1Ev();
extern void _ZN7S8262C1D1Ev();
Name_Map name_map_S8262C1[] = {
  NSPAIR(_ZN7S8262C1C1Ev),
  NSPAIR(_ZN7S8262C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1868C4_nt;
extern VTBL_ENTRY _ZTI10S1868C4_nt[];
extern  VTBL_ENTRY _ZTV10S1868C4_nt[];
static Base_Class bases_S8262C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1868C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8262C1[];
extern void _ZN7S8262C1D1Ev();
extern void _ZN7S8262C1D0Ev();
static  VTBL_ENTRY vtc_S8262C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8262C1[0]),
  (VTBL_ENTRY)&_ZN7S8262C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8262C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8262C1[];
extern  VTBL_ENTRY _ZTV7S8262C1[];
Class_Descriptor cd_S8262C1 = {  "S8262C1", // class name
  bases_S8262C1, 1,
  &(vtc_S8262C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI7S8262C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8262C1),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  S981C3  : S40C13_nt {
};
//SIG(-1 S981C3) C1{ BC2{ m Fi}}



static void Test_S981C3()
{
  extern Class_Descriptor cd_S981C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S981C3, buf);
    S981C3 &lv = *(new (buf) S981C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S981C3)");
    check2(__alignof__(lv), 4, "__alignof__(S981C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S981C3");
    test_class_info(&lv, &cd_S981C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C3(Test_S981C3, "S981C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S981C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S981C3 = {  "S981C3", // class name
  bases_S981C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S981C2  : S981C3 {
  unsigned int s981c2f0:1;
  unsigned int s981c2f1:1;
  int s981c2f2:4;
};
//SIG(-1 S981C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S981C2()
{
  extern Class_Descriptor cd_S981C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S981C2, buf);
    S981C2 &lv = *(new (buf) S981C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S981C2)");
    check2(__alignof__(lv), 4, "__alignof__(S981C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S981C3*), 0, "S981C2");
    check_base_class_offset(lv, (S981C3*), 0, "S981C2");
    set_bf_and_test(lv, s981c2f0, 4, 0, 1, 1, "S981C2");
    set_bf_and_test(lv, s981c2f1, 4, 1, 1, 1, "S981C2");
    set_bf_and_test(lv, s981c2f2, 4, 2, 4, 1, "S981C2");
    set_bf_and_test(lv, s981c2f2, 4, 2, 4, hide_sll(1LL<<3), "S981C2");
    test_class_info(&lv, &cd_S981C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C2(Test_S981C2, "S981C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S981C3;
static Base_Class bases_S981C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S981C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S981C2 = {  "S981C2", // class name
  bases_S981C2, 2,
  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  S981C1  : S981C2 {
  ::S1868C17 s981c1f0;
  ::S1113C11_nt s981c1f1;
  ::S1868C12 s981c1f2;
};
//SIG(1 S981C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m Fp} FC6{ m Fi FC7{ BC8{ m Fp Fi}}} FC9{ m Fp}}



static void Test_S981C1()
{
  extern Class_Descriptor cd_S981C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S981C1, buf);
    S981C1 &lv = *(new (buf) S981C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S981C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S981C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S981C3*)(S981C2*), 0, "S981C1");
    check_base_class_offset(lv, (S981C3*)(S981C2*), 0, "S981C1");
    check_base_class_offset(lv, (S981C2*), 0, "S981C1");
    check_field_offset(lv, s981c1f0, 8, "S981C1.s981c1f0");
    check_field_offset(lv, s981c1f1, ABISELECT(16,12), "S981C1.s981c1f1");
    check_field_offset(lv, s981c1f2, ABISELECT(40,24), "S981C1.s981c1f2");
    test_class_info(&lv, &cd_S981C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS981C1(Test_S981C1, "S981C1", ABISELECT(48,28));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S981C3;
extern Class_Descriptor cd_S981C2;
static Base_Class bases_S981C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S981C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S981C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S981C1 = {  "S981C1", // class name
  bases_S981C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,28), // 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  S4315C3  {
  char s4315c3f0;
  int s4315c3f1;
  virtual  ~S4315C3(); // _ZN7S4315C3D1Ev
  virtual void  v2(); // _ZN7S4315C32v2Ev
  S4315C3(); // tgen
};
//SIG(-1 S4315C3) C1{ vd v1 Fc Fi}


 S4315C3 ::~S4315C3(){ note_dtor("S4315C3", this);}
void  S4315C3 ::v2(){vfunc_called(this, "_ZN7S4315C32v2Ev");}
S4315C3 ::S4315C3(){ note_ctor("S4315C3", this);} // tgen

static void Test_S4315C3()
{
  extern Class_Descriptor cd_S4315C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4315C3, buf);
    S4315C3 *dp, &lv = *(dp=new (buf) S4315C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4315C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C3)");
    check_field_offset(lv, s4315c3f0, ABISELECT(8,4), "S4315C3.s4315c3f0");
    check_field_offset(lv, s4315c3f1, ABISELECT(12,8), "S4315C3.s4315c3f1");
    test_class_info(&lv, &cd_S4315C3);
    dp->~S4315C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C3(Test_S4315C3, "S4315C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4315C3C1Ev();
extern void _ZN7S4315C3D1Ev();
Name_Map name_map_S4315C3[] = {
  NSPAIR(_ZN7S4315C3C1Ev),
  NSPAIR(_ZN7S4315C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4315C3[];
extern void _ZN7S4315C3D1Ev();
extern void _ZN7S4315C3D0Ev();
extern void _ZN7S4315C32v2Ev();
static  VTBL_ENTRY vtc_S4315C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C3[0]),
  (VTBL_ENTRY)&_ZN7S4315C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
Class_Descriptor cd_S4315C3 = {  "S4315C3", // class name
  0,0,//no base classes
  &(vtc_S4315C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4315C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4315C3),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  S4315C2  : S4315C3 {
  int s4315c2f0[2];
  char s4315c2f1;
  ::S2436C5_nt s4315c2f2;
  ::S2436C6 s4315c2f3;
  virtual  ~S4315C2(); // _ZN7S4315C2D1Ev
  virtual void  v3(); // _ZN7S4315C22v3Ev
  S4315C2(); // tgen
};
//SIG(-1 S4315C2) C1{ BC2{ vd v2 Fc Fi} vd v1 Fi[2] Fc FC3{ Fp} FC4{ BC5{ vd v5 Fc Fi} vd v3 v4 FL[4]}}


 S4315C2 ::~S4315C2(){ note_dtor("S4315C2", this);}
void  S4315C2 ::v3(){vfunc_called(this, "_ZN7S4315C22v3Ev");}
S4315C2 ::S4315C2(){ note_ctor("S4315C2", this);} // tgen

static void Test_S4315C2()
{
  extern Class_Descriptor cd_S4315C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S4315C2, buf);
    S4315C2 *dp, &lv = *(dp=new (buf) S4315C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S4315C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C2)");
    check_base_class_offset(lv, (S4315C3*), 0, "S4315C2");
    check_field_offset(lv, s4315c2f0, ABISELECT(16,12), "S4315C2.s4315c2f0");
    check_field_offset(lv, s4315c2f1, ABISELECT(24,20), "S4315C2.s4315c2f1");
    check_field_offset(lv, s4315c2f2, ABISELECT(32,24), "S4315C2.s4315c2f2");
    check_field_offset(lv, s4315c2f3, ABISELECT(40,28), "S4315C2.s4315c2f3");
    test_class_info(&lv, &cd_S4315C2);
    dp->~S4315C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C2(Test_S4315C2, "S4315C2", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S4315C2C1Ev();
extern void _ZN7S4315C2D1Ev();
Name_Map name_map_S4315C2[] = {
  NSPAIR(_ZN7S4315C2C1Ev),
  NSPAIR(_ZN7S4315C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4315C3;
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
static Base_Class bases_S4315C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4315C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4315C2[];
extern void _ZN7S4315C2D1Ev();
extern void _ZN7S4315C2D0Ev();
extern void _ZN7S4315C32v2Ev();
extern void _ZN7S4315C22v3Ev();
static  VTBL_ENTRY vtc_S4315C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C2[0]),
  (VTBL_ENTRY)&_ZN7S4315C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4315C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S4315C2[];
extern  VTBL_ENTRY _ZTV7S4315C2[];
Class_Descriptor cd_S4315C2 = {  "S4315C2", // class name
  bases_S4315C2, 1,
  &(vtc_S4315C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S4315C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4315C2),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  S4315C1  : S4315C2 {
  void *s4315c1f0[3];
  virtual  ~S4315C1(); // _ZN7S4315C1D1Ev
  virtual void  v1(); // _ZN7S4315C12v1Ev
  S4315C1(); // tgen
};
//SIG(1 S4315C1) C1{ BC2{ BC3{ vd v2 Fc Fi} vd v3 Fi[2] Fc FC4{ Fp} FC5{ BC6{ vd v6 Fc Fi} vd v4 v5 FL[4]}} vd v1 Fp[3]}


 S4315C1 ::~S4315C1(){ note_dtor("S4315C1", this);}
void  S4315C1 ::v1(){vfunc_called(this, "_ZN7S4315C12v1Ev");}
S4315C1 ::S4315C1(){ note_ctor("S4315C1", this);} // tgen

static void Test_S4315C1()
{
  extern Class_Descriptor cd_S4315C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,22)];
    init_test(&cd_S4315C1, buf);
    S4315C1 *dp, &lv = *(dp=new (buf) S4315C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,84), "sizeof(S4315C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4315C1)");
    check_base_class_offset(lv, (S4315C3*)(S4315C2*), 0, "S4315C1");
    check_base_class_offset(lv, (S4315C2*), 0, "S4315C1");
    check_field_offset(lv, s4315c1f0, ABISELECT(88,72), "S4315C1.s4315c1f0");
    test_class_info(&lv, &cd_S4315C1);
    dp->~S4315C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4315C1(Test_S4315C1, "S4315C1", ABISELECT(112,84));

#else // __cplusplus

extern void _ZN7S4315C1C1Ev();
extern void _ZN7S4315C1D1Ev();
Name_Map name_map_S4315C1[] = {
  NSPAIR(_ZN7S4315C1C1Ev),
  NSPAIR(_ZN7S4315C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4315C3;
extern VTBL_ENTRY _ZTI7S4315C3[];
extern  VTBL_ENTRY _ZTV7S4315C3[];
extern Class_Descriptor cd_S4315C2;
extern VTBL_ENTRY _ZTI7S4315C2[];
extern  VTBL_ENTRY _ZTV7S4315C2[];
static Base_Class bases_S4315C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4315C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4315C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4315C1[];
extern void _ZN7S4315C1D1Ev();
extern void _ZN7S4315C1D0Ev();
extern void _ZN7S4315C32v2Ev();
extern void _ZN7S4315C22v3Ev();
extern void _ZN7S4315C12v1Ev();
static  VTBL_ENTRY vtc_S4315C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4315C1[0]),
  (VTBL_ENTRY)&_ZN7S4315C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4315C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4315C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4315C22v3Ev,
  (VTBL_ENTRY)&_ZN7S4315C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4315C1[];
extern  VTBL_ENTRY _ZTV7S4315C1[];
Class_Descriptor cd_S4315C1 = {  "S4315C1", // class name
  bases_S4315C1, 2,
  &(vtc_S4315C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,84), // object size
  NSPAIRA(_ZTI7S4315C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4315C1),7, //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  S3333C3  {
  virtual void  v5(); // _ZN7S3333C32v5Ev
  ~S3333C3(); // tgen
  S3333C3(); // tgen
};
//SIG(-1 S3333C3) C1{ v1}


void  S3333C3 ::v5(){vfunc_called(this, "_ZN7S3333C32v5Ev");}
S3333C3 ::~S3333C3(){ note_dtor("S3333C3", this);} // tgen
S3333C3 ::S3333C3(){ note_ctor("S3333C3", this);} // tgen

static void Test_S3333C3()
{
  extern Class_Descriptor cd_S3333C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3333C3, buf);
    S3333C3 *dp, &lv = *(dp=new (buf) S3333C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3333C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C3)");
    test_class_info(&lv, &cd_S3333C3);
    dp->~S3333C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C3(Test_S3333C3, "S3333C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3333C3C1Ev();
extern void _ZN7S3333C3D1Ev();
Name_Map name_map_S3333C3[] = {
  NSPAIR(_ZN7S3333C3C1Ev),
  NSPAIR(_ZN7S3333C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3333C3[];
extern void _ZN7S3333C32v5Ev();
static  VTBL_ENTRY vtc_S3333C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C3[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
Class_Descriptor cd_S3333C3 = {  "S3333C3", // class name
  0,0,//no base classes
  &(vtc_S3333C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3333C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3333C3),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  S3333C2  : S3333C3 {
  virtual  ~S3333C2(); // _ZN7S3333C2D1Ev
  virtual void  v6(); // _ZN7S3333C22v6Ev
  virtual void  v7(); // _ZN7S3333C22v7Ev
  virtual void  v8(); // _ZN7S3333C22v8Ev
  S3333C2(); // tgen
};
//SIG(-1 S3333C2) C1{ BC2{ v4} vd v1 v2 v3}


 S3333C2 ::~S3333C2(){ note_dtor("S3333C2", this);}
void  S3333C2 ::v6(){vfunc_called(this, "_ZN7S3333C22v6Ev");}
void  S3333C2 ::v7(){vfunc_called(this, "_ZN7S3333C22v7Ev");}
void  S3333C2 ::v8(){vfunc_called(this, "_ZN7S3333C22v8Ev");}
S3333C2 ::S3333C2(){ note_ctor("S3333C2", this);} // tgen

static void Test_S3333C2()
{
  extern Class_Descriptor cd_S3333C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3333C2, buf);
    S3333C2 *dp, &lv = *(dp=new (buf) S3333C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3333C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C2)");
    check_base_class_offset(lv, (S3333C3*), 0, "S3333C2");
    test_class_info(&lv, &cd_S3333C2);
    dp->~S3333C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C2(Test_S3333C2, "S3333C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3333C2C1Ev();
extern void _ZN7S3333C2D1Ev();
Name_Map name_map_S3333C2[] = {
  NSPAIR(_ZN7S3333C2C1Ev),
  NSPAIR(_ZN7S3333C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
static Base_Class bases_S3333C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3333C2[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C2D1Ev();
extern void _ZN7S3333C2D0Ev();
extern void _ZN7S3333C22v6Ev();
extern void _ZN7S3333C22v7Ev();
extern void _ZN7S3333C22v8Ev();
static  VTBL_ENTRY vtc_S3333C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C2[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3333C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S3333C2[];
extern  VTBL_ENTRY _ZTV7S3333C2[];
Class_Descriptor cd_S3333C2 = {  "S3333C2", // class name
  bases_S3333C2, 1,
  &(vtc_S3333C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3333C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3333C2),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  S3333C4  : virtual S3333C3 {
  int s3333c4f0;
  __tsi64 s3333c4f1;
  int s3333c4f2;
  char s3333c4f3;
  virtual void  v9(); // _ZN7S3333C42v9Ev
  virtual void  v10(); // _ZN7S3333C43v10Ev
  virtual void  v11(); // _ZN7S3333C43v11Ev
  virtual void  v12(); // _ZN7S3333C43v12Ev
  ~S3333C4(); // tgen
  S3333C4(); // tgen
};
//SIG(-1 S3333C4) C1{ VBC2{ v5} v1 v2 v3 v4 Fi FL Fi Fc}


void  S3333C4 ::v9(){vfunc_called(this, "_ZN7S3333C42v9Ev");}
void  S3333C4 ::v10(){vfunc_called(this, "_ZN7S3333C43v10Ev");}
void  S3333C4 ::v11(){vfunc_called(this, "_ZN7S3333C43v11Ev");}
void  S3333C4 ::v12(){vfunc_called(this, "_ZN7S3333C43v12Ev");}
S3333C4 ::~S3333C4(){ note_dtor("S3333C4", this);} // tgen
S3333C4 ::S3333C4(){ note_ctor("S3333C4", this);} // tgen

static void Test_S3333C4()
{
  extern Class_Descriptor cd_S3333C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3333C4, buf);
    S3333C4 *dp, &lv = *(dp=new (buf) S3333C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3333C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C4)");
    check_base_class_offset(lv, (S3333C3*), 0, "S3333C4");
    check_field_offset(lv, s3333c4f0, ABISELECT(8,4), "S3333C4.s3333c4f0");
    check_field_offset(lv, s3333c4f1, ABISELECT(16,8), "S3333C4.s3333c4f1");
    check_field_offset(lv, s3333c4f2, ABISELECT(24,16), "S3333C4.s3333c4f2");
    check_field_offset(lv, s3333c4f3, ABISELECT(28,20), "S3333C4.s3333c4f3");
    test_class_info(&lv, &cd_S3333C4);
    dp->~S3333C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C4(Test_S3333C4, "S3333C4", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3333C4C1Ev();
extern void _ZN7S3333C4D1Ev();
Name_Map name_map_S3333C4[] = {
  NSPAIR(_ZN7S3333C4C1Ev),
  NSPAIR(_ZN7S3333C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
static Base_Class bases_S3333C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    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 _ZTI7S3333C4[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY vtc_S3333C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C4[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
extern VTBL_ENTRY _ZTV7S3333C4[];
static  VTT_ENTRY vtt_S3333C4[] = {
  {&(_ZTV7S3333C4[4]),  4,9},
  {&(_ZTV7S3333C4[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S3333C4[];
extern  VTBL_ENTRY _ZTV7S3333C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C4[];
Class_Descriptor cd_S3333C4 = {  "S3333C4", // class name
  bases_S3333C4, 1,
  &(vtc_S3333C4[0]), // expected_vtbl_contents
  &(vtt_S3333C4[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3333C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3333C4),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3333C4),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  S3333C1  : S3333C2 , S3333C4 {
  void *s3333c1f0;
  virtual  ~S3333C1(); // _ZN7S3333C1D2Ev
  virtual void  v1(); // _ZN7S3333C12v1Ev
  virtual void  v2(); // _ZN7S3333C12v2Ev
  virtual void  v3(); // _ZN7S3333C12v3Ev
  virtual void  v4(); // _ZN7S3333C12v4Ev
  S3333C1(); // tgen
};
//SIG(1 S3333C1) C1{ BC2{ BC3{ v5} vd v6 v7 v8} BC4{ VBC3 v9 v10 v11 v12 Fi FL Fi Fc} vd v1 v2 v3 v4 Fp}


 S3333C1 ::~S3333C1(){ note_dtor("S3333C1", this);}
void  S3333C1 ::v1(){vfunc_called(this, "_ZN7S3333C12v1Ev");}
void  S3333C1 ::v2(){vfunc_called(this, "_ZN7S3333C12v2Ev");}
void  S3333C1 ::v3(){vfunc_called(this, "_ZN7S3333C12v3Ev");}
void  S3333C1 ::v4(){vfunc_called(this, "_ZN7S3333C12v4Ev");}
S3333C1 ::S3333C1(){ note_ctor("S3333C1", this);} // tgen

static void Test_S3333C1()
{
  extern Class_Descriptor cd_S3333C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S3333C1, buf);
    S3333C1 *dp, &lv = *(dp=new (buf) S3333C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S3333C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3333C1)");
    check_base_class_offset(lv, (S3333C3*)(S3333C2*), 0, "S3333C1");
    check_base_class_offset(lv, (S3333C2*), 0, "S3333C1");
    check_base_class_offset(lv, (S3333C3*)(S3333C4*), ABISELECT(8,4), "S3333C1");
    check_base_class_offset(lv, (S3333C4*), ABISELECT(8,4), "S3333C1");
    check_field_offset(lv, s3333c1f0, ABISELECT(40,28), "S3333C1.s3333c1f0");
    test_class_info(&lv, &cd_S3333C1);
    dp->~S3333C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3333C1(Test_S3333C1, "S3333C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S3333C1C1Ev();
extern void _ZN7S3333C1D2Ev();
Name_Map name_map_S3333C1[] = {
  NSPAIR(_ZN7S3333C1C1Ev),
  NSPAIR(_ZN7S3333C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
extern Class_Descriptor cd_S3333C2;
extern VTBL_ENTRY _ZTI7S3333C2[];
extern  VTBL_ENTRY _ZTV7S3333C2[];
extern Class_Descriptor cd_S3333C3;
extern VTBL_ENTRY _ZTI7S3333C3[];
extern  VTBL_ENTRY _ZTV7S3333C3[];
extern Class_Descriptor cd_S3333C4;
extern VTBL_ENTRY _ZTI7S3333C4[];
extern  VTBL_ENTRY _ZTV7S3333C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C4[];
static Base_Class bases_S3333C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3333C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3333C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3333C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3333C4,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //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 _ZTI7S3333C1[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C1D1Ev();
extern void _ZN7S3333C1D0Ev();
extern void _ZN7S3333C22v6Ev();
extern void _ZN7S3333C22v7Ev();
extern void _ZN7S3333C22v8Ev();
extern void _ZN7S3333C12v1Ev();
extern void _ZN7S3333C12v2Ev();
extern void _ZN7S3333C12v3Ev();
extern void _ZN7S3333C12v4Ev();
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY vtc_S3333C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C1[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3333C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3333C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3333C12v4Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3333C1[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
extern VTBL_ENTRY _ZTV7S3333C1[];
extern void _ZN7S3333C32v5Ev();
extern void _ZN7S3333C42v9Ev();
extern void _ZN7S3333C43v10Ev();
extern void _ZN7S3333C43v11Ev();
extern void _ZN7S3333C43v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3333C4__7S3333C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3333C4[0]),
  (VTBL_ENTRY)&_ZN7S3333C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3333C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3333C43v12Ev,
};
static  VTT_ENTRY vtt_S3333C1[] = {
  {&(_ZTV7S3333C1[3]),  3,22},
  {&(_tg__ZTV7S3333C4__7S3333C1[4]),  4,9},
  {&(_tg__ZTV7S3333C4__7S3333C1[4]),  4,9},
  {&(_ZTV7S3333C1[17]),  17,22},
  {&(_ZTV7S3333C1[17]),  17,22},
};
extern VTBL_ENTRY _ZTI7S3333C1[];
extern  VTBL_ENTRY _ZTV7S3333C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3333C1[];
Class_Descriptor cd_S3333C1 = {  "S3333C1", // class name
  bases_S3333C1, 4,
  &(vtc_S3333C1[0]), // expected_vtbl_contents
  &(vtt_S3333C1[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S3333C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3333C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3333C1),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  S9267C2  {
  ::S18423C15_nt s9267c2f0;
  int s9267c2f1[2];
  char s9267c2f2;
  virtual  ~S9267C2(); // _ZN7S9267C2D1Ev
  virtual void  v3(); // _ZN7S9267C22v3Ev
  virtual void  v4(); // _ZN7S9267C22v4Ev
  virtual void  v5(); // _ZN7S9267C22v5Ev
  S9267C2(); // tgen
};
//SIG(-1 S9267C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9267C2 ::~S9267C2(){ note_dtor("S9267C2", this);}
void  S9267C2 ::v3(){vfunc_called(this, "_ZN7S9267C22v3Ev");}
void  S9267C2 ::v4(){vfunc_called(this, "_ZN7S9267C22v4Ev");}
void  S9267C2 ::v5(){vfunc_called(this, "_ZN7S9267C22v5Ev");}
S9267C2 ::S9267C2(){ note_ctor("S9267C2", this);} // tgen

static void Test_S9267C2()
{
  extern Class_Descriptor cd_S9267C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9267C2, buf);
    S9267C2 *dp, &lv = *(dp=new (buf) S9267C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9267C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9267C2)");
    check_field_offset(lv, s9267c2f0, ABISELECT(8,4), "S9267C2.s9267c2f0");
    check_field_offset(lv, s9267c2f1, ABISELECT(24,16), "S9267C2.s9267c2f1");
    check_field_offset(lv, s9267c2f2, ABISELECT(32,24), "S9267C2.s9267c2f2");
    test_class_info(&lv, &cd_S9267C2);
    dp->~S9267C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9267C2(Test_S9267C2, "S9267C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9267C2C1Ev();
extern void _ZN7S9267C2D1Ev();
Name_Map name_map_S9267C2[] = {
  NSPAIR(_ZN7S9267C2C1Ev),
  NSPAIR(_ZN7S9267C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9267C2[];
extern void _ZN7S9267C2D1Ev();
extern void _ZN7S9267C2D0Ev();
extern void _ZN7S9267C22v3Ev();
extern void _ZN7S9267C22v4Ev();
extern void _ZN7S9267C22v5Ev();
static  VTBL_ENTRY vtc_S9267C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9267C2[0]),
  (VTBL_ENTRY)&_ZN7S9267C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9267C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9267C2[];
extern  VTBL_ENTRY _ZTV7S9267C2[];
Class_Descriptor cd_S9267C2 = {  "S9267C2", // class name
  0,0,//no base classes
  &(vtc_S9267C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9267C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9267C2),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  S9267C1  : S9267C2 {
  char s9267c1f0[3];
  ::S1868C17 s9267c1f1;
  void *s9267c1f2[2];
  virtual  ~S9267C1(); // _ZN7S9267C1D1Ev
  virtual void  v1(); // _ZN7S9267C12v1Ev
  virtual void  v2(); // _ZN7S9267C12v2Ev
  S9267C1(); // tgen
};
//SIG(1 S9267C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[3] FC5{ m Fp} Fp[2]}


 S9267C1 ::~S9267C1(){ note_dtor("S9267C1", this);}
void  S9267C1 ::v1(){vfunc_called(this, "_ZN7S9267C12v1Ev");}
void  S9267C1 ::v2(){vfunc_called(this, "_ZN7S9267C12v2Ev");}
S9267C1 ::S9267C1(){ note_ctor("S9267C1", this);} // tgen

static void Test_S9267C1()
{
  extern Class_Descriptor cd_S9267C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S9267C1, buf);
    S9267C1 *dp, &lv = *(dp=new (buf) S9267C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S9267C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9267C1)");
    check_base_class_offset(lv, (S9267C2*), 0, "S9267C1");
    check_field_offset(lv, s9267c1f0, ABISELECT(33,25), "S9267C1.s9267c1f0");
    check_field_offset(lv, s9267c1f1, ABISELECT(40,28), "S9267C1.s9267c1f1");
    check_field_offset(lv, s9267c1f2, ABISELECT(48,32), "S9267C1.s9267c1f2");
    test_class_info(&lv, &cd_S9267C1);
    dp->~S9267C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9267C1(Test_S9267C1, "S9267C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S9267C1C1Ev();
extern void _ZN7S9267C1D1Ev();
Name_Map name_map_S9267C1[] = {
  NSPAIR(_ZN7S9267C1C1Ev),
  NSPAIR(_ZN7S9267C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9267C2;
extern VTBL_ENTRY _ZTI7S9267C2[];
extern  VTBL_ENTRY _ZTV7S9267C2[];
static Base_Class bases_S9267C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9267C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9267C1[];
extern void _ZN7S9267C1D1Ev();
extern void _ZN7S9267C1D0Ev();
extern void _ZN7S9267C22v3Ev();
extern void _ZN7S9267C22v4Ev();
extern void _ZN7S9267C22v5Ev();
extern void _ZN7S9267C12v1Ev();
extern void _ZN7S9267C12v2Ev();
static  VTBL_ENTRY vtc_S9267C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9267C1[0]),
  (VTBL_ENTRY)&_ZN7S9267C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9267C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9267C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9267C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9267C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9267C1[];
extern  VTBL_ENTRY _ZTV7S9267C1[];
Class_Descriptor cd_S9267C1 = {  "S9267C1", // class name
  bases_S9267C1, 1,
  &(vtc_S9267C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S9267C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9267C1),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  S12379C1  {
  int s12379c1f0;
  ::S12396C2_nt s12379c1f1;
  ::S12396C2_nt s12379c1f2;
  int s12379c1f3;
  ::S12396C4_nt s12379c1f4;
  int s12379c1f5[3];
  long s12379c1f6[2];
  ::S12396C2_nt s12379c1f7;
  ::S12396C6_nt s12379c1f8;
  int s12379c1f9[3];
};
//SIG(1 S12379C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC2 Fi FC4{ Fc[12]} Fi[3] Fl[2] FC2 FC5{ Fl} Fi[3]}



static void Test_S12379C1()
{
  {
    init_simple_test("S12379C1");
    S12379C1 lv;
    check2(sizeof(lv), ABISELECT(184,164), "sizeof(S12379C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12379C1)");
    check_field_offset(lv, s12379c1f0, 0, "S12379C1.s12379c1f0");
    check_field_offset(lv, s12379c1f1, 4, "S12379C1.s12379c1f1");
    check_field_offset(lv, s12379c1f2, 40, "S12379C1.s12379c1f2");
    check_field_offset(lv, s12379c1f3, 76, "S12379C1.s12379c1f3");
    check_field_offset(lv, s12379c1f4, 80, "S12379C1.s12379c1f4");
    check_field_offset(lv, s12379c1f5, 92, "S12379C1.s12379c1f5");
    check_field_offset(lv, s12379c1f6, 104, "S12379C1.s12379c1f6");
    check_field_offset(lv, s12379c1f7, ABISELECT(120,112), "S12379C1.s12379c1f7");
    check_field_offset(lv, s12379c1f8, ABISELECT(160,148), "S12379C1.s12379c1f8");
    check_field_offset(lv, s12379c1f9, ABISELECT(168,152), "S12379C1.s12379c1f9");
  }
}
static Arrange_To_Call_Me vS12379C1(Test_S12379C1, "S12379C1", ABISELECT(184,164));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2933C2  : S7856C24 {
  void *s2933c2f0;
  ::S17556C15_nt s2933c2f1;
  int s2933c2f2;
  virtual  ~S2933C2(); // _ZN7S2933C2D1Ev
  virtual void  v5(); // _ZN7S2933C22v5Ev
  virtual void  v6(); // _ZN7S2933C22v6Ev
  virtual void  v7(); // _ZN7S2933C22v7Ev
  virtual void  v8(); // _ZN7S2933C22v8Ev
  S2933C2(); // tgen
};
//SIG(-1 S2933C2) C1{ BC2{ m} vd v1 v2 v3 v4 Fp FC3{ m Fp Fi[2] FC4{ m}} Fi}


 S2933C2 ::~S2933C2(){ note_dtor("S2933C2", this);}
void  S2933C2 ::v5(){vfunc_called(this, "_ZN7S2933C22v5Ev");}
void  S2933C2 ::v6(){vfunc_called(this, "_ZN7S2933C22v6Ev");}
void  S2933C2 ::v7(){vfunc_called(this, "_ZN7S2933C22v7Ev");}
void  S2933C2 ::v8(){vfunc_called(this, "_ZN7S2933C22v8Ev");}
S2933C2 ::S2933C2(){ note_ctor("S2933C2", this);} // tgen

static void Test_S2933C2()
{
  extern Class_Descriptor cd_S2933C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2933C2, buf);
    S2933C2 *dp, &lv = *(dp=new (buf) S2933C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2933C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2933C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S2933C2");
    check_field_offset(lv, s2933c2f0, ABISELECT(8,4), "S2933C2.s2933c2f0");
    check_field_offset(lv, s2933c2f1, ABISELECT(16,8), "S2933C2.s2933c2f1");
    check_field_offset(lv, s2933c2f2, ABISELECT(40,24), "S2933C2.s2933c2f2");
    test_class_info(&lv, &cd_S2933C2);
    dp->~S2933C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2933C2(Test_S2933C2, "S2933C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2933C2C1Ev();
extern void _ZN7S2933C2D1Ev();
Name_Map name_map_S2933C2[] = {
  NSPAIR(_ZN7S2933C2C1Ev),
  NSPAIR(_ZN7S2933C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S2933C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2933C2[];
extern void _ZN7S2933C2D1Ev();
extern void _ZN7S2933C2D0Ev();
extern void _ZN7S2933C22v5Ev();
extern void _ZN7S2933C22v6Ev();
extern void _ZN7S2933C22v7Ev();
extern void _ZN7S2933C22v8Ev();
static  VTBL_ENTRY vtc_S2933C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2933C2[0]),
  (VTBL_ENTRY)&_ZN7S2933C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2933C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S2933C2[];
extern  VTBL_ENTRY _ZTV7S2933C2[];
Class_Descriptor cd_S2933C2 = {  "S2933C2", // class name
  bases_S2933C2, 1,
  &(vtc_S2933C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2933C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2933C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2933C1  : S2933C2 {
  int s2933c1f0;
  virtual  ~S2933C1(); // _ZN7S2933C1D1Ev
  virtual void  v1(); // _ZN7S2933C12v1Ev
  virtual void  v2(); // _ZN7S2933C12v2Ev
  virtual void  v3(); // _ZN7S2933C12v3Ev
  virtual void  v4(); // _ZN7S2933C12v4Ev
  S2933C1(); // tgen
};
//SIG(1 S2933C1) C1{ BC2{ BC3{ m} vd v5 v6 v7 v8 Fp FC4{ m Fp Fi[2] FC5{ m}} Fi} vd v1 v2 v3 v4 Fi}


 S2933C1 ::~S2933C1(){ note_dtor("S2933C1", this);}
void  S2933C1 ::v1(){vfunc_called(this, "_ZN7S2933C12v1Ev");}
void  S2933C1 ::v2(){vfunc_called(this, "_ZN7S2933C12v2Ev");}
void  S2933C1 ::v3(){vfunc_called(this, "_ZN7S2933C12v3Ev");}
void  S2933C1 ::v4(){vfunc_called(this, "_ZN7S2933C12v4Ev");}
S2933C1 ::S2933C1(){ note_ctor("S2933C1", this);} // tgen

static void Test_S2933C1()
{
  extern Class_Descriptor cd_S2933C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2933C1, buf);
    S2933C1 *dp, &lv = *(dp=new (buf) S2933C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2933C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2933C1)");
    check_base_class_offset(lv, (S7856C24*)(S2933C2*), 0, "S2933C1");
    check_base_class_offset(lv, (S2933C2*), 0, "S2933C1");
    check_field_offset(lv, s2933c1f0, ABISELECT(44,28), "S2933C1.s2933c1f0");
    test_class_info(&lv, &cd_S2933C1);
    dp->~S2933C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2933C1(Test_S2933C1, "S2933C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2933C1C1Ev();
extern void _ZN7S2933C1D1Ev();
Name_Map name_map_S2933C1[] = {
  NSPAIR(_ZN7S2933C1C1Ev),
  NSPAIR(_ZN7S2933C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S2933C2;
extern VTBL_ENTRY _ZTI7S2933C2[];
extern  VTBL_ENTRY _ZTV7S2933C2[];
static Base_Class bases_S2933C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2933C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2933C1[];
extern void _ZN7S2933C1D1Ev();
extern void _ZN7S2933C1D0Ev();
extern void _ZN7S2933C22v5Ev();
extern void _ZN7S2933C22v6Ev();
extern void _ZN7S2933C22v7Ev();
extern void _ZN7S2933C22v8Ev();
extern void _ZN7S2933C12v1Ev();
extern void _ZN7S2933C12v2Ev();
extern void _ZN7S2933C12v3Ev();
extern void _ZN7S2933C12v4Ev();
static  VTBL_ENTRY vtc_S2933C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2933C1[0]),
  (VTBL_ENTRY)&_ZN7S2933C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2933C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2933C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2933C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2933C1[];
extern  VTBL_ENTRY _ZTV7S2933C1[];
Class_Descriptor cd_S2933C1 = {  "S2933C1", // class name
  bases_S2933C1, 2,
  &(vtc_S2933C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2933C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2933C1),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  S6873C2_nt  {
  virtual  ~S6873C2_nt(); // _ZN10S6873C2_ntD1Ev
  virtual void  v4(); // _ZN10S6873C2_nt2v4Ev
  virtual void  v5(); // _ZN10S6873C2_nt2v5Ev
  virtual void  v6(); // _ZN10S6873C2_nt2v6Ev
  virtual void  v7(); // _ZN10S6873C2_nt2v7Ev
  virtual void  v8(); // _ZN10S6873C2_nt2v8Ev
  virtual void  v9(); // _ZN10S6873C2_nt2v9Ev
  S6873C2_nt(); // tgen
};
//SIG(-1 S6873C2_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S6873C2_nt ::~S6873C2_nt(){ note_dtor("S6873C2_nt", this);}
void  S6873C2_nt ::v4(){vfunc_called(this, "_ZN10S6873C2_nt2v4Ev");}
void  S6873C2_nt ::v5(){vfunc_called(this, "_ZN10S6873C2_nt2v5Ev");}
void  S6873C2_nt ::v6(){vfunc_called(this, "_ZN10S6873C2_nt2v6Ev");}
void  S6873C2_nt ::v7(){vfunc_called(this, "_ZN10S6873C2_nt2v7Ev");}
void  S6873C2_nt ::v8(){vfunc_called(this, "_ZN10S6873C2_nt2v8Ev");}
void  S6873C2_nt ::v9(){vfunc_called(this, "_ZN10S6873C2_nt2v9Ev");}
S6873C2_nt ::S6873C2_nt(){ note_ctor("S6873C2_nt", this);} // tgen

//skip512 S6873C2_nt

#else // __cplusplus

extern void _ZN10S6873C2_ntC1Ev();
extern void _ZN10S6873C2_ntD1Ev();
Name_Map name_map_S6873C2_nt[] = {
  NSPAIR(_ZN10S6873C2_ntC1Ev),
  NSPAIR(_ZN10S6873C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
extern void _ZN10S6873C2_ntD1Ev();
extern void _ZN10S6873C2_ntD0Ev();
extern void _ZN10S6873C2_nt2v4Ev();
extern void _ZN10S6873C2_nt2v5Ev();
extern void _ZN10S6873C2_nt2v6Ev();
extern void _ZN10S6873C2_nt2v7Ev();
extern void _ZN10S6873C2_nt2v8Ev();
extern void _ZN10S6873C2_nt2v9Ev();
static  VTBL_ENTRY vtc_S6873C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6873C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6873C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
VTBL_ENTRY *P__ZTI10S6873C2_nt = _ZTI10S6873C2_nt; 
extern  VTBL_ENTRY _ZTV10S6873C2_nt[];
Class_Descriptor cd_S6873C2_nt = {  "S6873C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6873C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6873C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6873C2_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  S6873C1  : S6873C2_nt {
  void *s6873c1f0[3];
  __tsi64 s6873c1f1;
  int s6873c1f2[3];
  ::S17566C3_nt s6873c1f3;
  char s6873c1f4[2];
  virtual  ~S6873C1(); // _ZN7S6873C1D1Ev
  virtual void  v1(); // _ZN7S6873C12v1Ev
  virtual void  v2(); // _ZN7S6873C12v2Ev
  virtual void  v3(); // _ZN7S6873C12v3Ev
  S6873C1(); // tgen
};
//SIG(1 S6873C1) C1{ BC2{ vd v4 v5 v6 v7 v8 v9} vd v1 v2 v3 Fp[3] FL Fi[3] FC3{ m FL[4]} Fc[2]}


 S6873C1 ::~S6873C1(){ note_dtor("S6873C1", this);}
void  S6873C1 ::v1(){vfunc_called(this, "_ZN7S6873C12v1Ev");}
void  S6873C1 ::v2(){vfunc_called(this, "_ZN7S6873C12v2Ev");}
void  S6873C1 ::v3(){vfunc_called(this, "_ZN7S6873C12v3Ev");}
S6873C1 ::S6873C1(){ note_ctor("S6873C1", this);} // tgen

static void Test_S6873C1()
{
  extern Class_Descriptor cd_S6873C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,19)];
    init_test(&cd_S6873C1, buf);
    S6873C1 *dp, &lv = *(dp=new (buf) S6873C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S6873C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6873C1)");
    check_base_class_offset(lv, (S6873C2_nt*), 0, "S6873C1");
    check_field_offset(lv, s6873c1f0, ABISELECT(8,4), "S6873C1.s6873c1f0");
    check_field_offset(lv, s6873c1f1, ABISELECT(32,16), "S6873C1.s6873c1f1");
    check_field_offset(lv, s6873c1f2, ABISELECT(40,24), "S6873C1.s6873c1f2");
    check_field_offset(lv, s6873c1f3, ABISELECT(56,36), "S6873C1.s6873c1f3");
    check_field_offset(lv, s6873c1f4, ABISELECT(88,68), "S6873C1.s6873c1f4");
    test_class_info(&lv, &cd_S6873C1);
    dp->~S6873C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6873C1(Test_S6873C1, "S6873C1", ABISELECT(96,72));

#else // __cplusplus

extern void _ZN7S6873C1C1Ev();
extern void _ZN7S6873C1D1Ev();
Name_Map name_map_S6873C1[] = {
  NSPAIR(_ZN7S6873C1C1Ev),
  NSPAIR(_ZN7S6873C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6873C2_nt;
extern VTBL_ENTRY _ZTI10S6873C2_nt[];
extern  VTBL_ENTRY _ZTV10S6873C2_nt[];
static Base_Class bases_S6873C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6873C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6873C1[];
extern void _ZN7S6873C1D1Ev();
extern void _ZN7S6873C1D0Ev();
extern void _ZN10S6873C2_nt2v4Ev();
extern void _ZN10S6873C2_nt2v5Ev();
extern void _ZN10S6873C2_nt2v6Ev();
extern void _ZN10S6873C2_nt2v7Ev();
extern void _ZN10S6873C2_nt2v8Ev();
extern void _ZN10S6873C2_nt2v9Ev();
extern void _ZN7S6873C12v1Ev();
extern void _ZN7S6873C12v2Ev();
extern void _ZN7S6873C12v3Ev();
static  VTBL_ENTRY vtc_S6873C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6873C1[0]),
  (VTBL_ENTRY)&_ZN7S6873C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6873C1D0Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S6873C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6873C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S6873C1[];
extern  VTBL_ENTRY _ZTV7S6873C1[];
Class_Descriptor cd_S6873C1 = {  "S6873C1", // class name
  bases_S6873C1, 1,
  &(vtc_S6873C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,72), // object size
  NSPAIRA(_ZTI7S6873C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6873C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9389C2  {
  ::S18423C15_nt s9389c2f0;
  int s9389c2f1[2];
  char s9389c2f2;
  virtual  ~S9389C2(); // _ZN7S9389C2D1Ev
  virtual void  v3(); // _ZN7S9389C22v3Ev
  virtual void  v4(); // _ZN7S9389C22v4Ev
  virtual void  v5(); // _ZN7S9389C22v5Ev
  S9389C2(); // tgen
};
//SIG(-1 S9389C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9389C2 ::~S9389C2(){ note_dtor("S9389C2", this);}
void  S9389C2 ::v3(){vfunc_called(this, "_ZN7S9389C22v3Ev");}
void  S9389C2 ::v4(){vfunc_called(this, "_ZN7S9389C22v4Ev");}
void  S9389C2 ::v5(){vfunc_called(this, "_ZN7S9389C22v5Ev");}
S9389C2 ::S9389C2(){ note_ctor("S9389C2", this);} // tgen

static void Test_S9389C2()
{
  extern Class_Descriptor cd_S9389C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9389C2, buf);
    S9389C2 *dp, &lv = *(dp=new (buf) S9389C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9389C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9389C2)");
    check_field_offset(lv, s9389c2f0, ABISELECT(8,4), "S9389C2.s9389c2f0");
    check_field_offset(lv, s9389c2f1, ABISELECT(24,16), "S9389C2.s9389c2f1");
    check_field_offset(lv, s9389c2f2, ABISELECT(32,24), "S9389C2.s9389c2f2");
    test_class_info(&lv, &cd_S9389C2);
    dp->~S9389C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9389C2(Test_S9389C2, "S9389C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9389C2C1Ev();
extern void _ZN7S9389C2D1Ev();
Name_Map name_map_S9389C2[] = {
  NSPAIR(_ZN7S9389C2C1Ev),
  NSPAIR(_ZN7S9389C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9389C2[];
extern void _ZN7S9389C2D1Ev();
extern void _ZN7S9389C2D0Ev();
extern void _ZN7S9389C22v3Ev();
extern void _ZN7S9389C22v4Ev();
extern void _ZN7S9389C22v5Ev();
static  VTBL_ENTRY vtc_S9389C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9389C2[0]),
  (VTBL_ENTRY)&_ZN7S9389C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9389C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9389C2[];
extern  VTBL_ENTRY _ZTV7S9389C2[];
Class_Descriptor cd_S9389C2 = {  "S9389C2", // class name
  0,0,//no base classes
  &(vtc_S9389C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9389C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9389C2),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  S9389C1  : S9389C2 {
  void *s9389c1f0[2];
  ::S18423C15_nt s9389c1f1;
  char s9389c1f2[2];
  virtual  ~S9389C1(); // _ZN7S9389C1D1Ev
  virtual void  v1(); // _ZN7S9389C12v1Ev
  virtual void  v2(); // _ZN7S9389C12v2Ev
  S9389C1(); // tgen
};
//SIG(1 S9389C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp[2] FC3 Fc[2]}


 S9389C1 ::~S9389C1(){ note_dtor("S9389C1", this);}
void  S9389C1 ::v1(){vfunc_called(this, "_ZN7S9389C12v1Ev");}
void  S9389C1 ::v2(){vfunc_called(this, "_ZN7S9389C12v2Ev");}
S9389C1 ::S9389C1(){ note_ctor("S9389C1", this);} // tgen

static void Test_S9389C1()
{
  extern Class_Descriptor cd_S9389C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S9389C1, buf);
    S9389C1 *dp, &lv = *(dp=new (buf) S9389C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S9389C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9389C1)");
    check_base_class_offset(lv, (S9389C2*), 0, "S9389C1");
    check_field_offset(lv, s9389c1f0, ABISELECT(40,28), "S9389C1.s9389c1f0");
    check_field_offset(lv, s9389c1f1, ABISELECT(56,36), "S9389C1.s9389c1f1");
    check_field_offset(lv, s9389c1f2, ABISELECT(72,48), "S9389C1.s9389c1f2");
    test_class_info(&lv, &cd_S9389C1);
    dp->~S9389C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9389C1(Test_S9389C1, "S9389C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S9389C1C1Ev();
extern void _ZN7S9389C1D1Ev();
Name_Map name_map_S9389C1[] = {
  NSPAIR(_ZN7S9389C1C1Ev),
  NSPAIR(_ZN7S9389C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9389C2;
extern VTBL_ENTRY _ZTI7S9389C2[];
extern  VTBL_ENTRY _ZTV7S9389C2[];
static Base_Class bases_S9389C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9389C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9389C1[];
extern void _ZN7S9389C1D1Ev();
extern void _ZN7S9389C1D0Ev();
extern void _ZN7S9389C22v3Ev();
extern void _ZN7S9389C22v4Ev();
extern void _ZN7S9389C22v5Ev();
extern void _ZN7S9389C12v1Ev();
extern void _ZN7S9389C12v2Ev();
static  VTBL_ENTRY vtc_S9389C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9389C1[0]),
  (VTBL_ENTRY)&_ZN7S9389C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9389C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9389C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9389C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9389C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9389C1[];
extern  VTBL_ENTRY _ZTV7S9389C1[];
Class_Descriptor cd_S9389C1 = {  "S9389C1", // class name
  bases_S9389C1, 1,
  &(vtc_S9389C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S9389C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9389C1),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  S2934C2  : S7856C24 {
  void *s2934c2f0;
  ::S17556C15_nt s2934c2f1;
  int s2934c2f2;
  virtual  ~S2934C2(); // _ZN7S2934C2D1Ev
  virtual void  v5(); // _ZN7S2934C22v5Ev
  virtual void  v6(); // _ZN7S2934C22v6Ev
  virtual void  v7(); // _ZN7S2934C22v7Ev
  virtual void  v8(); // _ZN7S2934C22v8Ev
  S2934C2(); // tgen
};
//SIG(-1 S2934C2) C1{ BC2{ m} vd v1 v2 v3 v4 Fp FC3{ m Fp Fi[2] FC4{ m}} Fi}


 S2934C2 ::~S2934C2(){ note_dtor("S2934C2", this);}
void  S2934C2 ::v5(){vfunc_called(this, "_ZN7S2934C22v5Ev");}
void  S2934C2 ::v6(){vfunc_called(this, "_ZN7S2934C22v6Ev");}
void  S2934C2 ::v7(){vfunc_called(this, "_ZN7S2934C22v7Ev");}
void  S2934C2 ::v8(){vfunc_called(this, "_ZN7S2934C22v8Ev");}
S2934C2 ::S2934C2(){ note_ctor("S2934C2", this);} // tgen

static void Test_S2934C2()
{
  extern Class_Descriptor cd_S2934C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2934C2, buf);
    S2934C2 *dp, &lv = *(dp=new (buf) S2934C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2934C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2934C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S2934C2");
    check_field_offset(lv, s2934c2f0, ABISELECT(8,4), "S2934C2.s2934c2f0");
    check_field_offset(lv, s2934c2f1, ABISELECT(16,8), "S2934C2.s2934c2f1");
    check_field_offset(lv, s2934c2f2, ABISELECT(40,24), "S2934C2.s2934c2f2");
    test_class_info(&lv, &cd_S2934C2);
    dp->~S2934C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2934C2(Test_S2934C2, "S2934C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2934C2C1Ev();
extern void _ZN7S2934C2D1Ev();
Name_Map name_map_S2934C2[] = {
  NSPAIR(_ZN7S2934C2C1Ev),
  NSPAIR(_ZN7S2934C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S2934C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2934C2[];
extern void _ZN7S2934C2D1Ev();
extern void _ZN7S2934C2D0Ev();
extern void _ZN7S2934C22v5Ev();
extern void _ZN7S2934C22v6Ev();
extern void _ZN7S2934C22v7Ev();
extern void _ZN7S2934C22v8Ev();
static  VTBL_ENTRY vtc_S2934C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2934C2[0]),
  (VTBL_ENTRY)&_ZN7S2934C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2934C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S2934C2[];
extern  VTBL_ENTRY _ZTV7S2934C2[];
Class_Descriptor cd_S2934C2 = {  "S2934C2", // class name
  bases_S2934C2, 1,
  &(vtc_S2934C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2934C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2934C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2934C1  : S2934C2 {
  virtual  ~S2934C1(); // _ZN7S2934C1D1Ev
  virtual void  v1(); // _ZN7S2934C12v1Ev
  virtual void  v2(); // _ZN7S2934C12v2Ev
  virtual void  v3(); // _ZN7S2934C12v3Ev
  virtual void  v4(); // _ZN7S2934C12v4Ev
  S2934C1(); // tgen
};
//SIG(1 S2934C1) C1{ BC2{ BC3{ m} vd v5 v6 v7 v8 Fp FC4{ m Fp Fi[2] FC5{ m}} Fi} vd v1 v2 v3 v4}


 S2934C1 ::~S2934C1(){ note_dtor("S2934C1", this);}
void  S2934C1 ::v1(){vfunc_called(this, "_ZN7S2934C12v1Ev");}
void  S2934C1 ::v2(){vfunc_called(this, "_ZN7S2934C12v2Ev");}
void  S2934C1 ::v3(){vfunc_called(this, "_ZN7S2934C12v3Ev");}
void  S2934C1 ::v4(){vfunc_called(this, "_ZN7S2934C12v4Ev");}
S2934C1 ::S2934C1(){ note_ctor("S2934C1", this);} // tgen

static void Test_S2934C1()
{
  extern Class_Descriptor cd_S2934C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2934C1, buf);
    S2934C1 *dp, &lv = *(dp=new (buf) S2934C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2934C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2934C1)");
    check_base_class_offset(lv, (S7856C24*)(S2934C2*), 0, "S2934C1");
    check_base_class_offset(lv, (S2934C2*), 0, "S2934C1");
    test_class_info(&lv, &cd_S2934C1);
    dp->~S2934C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2934C1(Test_S2934C1, "S2934C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2934C1C1Ev();
extern void _ZN7S2934C1D1Ev();
Name_Map name_map_S2934C1[] = {
  NSPAIR(_ZN7S2934C1C1Ev),
  NSPAIR(_ZN7S2934C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S2934C2;
extern VTBL_ENTRY _ZTI7S2934C2[];
extern  VTBL_ENTRY _ZTV7S2934C2[];
static Base_Class bases_S2934C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2934C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S2934C1[];
extern void _ZN7S2934C1D1Ev();
extern void _ZN7S2934C1D0Ev();
extern void _ZN7S2934C22v5Ev();
extern void _ZN7S2934C22v6Ev();
extern void _ZN7S2934C22v7Ev();
extern void _ZN7S2934C22v8Ev();
extern void _ZN7S2934C12v1Ev();
extern void _ZN7S2934C12v2Ev();
extern void _ZN7S2934C12v3Ev();
extern void _ZN7S2934C12v4Ev();
static  VTBL_ENTRY vtc_S2934C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2934C1[0]),
  (VTBL_ENTRY)&_ZN7S2934C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2934C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2934C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2934C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2934C1[];
extern  VTBL_ENTRY _ZTV7S2934C1[];
Class_Descriptor cd_S2934C1 = {  "S2934C1", // class name
  bases_S2934C1, 2,
  &(vtc_S2934C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2934C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2934C1),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  S3717C2  : S3750C3_nt {
  virtual  ~S3717C2(); // _ZN7S3717C2D1Ev
  virtual void  v3(); // _ZN7S3717C22v3Ev
  virtual void  v4(); // _ZN7S3717C22v4Ev
  S3717C2(); // tgen
};
//SIG(-1 S3717C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3717C2 ::~S3717C2(){ note_dtor("S3717C2", this);}
void  S3717C2 ::v3(){vfunc_called(this, "_ZN7S3717C22v3Ev");}
void  S3717C2 ::v4(){vfunc_called(this, "_ZN7S3717C22v4Ev");}
S3717C2 ::S3717C2(){ note_ctor("S3717C2", this);} // tgen

static void Test_S3717C2()
{
  extern Class_Descriptor cd_S3717C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3717C2, buf);
    S3717C2 *dp, &lv = *(dp=new (buf) S3717C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3717C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3717C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3717C2");
    test_class_info(&lv, &cd_S3717C2);
    dp->~S3717C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3717C2(Test_S3717C2, "S3717C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3717C2C1Ev();
extern void _ZN7S3717C2D1Ev();
Name_Map name_map_S3717C2[] = {
  NSPAIR(_ZN7S3717C2C1Ev),
  NSPAIR(_ZN7S3717C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3717C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3717C2[];
extern void _ZN7S3717C2D1Ev();
extern void _ZN7S3717C2D0Ev();
extern void _ZN7S3717C22v3Ev();
extern void _ZN7S3717C22v4Ev();
static  VTBL_ENTRY vtc_S3717C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3717C2[0]),
  (VTBL_ENTRY)&_ZN7S3717C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3717C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3717C2[];
extern  VTBL_ENTRY _ZTV7S3717C2[];
Class_Descriptor cd_S3717C2 = {  "S3717C2", // class name
  bases_S3717C2, 1,
  &(vtc_S3717C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3717C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3717C2),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  S3717C1  : S3717C2 {
  ::S18423C15_nt s3717c1f0;
  ::S40C9_nt s3717c1f1;
  virtual  ~S3717C1(); // _ZN7S3717C1D1Ev
  virtual void  v1(); // _ZN7S3717C12v1Ev
  virtual void  v2(); // _ZN7S3717C12v2Ev
  S3717C1(); // tgen
};
//SIG(1 S3717C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FC4{ m Fp Fi FC5{ m}} FC6{ m Fi[2]}}


 S3717C1 ::~S3717C1(){ note_dtor("S3717C1", this);}
void  S3717C1 ::v1(){vfunc_called(this, "_ZN7S3717C12v1Ev");}
void  S3717C1 ::v2(){vfunc_called(this, "_ZN7S3717C12v2Ev");}
S3717C1 ::S3717C1(){ note_ctor("S3717C1", this);} // tgen

static void Test_S3717C1()
{
  extern Class_Descriptor cd_S3717C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3717C1, buf);
    S3717C1 *dp, &lv = *(dp=new (buf) S3717C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3717C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3717C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3717C2*), 0, "S3717C1");
    check_base_class_offset(lv, (S3717C2*), 0, "S3717C1");
    check_field_offset(lv, s3717c1f0, ABISELECT(16,8), "S3717C1.s3717c1f0");
    check_field_offset(lv, s3717c1f1, ABISELECT(32,20), "S3717C1.s3717c1f1");
    test_class_info(&lv, &cd_S3717C1);
    dp->~S3717C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3717C1(Test_S3717C1, "S3717C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S3717C1C1Ev();
extern void _ZN7S3717C1D1Ev();
Name_Map name_map_S3717C1[] = {
  NSPAIR(_ZN7S3717C1C1Ev),
  NSPAIR(_ZN7S3717C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3717C2;
extern VTBL_ENTRY _ZTI7S3717C2[];
extern  VTBL_ENTRY _ZTV7S3717C2[];
static Base_Class bases_S3717C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3717C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3717C1[];
extern void _ZN7S3717C1D1Ev();
extern void _ZN7S3717C1D0Ev();
extern void _ZN7S3717C22v3Ev();
extern void _ZN7S3717C22v4Ev();
extern void _ZN7S3717C12v1Ev();
extern void _ZN7S3717C12v2Ev();
static  VTBL_ENTRY vtc_S3717C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3717C1[0]),
  (VTBL_ENTRY)&_ZN7S3717C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3717C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3717C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3717C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3717C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3717C1[];
extern  VTBL_ENTRY _ZTV7S3717C1[];
Class_Descriptor cd_S3717C1 = {  "S3717C1", // class name
  bases_S3717C1, 2,
  &(vtc_S3717C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S3717C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3717C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12093C1  {
  ::S8611C4_nt s12093c1f0;
  int s12093c1f1;
  ::S8611C4_nt s12093c1f2;
  int s12093c1f3;
  ::S8611C4_nt s12093c1f4;
  int s12093c1f5;
  ::S8611C4_nt s12093c1f6;
  int s12093c1f7;
  ::S8611C4_nt s12093c1f8;
  int s12093c1f9;
  ::S8611C4_nt s12093c1f10;
  int s12093c1f11;
  ::S40C35_nt s12093c1f12;
  ::S40C35_nt s12093c1f13;
};
//SIG(1 S12093C1) C1{ FC2{ m Fi[3]} Fi FC2 Fi FC2 Fi FC2 Fi FC2 Fi FC2 Fi FC3{ m Fi[4]} FC3}



static void Test_S12093C1()
{
  {
    init_simple_test("S12093C1");
    S12093C1 lv;
    check2(sizeof(lv), 128, "sizeof(S12093C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12093C1)");
    check_field_offset(lv, s12093c1f0, 0, "S12093C1.s12093c1f0");
    check_field_offset(lv, s12093c1f1, 12, "S12093C1.s12093c1f1");
    check_field_offset(lv, s12093c1f2, 16, "S12093C1.s12093c1f2");
    check_field_offset(lv, s12093c1f3, 28, "S12093C1.s12093c1f3");
    check_field_offset(lv, s12093c1f4, 32, "S12093C1.s12093c1f4");
    check_field_offset(lv, s12093c1f5, 44, "S12093C1.s12093c1f5");
    check_field_offset(lv, s12093c1f6, 48, "S12093C1.s12093c1f6");
    check_field_offset(lv, s12093c1f7, 60, "S12093C1.s12093c1f7");
    check_field_offset(lv, s12093c1f8, 64, "S12093C1.s12093c1f8");
    check_field_offset(lv, s12093c1f9, 76, "S12093C1.s12093c1f9");
    check_field_offset(lv, s12093c1f10, 80, "S12093C1.s12093c1f10");
    check_field_offset(lv, s12093c1f11, 92, "S12093C1.s12093c1f11");
    check_field_offset(lv, s12093c1f12, 96, "S12093C1.s12093c1f12");
    check_field_offset(lv, s12093c1f13, 112, "S12093C1.s12093c1f13");
  }
}
static Arrange_To_Call_Me vS12093C1(Test_S12093C1, "S12093C1", 128);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16181C1  {
  ::S15733C7_nt s16181c1f0;
  ::S17555C3_nt s16181c1f1;
  ::S2442C11_nt s16181c1f2;
  void  mf16181c1(); // _ZN8S16181C19mf16181c1Ev
};
//SIG(1 S16181C1) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FC6{ Fl[4]}} FC7{ m Fp FC8{ Fi[4]}}}


void  S16181C1 ::mf16181c1(){}

static void Test_S16181C1()
{
  {
    init_simple_test("S16181C1");
    S16181C1 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S16181C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16181C1)");
    check_field_offset(lv, s16181c1f0, 0, "S16181C1.s16181c1f0");
    check_field_offset(lv, s16181c1f1, ABISELECT(16,12), "S16181C1.s16181c1f1");
    check_field_offset(lv, s16181c1f2, ABISELECT(48,28), "S16181C1.s16181c1f2");
  }
}
static Arrange_To_Call_Me vS16181C1(Test_S16181C1, "S16181C1", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16311C1  {
  ::S17556C15_nt s16311c1f0;
  ::S17556C15_nt s16311c1f1;
  ::S1868C13_nt s16311c1f2;
  ::S1868C13_nt s16311c1f3;
  int s16311c1f4;
  void *s16311c1f5[2];
  void  mf16311c1(); // _ZN8S16311C19mf16311c1Ev
};
//SIG(1 S16311C1) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC2 FC4{ m Fp Fi[2] FC5{ m}} FC4 Fi Fp[2]}


void  S16311C1 ::mf16311c1(){}

static void Test_S16311C1()
{
  {
    init_simple_test("S16311C1");
    S16311C1 lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S16311C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16311C1)");
    check_field_offset(lv, s16311c1f0, 0, "S16311C1.s16311c1f0");
    check_field_offset(lv, s16311c1f1, ABISELECT(24,16), "S16311C1.s16311c1f1");
    check_field_offset(lv, s16311c1f2, ABISELECT(48,32), "S16311C1.s16311c1f2");
    check_field_offset(lv, s16311c1f3, ABISELECT(72,48), "S16311C1.s16311c1f3");
    check_field_offset(lv, s16311c1f4, ABISELECT(96,64), "S16311C1.s16311c1f4");
    check_field_offset(lv, s16311c1f5, ABISELECT(104,68), "S16311C1.s16311c1f5");
  }
}
static Arrange_To_Call_Me vS16311C1(Test_S16311C1, "S16311C1", ABISELECT(120,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19602C2  : S8033C7 {
  void *s19602c2f0;
  ::S20291C14_nt s19602c2f1;
  void *s19602c2f2;
  long double s19602c2f3;
  ~S19602C2(); // tgen
  S19602C2(); // tgen
};
//SIG(-1 S19602C2) C1{ BC2{ vd m Fc Fc:0 Fl[8] FD} Fp FC3{} Fp FD}


S19602C2 ::~S19602C2(){ note_dtor("S19602C2", this);} // tgen
S19602C2 ::S19602C2(){ note_ctor("S19602C2", this);} // tgen

static void Test_S19602C2()
{
  extern Class_Descriptor cd_S19602C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S19602C2, buf);
    S19602C2 *dp, &lv = *(dp=new (buf) S19602C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S19602C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19602C2)");
    check_base_class_offset(lv, (S8033C7*), 0, "S19602C2");
    check_field_offset(lv, s19602c2f0, ABISELECT(96,52), "S19602C2.s19602c2f0");
    check_field_offset(lv, s19602c2f1, ABISELECT(104,56), "S19602C2.s19602c2f1");
    check_field_offset(lv, s19602c2f2, ABISELECT(112,60), "S19602C2.s19602c2f2");
    check_field_offset(lv, s19602c2f3, ABISELECT(128,64), "S19602C2.s19602c2f3");
    test_class_info(&lv, &cd_S19602C2);
    dp->~S19602C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19602C2(Test_S19602C2, "S19602C2", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S19602C2C1Ev();
extern void _ZN8S19602C2D1Ev();
Name_Map name_map_S19602C2[] = {
  NSPAIR(_ZN8S19602C2C1Ev),
  NSPAIR(_ZN8S19602C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
static Base_Class bases_S19602C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S19602C2[];
extern void _ZN8S19602C2D1Ev();
extern void _ZN8S19602C2D0Ev();
static  VTBL_ENTRY vtc_S19602C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19602C2[0]),
  (VTBL_ENTRY)&_ZN8S19602C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19602C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S19602C2[];
extern  VTBL_ENTRY _ZTV8S19602C2[];
Class_Descriptor cd_S19602C2 = {  "S19602C2", // class name
  bases_S19602C2, 1,
  &(vtc_S19602C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S19602C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19602C2),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  S19602C1  : virtual S19602C2 {
  __tsi64 s19602c1f0;
  long double s19602c1f1;
  int s19602c1f2;
  char s19602c1f3[7];
  void *s19602c1f4;
  ~S19602C1(); // tgen
  S19602C1(); // tgen
};
//SIG(1 S19602C1) C1{ VBC2{ BC3{ vd m Fc Fc:0 Fl[8] FD} Fp FC4{} Fp FD} FL FD Fi Fc[7] Fp}


S19602C1 ::~S19602C1(){ note_dtor("S19602C1", this);} // tgen
S19602C1 ::S19602C1(){ note_ctor("S19602C1", this);} // tgen

static void Test_S19602C1()
{
  extern Class_Descriptor cd_S19602C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,30)];
    init_test(&cd_S19602C1, buf);
    S19602C1 *dp, &lv = *(dp=new (buf) S19602C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S19602C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19602C1)");
    check_base_class_offset(lv, (S8033C7*)(S19602C2*), ABISELECT(64,40), "S19602C1");
    check_base_class_offset(lv, (S19602C2*), ABISELECT(64,40), "S19602C1");
    check_field_offset(lv, s19602c1f0, ABISELECT(8,4), "S19602C1.s19602c1f0");
    check_field_offset(lv, s19602c1f1, ABISELECT(16,12), "S19602C1.s19602c1f1");
    check_field_offset(lv, s19602c1f2, ABISELECT(32,24), "S19602C1.s19602c1f2");
    check_field_offset(lv, s19602c1f3, ABISELECT(36,28), "S19602C1.s19602c1f3");
    check_field_offset(lv, s19602c1f4, ABISELECT(48,36), "S19602C1.s19602c1f4");
    test_class_info(&lv, &cd_S19602C1);
    dp->~S19602C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19602C1(Test_S19602C1, "S19602C1", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN8S19602C1C1Ev();
extern void _ZN8S19602C1D1Ev();
Name_Map name_map_S19602C1[] = {
  NSPAIR(_ZN8S19602C1C1Ev),
  NSPAIR(_ZN8S19602C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8033C7;
extern VTBL_ENTRY _ZTI7S8033C7[];
extern  VTBL_ENTRY _ZTV7S8033C7[];
extern Class_Descriptor cd_S19602C2;
extern VTBL_ENTRY _ZTI8S19602C2[];
extern  VTBL_ENTRY _ZTV8S19602C2[];
static Base_Class bases_S19602C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8033C7,    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, 0},
  {&cd_S19602C2,    ABISELECT(64,40), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19602C1[];
extern void _ZN8S19602C1D1Ev();
extern void _ZN8S19602C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19602C1D1Ev,_ZThn40_N8S19602C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19602C1D0Ev,_ZThn40_N8S19602C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19602C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19602C1[0]),
  (VTBL_ENTRY)&_ZN8S19602C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19602C1D0Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19602C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19602C1[];
static  VTT_ENTRY vtt_S19602C1[] = {
  {&(_ZTV8S19602C1[3]),  3,10},
  {&(_ZTV8S19602C1[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19602C1[];
extern  VTBL_ENTRY _ZTV8S19602C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19602C1[];
static VTBL_ENTRY alt_thunk_names188[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19602C1D0Ev,_ZTv0_n12_N8S19602C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19602C1D0Ev,_ZThn40_N8S19602C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19602C1D1Ev,_ZTv0_n12_N8S19602C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19602C1D1Ev,_ZThn40_N8S19602C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19602C1 = {  "S19602C1", // class name
  bases_S19602C1, 2,
  &(vtc_S19602C1[0]), // expected_vtbl_contents
  &(vtt_S19602C1[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI8S19602C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19602C1),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19602C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names188,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3718C2  : S3750C3_nt {
  virtual  ~S3718C2(); // _ZN7S3718C2D1Ev
  virtual void  v3(); // _ZN7S3718C22v3Ev
  virtual void  v4(); // _ZN7S3718C22v4Ev
  S3718C2(); // tgen
};
//SIG(-1 S3718C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3718C2 ::~S3718C2(){ note_dtor("S3718C2", this);}
void  S3718C2 ::v3(){vfunc_called(this, "_ZN7S3718C22v3Ev");}
void  S3718C2 ::v4(){vfunc_called(this, "_ZN7S3718C22v4Ev");}
S3718C2 ::S3718C2(){ note_ctor("S3718C2", this);} // tgen

static void Test_S3718C2()
{
  extern Class_Descriptor cd_S3718C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3718C2, buf);
    S3718C2 *dp, &lv = *(dp=new (buf) S3718C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3718C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3718C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3718C2");
    test_class_info(&lv, &cd_S3718C2);
    dp->~S3718C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3718C2(Test_S3718C2, "S3718C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3718C2C1Ev();
extern void _ZN7S3718C2D1Ev();
Name_Map name_map_S3718C2[] = {
  NSPAIR(_ZN7S3718C2C1Ev),
  NSPAIR(_ZN7S3718C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3718C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3718C2[];
extern void _ZN7S3718C2D1Ev();
extern void _ZN7S3718C2D0Ev();
extern void _ZN7S3718C22v3Ev();
extern void _ZN7S3718C22v4Ev();
static  VTBL_ENTRY vtc_S3718C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3718C2[0]),
  (VTBL_ENTRY)&_ZN7S3718C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3718C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3718C2[];
extern  VTBL_ENTRY _ZTV7S3718C2[];
Class_Descriptor cd_S3718C2 = {  "S3718C2", // class name
  bases_S3718C2, 1,
  &(vtc_S3718C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3718C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3718C2),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  S3718C1  : S3718C2 {
  ::S1868C17 s3718c1f0;
  ::S18423C15_nt s3718c1f1;
  virtual  ~S3718C1(); // _ZN7S3718C1D1Ev
  virtual void  v1(); // _ZN7S3718C12v1Ev
  virtual void  v2(); // _ZN7S3718C12v2Ev
  S3718C1(); // tgen
};
//SIG(1 S3718C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FC4{ m Fp} FC5{ m Fp Fi FC6{ m}}}


 S3718C1 ::~S3718C1(){ note_dtor("S3718C1", this);}
void  S3718C1 ::v1(){vfunc_called(this, "_ZN7S3718C12v1Ev");}
void  S3718C1 ::v2(){vfunc_called(this, "_ZN7S3718C12v2Ev");}
S3718C1 ::S3718C1(){ note_ctor("S3718C1", this);} // tgen

static void Test_S3718C1()
{
  extern Class_Descriptor cd_S3718C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3718C1, buf);
    S3718C1 *dp, &lv = *(dp=new (buf) S3718C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3718C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3718C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3718C2*), 0, "S3718C1");
    check_base_class_offset(lv, (S3718C2*), 0, "S3718C1");
    check_field_offset(lv, s3718c1f0, ABISELECT(16,8), "S3718C1.s3718c1f0");
    check_field_offset(lv, s3718c1f1, ABISELECT(24,12), "S3718C1.s3718c1f1");
    test_class_info(&lv, &cd_S3718C1);
    dp->~S3718C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3718C1(Test_S3718C1, "S3718C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3718C1C1Ev();
extern void _ZN7S3718C1D1Ev();
Name_Map name_map_S3718C1[] = {
  NSPAIR(_ZN7S3718C1C1Ev),
  NSPAIR(_ZN7S3718C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3718C2;
extern VTBL_ENTRY _ZTI7S3718C2[];
extern  VTBL_ENTRY _ZTV7S3718C2[];
static Base_Class bases_S3718C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3718C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3718C1[];
extern void _ZN7S3718C1D1Ev();
extern void _ZN7S3718C1D0Ev();
extern void _ZN7S3718C22v3Ev();
extern void _ZN7S3718C22v4Ev();
extern void _ZN7S3718C12v1Ev();
extern void _ZN7S3718C12v2Ev();
static  VTBL_ENTRY vtc_S3718C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3718C1[0]),
  (VTBL_ENTRY)&_ZN7S3718C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3718C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3718C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3718C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3718C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3718C1[];
extern  VTBL_ENTRY _ZTV7S3718C1[];
Class_Descriptor cd_S3718C1 = {  "S3718C1", // class name
  bases_S3718C1, 2,
  &(vtc_S3718C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3718C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3718C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3142C3  {
  int s3142c3f0;
  char s3142c3f1[2];
  virtual void  v3(); // _ZN7S3142C32v3Ev
  virtual void  v4(); // _ZN7S3142C32v4Ev
  virtual void  v5(); // _ZN7S3142C32v5Ev
  virtual void  v6(); // _ZN7S3142C32v6Ev
  virtual void  v7(); // _ZN7S3142C32v7Ev
  ~S3142C3(); // tgen
  S3142C3(); // tgen
};
//SIG(-1 S3142C3) C1{ v1 v2 v3 v4 v5 Fi Fc[2]}


void  S3142C3 ::v3(){vfunc_called(this, "_ZN7S3142C32v3Ev");}
void  S3142C3 ::v4(){vfunc_called(this, "_ZN7S3142C32v4Ev");}
void  S3142C3 ::v5(){vfunc_called(this, "_ZN7S3142C32v5Ev");}
void  S3142C3 ::v6(){vfunc_called(this, "_ZN7S3142C32v6Ev");}
void  S3142C3 ::v7(){vfunc_called(this, "_ZN7S3142C32v7Ev");}
S3142C3 ::~S3142C3(){ note_dtor("S3142C3", this);} // tgen
S3142C3 ::S3142C3(){ note_ctor("S3142C3", this);} // tgen

static void Test_S3142C3()
{
  extern Class_Descriptor cd_S3142C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3142C3, buf);
    S3142C3 *dp, &lv = *(dp=new (buf) S3142C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3142C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3142C3)");
    check_field_offset(lv, s3142c3f0, ABISELECT(8,4), "S3142C3.s3142c3f0");
    check_field_offset(lv, s3142c3f1, ABISELECT(12,8), "S3142C3.s3142c3f1");
    test_class_info(&lv, &cd_S3142C3);
    dp->~S3142C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C3(Test_S3142C3, "S3142C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3142C3C1Ev();
extern void _ZN7S3142C3D1Ev();
Name_Map name_map_S3142C3[] = {
  NSPAIR(_ZN7S3142C3C1Ev),
  NSPAIR(_ZN7S3142C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3142C3[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
static  VTBL_ENTRY vtc_S3142C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C3[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
Class_Descriptor cd_S3142C3 = {  "S3142C3", // class name
  0,0,//no base classes
  &(vtc_S3142C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3142C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3142C3),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  S3142C2  : S3142C3 {
  virtual void  v8(); // _ZN7S3142C22v8Ev
  virtual void  v9(); // _ZN7S3142C22v9Ev
  virtual void  v10(); // _ZN7S3142C23v10Ev
  virtual void  v11(); // _ZN7S3142C23v11Ev
  virtual void  v12(); // _ZN7S3142C23v12Ev
  ~S3142C2(); // tgen
  S3142C2(); // tgen
};
//SIG(-1 S3142C2) C1{ BC2{ v6 v7 v8 v9 v10 Fi Fc[2]} v1 v2 v3 v4 v5}


void  S3142C2 ::v8(){vfunc_called(this, "_ZN7S3142C22v8Ev");}
void  S3142C2 ::v9(){vfunc_called(this, "_ZN7S3142C22v9Ev");}
void  S3142C2 ::v10(){vfunc_called(this, "_ZN7S3142C23v10Ev");}
void  S3142C2 ::v11(){vfunc_called(this, "_ZN7S3142C23v11Ev");}
void  S3142C2 ::v12(){vfunc_called(this, "_ZN7S3142C23v12Ev");}
S3142C2 ::~S3142C2(){ note_dtor("S3142C2", this);} // tgen
S3142C2 ::S3142C2(){ note_ctor("S3142C2", this);} // tgen

static void Test_S3142C2()
{
  extern Class_Descriptor cd_S3142C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3142C2, buf);
    S3142C2 *dp, &lv = *(dp=new (buf) S3142C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3142C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3142C2)");
    check_base_class_offset(lv, (S3142C3*), 0, "S3142C2");
    test_class_info(&lv, &cd_S3142C2);
    dp->~S3142C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C2(Test_S3142C2, "S3142C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3142C2C1Ev();
extern void _ZN7S3142C2D1Ev();
Name_Map name_map_S3142C2[] = {
  NSPAIR(_ZN7S3142C2C1Ev),
  NSPAIR(_ZN7S3142C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3142C3;
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
static Base_Class bases_S3142C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3142C2[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
extern void _ZN7S3142C22v8Ev();
extern void _ZN7S3142C22v9Ev();
extern void _ZN7S3142C23v10Ev();
extern void _ZN7S3142C23v11Ev();
extern void _ZN7S3142C23v12Ev();
static  VTBL_ENTRY vtc_S3142C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C2[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S3142C2[];
extern  VTBL_ENTRY _ZTV7S3142C2[];
Class_Descriptor cd_S3142C2 = {  "S3142C2", // class name
  bases_S3142C2, 1,
  &(vtc_S3142C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3142C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3142C2),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  S3142C1  : S3142C2 {
  long double s3142c1f0[3];
  virtual void  v1(); // _ZN7S3142C12v1Ev
  virtual void  v2(); // _ZN7S3142C12v2Ev
  ~S3142C1(); // tgen
  S3142C1(); // tgen
};
//SIG(1 S3142C1) C1{ BC2{ BC3{ v3 v4 v5 v6 v7 Fi Fc[2]} v8 v9 v10 v11 v12} v1 v2 FD[3]}


void  S3142C1 ::v1(){vfunc_called(this, "_ZN7S3142C12v1Ev");}
void  S3142C1 ::v2(){vfunc_called(this, "_ZN7S3142C12v2Ev");}
S3142C1 ::~S3142C1(){ note_dtor("S3142C1", this);} // tgen
S3142C1 ::S3142C1(){ note_ctor("S3142C1", this);} // tgen

static void Test_S3142C1()
{
  extern Class_Descriptor cd_S3142C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,13)];
    init_test(&cd_S3142C1, buf);
    S3142C1 *dp, &lv = *(dp=new (buf) S3142C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S3142C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3142C1)");
    check_base_class_offset(lv, (S3142C3*)(S3142C2*), 0, "S3142C1");
    check_base_class_offset(lv, (S3142C2*), 0, "S3142C1");
    check_field_offset(lv, s3142c1f0, ABISELECT(16,12), "S3142C1.s3142c1f0");
    test_class_info(&lv, &cd_S3142C1);
    dp->~S3142C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3142C1(Test_S3142C1, "S3142C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN7S3142C1C1Ev();
extern void _ZN7S3142C1D1Ev();
Name_Map name_map_S3142C1[] = {
  NSPAIR(_ZN7S3142C1C1Ev),
  NSPAIR(_ZN7S3142C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3142C3;
extern VTBL_ENTRY _ZTI7S3142C3[];
extern  VTBL_ENTRY _ZTV7S3142C3[];
extern Class_Descriptor cd_S3142C2;
extern VTBL_ENTRY _ZTI7S3142C2[];
extern  VTBL_ENTRY _ZTV7S3142C2[];
static Base_Class bases_S3142C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3142C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3142C1[];
extern void _ZN7S3142C32v3Ev();
extern void _ZN7S3142C32v4Ev();
extern void _ZN7S3142C32v5Ev();
extern void _ZN7S3142C32v6Ev();
extern void _ZN7S3142C32v7Ev();
extern void _ZN7S3142C22v8Ev();
extern void _ZN7S3142C22v9Ev();
extern void _ZN7S3142C23v10Ev();
extern void _ZN7S3142C23v11Ev();
extern void _ZN7S3142C23v12Ev();
extern void _ZN7S3142C12v1Ev();
extern void _ZN7S3142C12v2Ev();
static  VTBL_ENTRY vtc_S3142C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3142C1[0]),
  (VTBL_ENTRY)&_ZN7S3142C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3142C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3142C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3142C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3142C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3142C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3142C1[];
extern  VTBL_ENTRY _ZTV7S3142C1[];
Class_Descriptor cd_S3142C1 = {  "S3142C1", // class name
  bases_S3142C1, 2,
  &(vtc_S3142C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI7S3142C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3142C1),14, //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  S15950C2  {
  int s15950c2f0;
  void *s15950c2f1[11];
  __tsi64 s15950c2f2;
  char s15950c2f3;
  short s15950c2f4[5];
  void *s15950c2f5;
  void  mf15950c2(); // _ZN8S15950C29mf15950c2Ev
};
//SIG(-1 S15950C2) C1{ m Fi Fp[11] FL Fc Fs[5] Fp}


void  S15950C2 ::mf15950c2(){}

static void Test_S15950C2()
{
  {
    init_simple_test("S15950C2");
    S15950C2 lv;
    check2(sizeof(lv), ABISELECT(128,72), "sizeof(S15950C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15950C2)");
    check_field_offset(lv, s15950c2f0, 0, "S15950C2.s15950c2f0");
    check_field_offset(lv, s15950c2f1, ABISELECT(8,4), "S15950C2.s15950c2f1");
    check_field_offset(lv, s15950c2f2, ABISELECT(96,48), "S15950C2.s15950c2f2");
    check_field_offset(lv, s15950c2f3, ABISELECT(104,56), "S15950C2.s15950c2f3");
    check_field_offset(lv, s15950c2f4, ABISELECT(106,58), "S15950C2.s15950c2f4");
    check_field_offset(lv, s15950c2f5, ABISELECT(120,68), "S15950C2.s15950c2f5");
  }
}
static Arrange_To_Call_Me vS15950C2(Test_S15950C2, "S15950C2", ABISELECT(128,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15950C1  {
  ::S15950C2 s15950c1f0;
  void *s15950c1f1[5];
  ::S15950C2 s15950c1f2;
  short s15950c1f3;
  __tsi64 s15950c1f4;
  long double s15950c1f5;
  ::S15950C2 s15950c1f6;
  int s15950c1f7;
  void  mf15950c1(); // _ZN8S15950C19mf15950c1Ev
};
//SIG(1 S15950C1) C1{ m FC2{ m Fi Fp[11] FL Fc Fs[5] Fp} Fp[5] FC2 Fs FL FD FC2 Fi}


void  S15950C1 ::mf15950c1(){}

static void Test_S15950C1()
{
  {
    init_simple_test("S15950C1");
    S15950C1 lv;
    check2(sizeof(lv), ABISELECT(480,264), "sizeof(S15950C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15950C1)");
    check_field_offset(lv, s15950c1f0, 0, "S15950C1.s15950c1f0");
    check_field_offset(lv, s15950c1f1, ABISELECT(128,72), "S15950C1.s15950c1f1");
    check_field_offset(lv, s15950c1f2, ABISELECT(168,92), "S15950C1.s15950c1f2");
    check_field_offset(lv, s15950c1f3, ABISELECT(296,164), "S15950C1.s15950c1f3");
    check_field_offset(lv, s15950c1f4, ABISELECT(304,168), "S15950C1.s15950c1f4");
    check_field_offset(lv, s15950c1f5, ABISELECT(320,176), "S15950C1.s15950c1f5");
    check_field_offset(lv, s15950c1f6, ABISELECT(336,188), "S15950C1.s15950c1f6");
    check_field_offset(lv, s15950c1f7, ABISELECT(464,260), "S15950C1.s15950c1f7");
  }
}
static Arrange_To_Call_Me vS15950C1(Test_S15950C1, "S15950C1", ABISELECT(480,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C3  : S40C13_nt {
};
//SIG(-1 S1004C3) C1{ BC2{ m Fi}}



static void Test_S1004C3()
{
  extern Class_Descriptor cd_S1004C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1004C3, buf);
    S1004C3 &lv = *(new (buf) S1004C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1004C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1004C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S1004C3");
    test_class_info(&lv, &cd_S1004C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C3(Test_S1004C3, "S1004C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S1004C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1004C3 = {  "S1004C3", // class name
  bases_S1004C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C6_nt  {
  ::S1868C17 s1004c6f0;
  void  mf1004c6(); // _ZN10S1004C6_nt8mf1004c6Ev
};
//SIG(-1 S1004C6_nt) C1{ m FC2{ m Fp}}


void  S1004C6_nt ::mf1004c6(){}

//skip512 S1004C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C5  {
  int s1004c5f0;
  ::S1004C6_nt s1004c5f1;
};
//SIG(-1 S1004C5) C1{ Fi FC2{ m FC3{ m Fp}}}



static void Test_S1004C5()
{
  {
    init_simple_test("S1004C5");
    S1004C5 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1004C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C5)");
    check_field_offset(lv, s1004c5f0, 0, "S1004C5.s1004c5f0");
    check_field_offset(lv, s1004c5f1, ABISELECT(8,4), "S1004C5.s1004c5f1");
  }
}
static Arrange_To_Call_Me vS1004C5(Test_S1004C5, "S1004C5", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1004C2  : S1004C3 {
  void *s1004c2f0;
  ::S1004C5 s1004c2f1;
  char s1004c2f2;
  int s1004c2f3;
};
//SIG(-1 S1004C2) C1{ BC2{ BC3{ m Fi}} Fp FC4{ Fi FC5{ m FC6{ m Fp}}} Fc Fi}



static void Test_S1004C2()
{
  extern Class_Descriptor cd_S1004C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1004C2, buf);
    S1004C2 &lv = *(new (buf) S1004C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1004C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S1004C3*), 0, "S1004C2");
    check_base_class_offset(lv, (S1004C3*), 0, "S1004C2");
    check_field_offset(lv, s1004c2f0, ABISELECT(8,4), "S1004C2.s1004c2f0");
    check_field_offset(lv, s1004c2f1, ABISELECT(16,8), "S1004C2.s1004c2f1");
    check_field_offset(lv, s1004c2f2, ABISELECT(32,16), "S1004C2.s1004c2f2");
    check_field_offset(lv, s1004c2f3, ABISELECT(36,20), "S1004C2.s1004c2f3");
    test_class_info(&lv, &cd_S1004C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C2(Test_S1004C2, "S1004C2", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1004C3;
static Base_Class bases_S1004C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1004C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1004C2 = {  "S1004C2", // class name
  bases_S1004C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S1004C1  : S1004C2 , S7856C24 {
};
//SIG(1 S1004C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fp FC5{ Fi FC6{ m FC7{ m Fp}}} Fc Fi} BC8{ m}}



static void Test_S1004C1()
{
  extern Class_Descriptor cd_S1004C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1004C1, buf);
    S1004C1 &lv = *(new (buf) S1004C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1004C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1004C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S1004C3*)(S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S1004C3*)(S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S1004C2*), 0, "S1004C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S1004C1");
    test_class_info(&lv, &cd_S1004C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1004C1(Test_S1004C1, "S1004C1", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S1004C3;
extern Class_Descriptor cd_S1004C2;
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S1004C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1004C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1004C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1004C1 = {  "S1004C1", // class name
  bases_S1004C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S21675C2  {
  void *s21675c2f0;
  int s21675c2f1;
  void *s21675c2f2;
  int s21675c2f3;
  void *s21675c2f4;
  int s21675c2f5;
  void *s21675c2f6;
  int s21675c2f7;
  void *s21675c2f8;
  int s21675c2f9;
  void *s21675c2f10[5];
  void  mf21675c2(); // _ZN8S21675C29mf21675c2Ev
  virtual  ~S21675C2(); // _ZN8S21675C2D1Ev
  S21675C2(); // tgen
};
//SIG(-1 S21675C2) C1{ vd m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}


void  S21675C2 ::mf21675c2(){}
 S21675C2 ::~S21675C2(){ note_dtor("S21675C2", this);}
S21675C2 ::S21675C2(){ note_ctor("S21675C2", this);} // tgen

static void Test_S21675C2()
{
  extern Class_Descriptor cd_S21675C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[17];
    init_test(&cd_S21675C2, buf);
    S21675C2 *dp, &lv = *(dp=new (buf) S21675C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S21675C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21675C2)");
    check_field_offset(lv, s21675c2f0, ABISELECT(8,4), "S21675C2.s21675c2f0");
    check_field_offset(lv, s21675c2f1, ABISELECT(16,8), "S21675C2.s21675c2f1");
    check_field_offset(lv, s21675c2f2, ABISELECT(24,12), "S21675C2.s21675c2f2");
    check_field_offset(lv, s21675c2f3, ABISELECT(32,16), "S21675C2.s21675c2f3");
    check_field_offset(lv, s21675c2f4, ABISELECT(40,20), "S21675C2.s21675c2f4");
    check_field_offset(lv, s21675c2f5, ABISELECT(48,24), "S21675C2.s21675c2f5");
    check_field_offset(lv, s21675c2f6, ABISELECT(56,28), "S21675C2.s21675c2f6");
    check_field_offset(lv, s21675c2f7, ABISELECT(64,32), "S21675C2.s21675c2f7");
    check_field_offset(lv, s21675c2f8, ABISELECT(72,36), "S21675C2.s21675c2f8");
    check_field_offset(lv, s21675c2f9, ABISELECT(80,40), "S21675C2.s21675c2f9");
    check_field_offset(lv, s21675c2f10, ABISELECT(88,44), "S21675C2.s21675c2f10");
    test_class_info(&lv, &cd_S21675C2);
    dp->~S21675C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21675C2(Test_S21675C2, "S21675C2", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S21675C2C1Ev();
extern void _ZN8S21675C2D1Ev();
Name_Map name_map_S21675C2[] = {
  NSPAIR(_ZN8S21675C2C1Ev),
  NSPAIR(_ZN8S21675C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21675C2[];
extern void _ZN8S21675C2D1Ev();
extern void _ZN8S21675C2D0Ev();
static  VTBL_ENTRY vtc_S21675C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21675C2[0]),
  (VTBL_ENTRY)&_ZN8S21675C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21675C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21675C2[];
extern  VTBL_ENTRY _ZTV8S21675C2[];
Class_Descriptor cd_S21675C2 = {  "S21675C2", // class name
  0,0,//no base classes
  &(vtc_S21675C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S21675C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21675C2),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  S21675C1  {
  int s21675c1f0[3];
  ::S21675C2 s21675c1f1;
  void  mf21675c1(); // _ZN8S21675C19mf21675c1Ev
  virtual  ~S21675C1(); // _ZN8S21675C1D1Ev
  S21675C1(); // tgen
};
//SIG(1 S21675C1) C1{ vd m Fi[3] FC2{ vd m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}}


void  S21675C1 ::mf21675c1(){}
 S21675C1 ::~S21675C1(){ note_dtor("S21675C1", this);}
S21675C1 ::S21675C1(){ note_ctor("S21675C1", this);} // tgen

static void Test_S21675C1()
{
  extern Class_Descriptor cd_S21675C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S21675C1, buf);
    S21675C1 *dp, &lv = *(dp=new (buf) S21675C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S21675C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21675C1)");
    check_field_offset(lv, s21675c1f0, ABISELECT(8,4), "S21675C1.s21675c1f0");
    check_field_offset(lv, s21675c1f1, ABISELECT(24,16), "S21675C1.s21675c1f1");
    test_class_info(&lv, &cd_S21675C1);
    dp->~S21675C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21675C1(Test_S21675C1, "S21675C1", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN8S21675C1C1Ev();
extern void _ZN8S21675C1D1Ev();
Name_Map name_map_S21675C1[] = {
  NSPAIR(_ZN8S21675C1C1Ev),
  NSPAIR(_ZN8S21675C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21675C1[];
extern void _ZN8S21675C1D1Ev();
extern void _ZN8S21675C1D0Ev();
static  VTBL_ENTRY vtc_S21675C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21675C1[0]),
  (VTBL_ENTRY)&_ZN8S21675C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21675C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21675C1[];
extern  VTBL_ENTRY _ZTV8S21675C1[];
Class_Descriptor cd_S21675C1 = {  "S21675C1", // class name
  0,0,//no base classes
  &(vtc_S21675C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI8S21675C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21675C1),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  S16608C1  {
  int s16608c1f0;
  ::S40C26_nt s16608c1f1;
  ::S40C26_nt s16608c1f2;
  ::S40C80 s16608c1f3;
  ::S40C80 s16608c1f4;
  void  mf16608c1(); // _ZN8S16608C19mf16608c1Ev
};
//SIG(1 S16608C1) C1{ m Fi FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC2 FC6{ BC7{ BC5}} FC6}


void  S16608C1 ::mf16608c1(){}

static void Test_S16608C1()
{
  {
    init_simple_test("S16608C1");
    S16608C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S16608C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16608C1)");
    check_field_offset(lv, s16608c1f0, 0, "S16608C1.s16608c1f0");
    check_field_offset(lv, s16608c1f1, ABISELECT(8,4), "S16608C1.s16608c1f1");
    check_field_offset(lv, s16608c1f2, ABISELECT(24,16), "S16608C1.s16608c1f2");
    check_field_offset(lv, s16608c1f3, ABISELECT(40,28), "S16608C1.s16608c1f3");
    check_field_offset(lv, s16608c1f4, ABISELECT(56,40), "S16608C1.s16608c1f4");
  }
}
static Arrange_To_Call_Me vS16608C1(Test_S16608C1, "S16608C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21382C1  {
  ::S17555C3_nt s21382c1f0;
  ::S2345C15_nt s21382c1f1;
  void *s21382c1f2;
  void  mf21382c1(); // _ZN8S21382C19mf21382c1Ev
  virtual  ~S21382C1(); // _ZN8S21382C1D1Ev
  S21382C1(); // tgen
};
//SIG(1 S21382C1) C1{ vd m FC2{ m FC3{ Fl[4]}} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} Fp}


void  S21382C1 ::mf21382c1(){}
 S21382C1 ::~S21382C1(){ note_dtor("S21382C1", this);}
S21382C1 ::S21382C1(){ note_ctor("S21382C1", this);} // tgen

static void Test_S21382C1()
{
  extern Class_Descriptor cd_S21382C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21382C1, buf);
    S21382C1 *dp, &lv = *(dp=new (buf) S21382C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21382C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21382C1)");
    check_field_offset(lv, s21382c1f0, ABISELECT(8,4), "S21382C1.s21382c1f0");
    check_field_offset(lv, s21382c1f1, ABISELECT(40,20), "S21382C1.s21382c1f1");
    check_field_offset(lv, s21382c1f2, ABISELECT(56,32), "S21382C1.s21382c1f2");
    test_class_info(&lv, &cd_S21382C1);
    dp->~S21382C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21382C1(Test_S21382C1, "S21382C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21382C1C1Ev();
extern void _ZN8S21382C1D1Ev();
Name_Map name_map_S21382C1[] = {
  NSPAIR(_ZN8S21382C1C1Ev),
  NSPAIR(_ZN8S21382C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21382C1[];
extern void _ZN8S21382C1D1Ev();
extern void _ZN8S21382C1D0Ev();
static  VTBL_ENTRY vtc_S21382C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21382C1[0]),
  (VTBL_ENTRY)&_ZN8S21382C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21382C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21382C1[];
extern  VTBL_ENTRY _ZTV8S21382C1[];
Class_Descriptor cd_S21382C1 = {  "S21382C1", // class name
  0,0,//no base classes
  &(vtc_S21382C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21382C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21382C1),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  S21483C1  {
  ::S18423C15_nt s21483c1f0;
  ::S40C9_nt s21483c1f1;
  ::S1868C17 s21483c1f2;
  void *s21483c1f3;
  int s21483c1f4[2];
  void  mf21483c1(); // _ZN8S21483C19mf21483c1Ev
  virtual  ~S21483C1(); // _ZN8S21483C1D1Ev
  S21483C1(); // tgen
};
//SIG(1 S21483C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} FC4{ m Fi[2]} FC5{ m Fp} Fp Fi[2]}


void  S21483C1 ::mf21483c1(){}
 S21483C1 ::~S21483C1(){ note_dtor("S21483C1", this);}
S21483C1 ::S21483C1(){ note_ctor("S21483C1", this);} // tgen

static void Test_S21483C1()
{
  extern Class_Descriptor cd_S21483C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S21483C1, buf);
    S21483C1 *dp, &lv = *(dp=new (buf) S21483C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S21483C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21483C1)");
    check_field_offset(lv, s21483c1f0, ABISELECT(8,4), "S21483C1.s21483c1f0");
    check_field_offset(lv, s21483c1f1, ABISELECT(24,16), "S21483C1.s21483c1f1");
    check_field_offset(lv, s21483c1f2, ABISELECT(32,24), "S21483C1.s21483c1f2");
    check_field_offset(lv, s21483c1f3, ABISELECT(40,28), "S21483C1.s21483c1f3");
    check_field_offset(lv, s21483c1f4, ABISELECT(48,32), "S21483C1.s21483c1f4");
    test_class_info(&lv, &cd_S21483C1);
    dp->~S21483C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21483C1(Test_S21483C1, "S21483C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN8S21483C1C1Ev();
extern void _ZN8S21483C1D1Ev();
Name_Map name_map_S21483C1[] = {
  NSPAIR(_ZN8S21483C1C1Ev),
  NSPAIR(_ZN8S21483C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21483C1[];
extern void _ZN8S21483C1D1Ev();
extern void _ZN8S21483C1D0Ev();
static  VTBL_ENTRY vtc_S21483C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21483C1[0]),
  (VTBL_ENTRY)&_ZN8S21483C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21483C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21483C1[];
extern  VTBL_ENTRY _ZTV8S21483C1[];
Class_Descriptor cd_S21483C1 = {  "S21483C1", // class name
  0,0,//no base classes
  &(vtc_S21483C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI8S21483C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21483C1),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  S5523C4_nt  {
  int s5523c4f0[3];
};
//SIG(-1 S5523C4_nt) C1{ Fi[3]}



//skip512 S5523C4_nt

#else // __cplusplus

Class_Descriptor cd_S5523C4_nt = {  "S5523C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5523C3  : S5523C4_nt {
  void *s5523c3f0;
  int s5523c3f1;
};
//SIG(-1 S5523C3) C1{ BC2{ Fi[3]} Fp Fi}



static void Test_S5523C3()
{
  extern Class_Descriptor cd_S5523C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5523C3, buf);
    S5523C3 &lv = *(new (buf) S5523C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5523C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5523C3)");
    check_base_class_offset(lv, (S5523C4_nt*), 0, "S5523C3");
    check_field_offset(lv, s5523c3f0, ABISELECT(16,12), "S5523C3.s5523c3f0");
    check_field_offset(lv, s5523c3f1, ABISELECT(24,16), "S5523C3.s5523c3f1");
    test_class_info(&lv, &cd_S5523C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5523C3(Test_S5523C3, "S5523C3", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
static Base_Class bases_S5523C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5523C3 = {  "S5523C3", // class name
  bases_S5523C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,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  S5523C1  : S8568C3_nt {
  ::S5523C3 s5523c1f0;
  ::S2442C12_nt s5523c1f1;
  ::S40C35_nt s5523c1f2;
};
//SIG(1 S5523C1) C1{ BC2{ Fi[2]} FC3{ BC4{ Fi[3]} Fp Fi} FC5{ Fi[4]} FC6{ m Fi[4]}}



static void Test_S5523C1()
{
  extern Class_Descriptor cd_S5523C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S5523C1, buf);
    S5523C1 &lv = *(new (buf) S5523C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S5523C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5523C1)");
    check_base_class_offset(lv, (S8568C3_nt*), 0, "S5523C1");
    check_field_offset(lv, s5523c1f0, 8, "S5523C1.s5523c1f0");
    check_field_offset(lv, s5523c1f1, ABISELECT(40,28), "S5523C1.s5523c1f1");
    check_field_offset(lv, s5523c1f2, ABISELECT(56,44), "S5523C1.s5523c1f2");
    test_class_info(&lv, &cd_S5523C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5523C1(Test_S5523C1, "S5523C1", ABISELECT(72,60));

#else // __cplusplus

extern Class_Descriptor cd_S8568C3_nt;
static Base_Class bases_S5523C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5523C1 = {  "S5523C1", // class name
  bases_S5523C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(72,60), // 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  S20862C3  {
  virtual void  v4(); // _ZN8S20862C32v4Ev
  ~S20862C3(); // tgen
  S20862C3(); // tgen
};
//SIG(-1 S20862C3) C1{ v1}


void  S20862C3 ::v4(){vfunc_called(this, "_ZN8S20862C32v4Ev");}
S20862C3 ::~S20862C3(){ note_dtor("S20862C3", this);} // tgen
S20862C3 ::S20862C3(){ note_ctor("S20862C3", this);} // tgen

static void Test_S20862C3()
{
  extern Class_Descriptor cd_S20862C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20862C3, buf);
    S20862C3 *dp, &lv = *(dp=new (buf) S20862C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20862C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C3)");
    test_class_info(&lv, &cd_S20862C3);
    dp->~S20862C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C3(Test_S20862C3, "S20862C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20862C3C1Ev();
extern void _ZN8S20862C3D1Ev();
Name_Map name_map_S20862C3[] = {
  NSPAIR(_ZN8S20862C3C1Ev),
  NSPAIR(_ZN8S20862C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20862C3[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C3[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
Class_Descriptor cd_S20862C3 = {  "S20862C3", // class name
  0,0,//no base classes
  &(vtc_S20862C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20862C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20862C3),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  S20862C2_nt  : virtual S20862C3 {
  ~S20862C2_nt(); // tgen
  S20862C2_nt(); // tgen
};
//SIG(-1 S20862C2_nt) C1{ VBC2{ v1}}


S20862C2_nt ::~S20862C2_nt(){ note_dtor("S20862C2_nt", this);} // tgen
S20862C2_nt ::S20862C2_nt(){ note_ctor("S20862C2_nt", this);} // tgen

//skip512 S20862C2_nt

#else // __cplusplus

extern void _ZN11S20862C2_ntC1Ev();
extern void _ZN11S20862C2_ntD1Ev();
Name_Map name_map_S20862C2_nt[] = {
  NSPAIR(_ZN11S20862C2_ntC1Ev),
  NSPAIR(_ZN11S20862C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
static Base_Class bases_S20862C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    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 _ZTI11S20862C2_nt[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C2_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20862C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTV11S20862C2_nt[];
static  VTT_ENTRY vtt_S20862C2_nt[] = {
  {&(_ZTV11S20862C2_nt[4]),  4,5},
  {&(_ZTV11S20862C2_nt[4]),  4,5},
};
extern VTBL_ENTRY _ZTI11S20862C2_nt[];
VTBL_ENTRY *P__ZTI11S20862C2_nt = _ZTI11S20862C2_nt; 
extern  VTBL_ENTRY _ZTV11S20862C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20862C2_nt[];
Class_Descriptor cd_S20862C2_nt = {  "S20862C2_nt", // class name
  bases_S20862C2_nt, 1,
  &(vtc_S20862C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20862C2_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20862C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20862C2_nt),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20862C2_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  S20862C4  : S20862C3 {
  virtual  ~S20862C4(); // _ZN8S20862C4D1Ev
  virtual void  v5(); // _ZN8S20862C42v5Ev
  virtual void  v6(); // _ZN8S20862C42v6Ev
  virtual void  v7(); // _ZN8S20862C42v7Ev
  S20862C4(); // tgen
};
//SIG(-1 S20862C4) C1{ BC2{ v4} vd v1 v2 v3}


 S20862C4 ::~S20862C4(){ note_dtor("S20862C4", this);}
void  S20862C4 ::v5(){vfunc_called(this, "_ZN8S20862C42v5Ev");}
void  S20862C4 ::v6(){vfunc_called(this, "_ZN8S20862C42v6Ev");}
void  S20862C4 ::v7(){vfunc_called(this, "_ZN8S20862C42v7Ev");}
S20862C4 ::S20862C4(){ note_ctor("S20862C4", this);} // tgen

static void Test_S20862C4()
{
  extern Class_Descriptor cd_S20862C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20862C4, buf);
    S20862C4 *dp, &lv = *(dp=new (buf) S20862C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20862C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C4)");
    check_base_class_offset(lv, (S20862C3*), 0, "S20862C4");
    test_class_info(&lv, &cd_S20862C4);
    dp->~S20862C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C4(Test_S20862C4, "S20862C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20862C4C1Ev();
extern void _ZN8S20862C4D1Ev();
Name_Map name_map_S20862C4[] = {
  NSPAIR(_ZN8S20862C4C1Ev),
  NSPAIR(_ZN8S20862C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
static Base_Class bases_S20862C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI8S20862C4[];
extern void _ZN8S20862C32v4Ev();
extern void _ZN8S20862C4D1Ev();
extern void _ZN8S20862C4D0Ev();
extern void _ZN8S20862C42v5Ev();
extern void _ZN8S20862C42v6Ev();
extern void _ZN8S20862C42v7Ev();
static  VTBL_ENTRY vtc_S20862C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C4[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20862C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20862C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S20862C4[];
extern  VTBL_ENTRY _ZTV8S20862C4[];
Class_Descriptor cd_S20862C4 = {  "S20862C4", // class name
  bases_S20862C4, 1,
  &(vtc_S20862C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20862C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20862C4),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  S20862C1  : virtual S20862C2_nt , S20862C3 , S20862C4 {
  int s20862c1f0;
  virtual  ~S20862C1(); // _ZN8S20862C1D2Ev
  virtual void  v1(); // _ZN8S20862C12v1Ev
  virtual void  v2(); // _ZN8S20862C12v2Ev
  virtual void  v3(); // _ZN8S20862C12v3Ev
  S20862C1(); // tgen
};
//SIG(1 S20862C1) C1{ VBC2{ VBC3{ v4}} BC3 BC4{ BC3 vd v5 v6 v7} vd v1 v2 v3 Fi}


 S20862C1 ::~S20862C1(){ note_dtor("S20862C1", this);}
void  S20862C1 ::v1(){vfunc_called(this, "_ZN8S20862C12v1Ev");}
void  S20862C1 ::v2(){vfunc_called(this, "_ZN8S20862C12v2Ev");}
void  S20862C1 ::v3(){vfunc_called(this, "_ZN8S20862C12v3Ev");}
S20862C1 ::S20862C1(){ note_ctor("S20862C1", this);} // tgen

static void Test_S20862C1()
{
  extern Class_Descriptor cd_S20862C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20862C1, buf);
    S20862C1 *dp, &lv = *(dp=new (buf) S20862C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20862C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20862C1)");
    check_base_class_offset(lv, (S20862C3*)(S20862C2_nt*), ABISELECT(24,12), "S20862C1");
    check_base_class_offset(lv, (S20862C2_nt*), ABISELECT(24,12), "S20862C1");
    /*is_ambiguous_... S20862C1::S20862C3 */ AMB_check_base_class_offset(lv, (S20862C3*), 0, "S20862C1");
    check_base_class_offset(lv, (S20862C3*)(S20862C4*), ABISELECT(8,4), "S20862C1");
    check_base_class_offset(lv, (S20862C4*), ABISELECT(8,4), "S20862C1");
    check_field_offset(lv, s20862c1f0, ABISELECT(16,8), "S20862C1.s20862c1f0");
    test_class_info(&lv, &cd_S20862C1);
    dp->~S20862C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20862C1(Test_S20862C1, "S20862C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20862C1C1Ev();
extern void _ZN8S20862C1D2Ev();
Name_Map name_map_S20862C1[] = {
  NSPAIR(_ZN8S20862C1C1Ev),
  NSPAIR(_ZN8S20862C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C2_nt;
extern VTBL_ENTRY _ZTI11S20862C2_nt[];
extern  VTBL_ENTRY _ZTV11S20862C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20862C2_nt[];
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C3;
extern VTBL_ENTRY _ZTI8S20862C3[];
extern  VTBL_ENTRY _ZTV8S20862C3[];
extern Class_Descriptor cd_S20862C4;
extern VTBL_ENTRY _ZTI8S20862C4[];
extern  VTBL_ENTRY _ZTV8S20862C4[];
static Base_Class bases_S20862C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20862C3,    ABISELECT(24,12), //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_S20862C2_nt,    ABISELECT(24,12), //bcp->offset
    18, //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_S20862C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20862C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20862C4,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_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 _ZTI8S20862C1[];
extern void _ZN8S20862C32v4Ev();
extern void _ZN8S20862C1D1Ev();
extern void _ZN8S20862C1D0Ev();
extern void _ZN8S20862C12v1Ev();
extern void _ZN8S20862C12v2Ev();
extern void _ZN8S20862C12v3Ev();
extern void _ZN8S20862C32v4Ev();
extern void ABISELECT(_ZThn8_N8S20862C1D1Ev,_ZThn4_N8S20862C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20862C1D0Ev,_ZThn4_N8S20862C1D0Ev)();
extern void _ZN8S20862C42v5Ev();
extern void _ZN8S20862C42v6Ev();
extern void _ZN8S20862C42v7Ev();
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY vtc_S20862C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20862C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20862C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20862C12v3Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20862C1D1Ev,_ZThn4_N8S20862C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20862C1D0Ev,_ZThn4_N8S20862C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20862C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20862C42v7Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20862C1[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20862C1[];
extern void _ZN8S20862C32v4Ev();
static  VTBL_ENTRY _tg__ZTV11S20862C2_nt__8S20862C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20862C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S20862C32v4Ev,
};
static  VTT_ENTRY vtt_S20862C1[] = {
  {&(_ZTV8S20862C1[4]),  4,23},
  {&(_ZTV8S20862C1[22]),  22,23},
  {&(_ZTV8S20862C1[22]),  22,23},
  {&(_tg__ZTV11S20862C2_nt__8S20862C1[4]),  4,5},
  {&(_tg__ZTV11S20862C2_nt__8S20862C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20862C1[];
extern  VTBL_ENTRY _ZTV8S20862C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20862C1[];
Class_Descriptor cd_S20862C1 = {  "S20862C1", // class name
  bases_S20862C1, 5,
  &(vtc_S20862C1[0]), // expected_vtbl_contents
  &(vtt_S20862C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20862C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20862C1),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20862C1),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3077C3  {
  virtual  ~S3077C3(); // _ZN7S3077C3D1Ev
  virtual void  v2(); // _ZN7S3077C32v2Ev
  virtual void  v3(); // _ZN7S3077C32v3Ev
  S3077C3(); // tgen
};
//SIG(-1 S3077C3) C1{ vd v1 v2}


 S3077C3 ::~S3077C3(){ note_dtor("S3077C3", this);}
void  S3077C3 ::v2(){vfunc_called(this, "_ZN7S3077C32v2Ev");}
void  S3077C3 ::v3(){vfunc_called(this, "_ZN7S3077C32v3Ev");}
S3077C3 ::S3077C3(){ note_ctor("S3077C3", this);} // tgen

static void Test_S3077C3()
{
  extern Class_Descriptor cd_S3077C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3077C3, buf);
    S3077C3 *dp, &lv = *(dp=new (buf) S3077C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3077C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C3)");
    test_class_info(&lv, &cd_S3077C3);
    dp->~S3077C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C3(Test_S3077C3, "S3077C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3077C3C1Ev();
extern void _ZN7S3077C3D1Ev();
Name_Map name_map_S3077C3[] = {
  NSPAIR(_ZN7S3077C3C1Ev),
  NSPAIR(_ZN7S3077C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3077C3[];
extern void _ZN7S3077C3D1Ev();
extern void _ZN7S3077C3D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
static  VTBL_ENTRY vtc_S3077C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C3[0]),
  (VTBL_ENTRY)&_ZN7S3077C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
Class_Descriptor cd_S3077C3 = {  "S3077C3", // class name
  0,0,//no base classes
  &(vtc_S3077C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3077C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3077C3),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  S3077C2  : S3077C3 {
  void *s3077c2f0;
  ::S793C8_nt s3077c2f1;
  virtual void  v4(); // _ZN7S3077C22v4Ev
  virtual void  v5(); // _ZN7S3077C22v5Ev
  ~S3077C2(); // tgen
  S3077C2(); // tgen
};
//SIG(-1 S3077C2) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ m FC4{ m FL[2]}}}


void  S3077C2 ::v4(){vfunc_called(this, "_ZN7S3077C22v4Ev");}
void  S3077C2 ::v5(){vfunc_called(this, "_ZN7S3077C22v5Ev");}
S3077C2 ::~S3077C2(){ note_dtor("S3077C2", this);} // tgen
S3077C2 ::S3077C2(){ note_ctor("S3077C2", this);} // tgen

static void Test_S3077C2()
{
  extern Class_Descriptor cd_S3077C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3077C2, buf);
    S3077C2 *dp, &lv = *(dp=new (buf) S3077C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3077C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C2)");
    check_base_class_offset(lv, (S3077C3*), 0, "S3077C2");
    check_field_offset(lv, s3077c2f0, ABISELECT(8,4), "S3077C2.s3077c2f0");
    check_field_offset(lv, s3077c2f1, ABISELECT(16,8), "S3077C2.s3077c2f1");
    test_class_info(&lv, &cd_S3077C2);
    dp->~S3077C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C2(Test_S3077C2, "S3077C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3077C2C1Ev();
extern void _ZN7S3077C2D1Ev();
Name_Map name_map_S3077C2[] = {
  NSPAIR(_ZN7S3077C2C1Ev),
  NSPAIR(_ZN7S3077C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3077C3;
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
static Base_Class bases_S3077C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3077C2[];
extern void _ZN7S3077C2D1Ev();
extern void _ZN7S3077C2D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
extern void _ZN7S3077C22v4Ev();
extern void _ZN7S3077C22v5Ev();
static  VTBL_ENTRY vtc_S3077C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C2[0]),
  (VTBL_ENTRY)&_ZN7S3077C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S3077C2[];
extern  VTBL_ENTRY _ZTV7S3077C2[];
Class_Descriptor cd_S3077C2 = {  "S3077C2", // class name
  bases_S3077C2, 1,
  &(vtc_S3077C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3077C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3077C2),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  S3077C1  : S3077C2 {
  int s3077c1f0;
  virtual void  v1(); // _ZN7S3077C12v1Ev
  ~S3077C1(); // tgen
  S3077C1(); // tgen
};
//SIG(1 S3077C1) C1{ BC2{ BC3{ vd v2 v3} v4 v5 Fp FC4{ m FC5{ m FL[2]}}} v1 Fi}


void  S3077C1 ::v1(){vfunc_called(this, "_ZN7S3077C12v1Ev");}
S3077C1 ::~S3077C1(){ note_dtor("S3077C1", this);} // tgen
S3077C1 ::S3077C1(){ note_ctor("S3077C1", this);} // tgen

static void Test_S3077C1()
{
  extern Class_Descriptor cd_S3077C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3077C1, buf);
    S3077C1 *dp, &lv = *(dp=new (buf) S3077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3077C1)");
    check_base_class_offset(lv, (S3077C3*)(S3077C2*), 0, "S3077C1");
    check_base_class_offset(lv, (S3077C2*), 0, "S3077C1");
    check_field_offset(lv, s3077c1f0, ABISELECT(32,24), "S3077C1.s3077c1f0");
    test_class_info(&lv, &cd_S3077C1);
    dp->~S3077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3077C1(Test_S3077C1, "S3077C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S3077C1C1Ev();
extern void _ZN7S3077C1D1Ev();
Name_Map name_map_S3077C1[] = {
  NSPAIR(_ZN7S3077C1C1Ev),
  NSPAIR(_ZN7S3077C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3077C3;
extern VTBL_ENTRY _ZTI7S3077C3[];
extern  VTBL_ENTRY _ZTV7S3077C3[];
extern Class_Descriptor cd_S3077C2;
extern VTBL_ENTRY _ZTI7S3077C2[];
extern  VTBL_ENTRY _ZTV7S3077C2[];
static Base_Class bases_S3077C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3077C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3077C1[];
extern void _ZN7S3077C1D1Ev();
extern void _ZN7S3077C1D0Ev();
extern void _ZN7S3077C32v2Ev();
extern void _ZN7S3077C32v3Ev();
extern void _ZN7S3077C22v4Ev();
extern void _ZN7S3077C22v5Ev();
extern void _ZN7S3077C12v1Ev();
static  VTBL_ENTRY vtc_S3077C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3077C1[0]),
  (VTBL_ENTRY)&_ZN7S3077C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3077C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3077C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3077C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3077C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3077C1[];
extern  VTBL_ENTRY _ZTV7S3077C1[];
Class_Descriptor cd_S3077C1 = {  "S3077C1", // class name
  bases_S3077C1, 2,
  &(vtc_S3077C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S3077C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3077C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8150C1  : S3750C3_nt {
  ::S13686C6_nt s8150c1f0;
  virtual  ~S8150C1(); // _ZN7S8150C1D1Ev
  virtual void  v1(); // _ZN7S8150C12v1Ev
  virtual void  v2(); // _ZN7S8150C12v2Ev
  virtual void  v3(); // _ZN7S8150C12v3Ev
  virtual void  v4(); // _ZN7S8150C12v4Ev
  virtual void  v5(); // _ZN7S8150C12v5Ev
  virtual void  v6(); // _ZN7S8150C12v6Ev
  virtual void  v7(); // _ZN7S8150C12v7Ev
  virtual void  v8(); // _ZN7S8150C12v8Ev
  S8150C1(); // tgen
};
//SIG(1 S8150C1) C1{ BC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 FC3{ Fp[2]}}


 S8150C1 ::~S8150C1(){ note_dtor("S8150C1", this);}
void  S8150C1 ::v1(){vfunc_called(this, "_ZN7S8150C12v1Ev");}
void  S8150C1 ::v2(){vfunc_called(this, "_ZN7S8150C12v2Ev");}
void  S8150C1 ::v3(){vfunc_called(this, "_ZN7S8150C12v3Ev");}
void  S8150C1 ::v4(){vfunc_called(this, "_ZN7S8150C12v4Ev");}
void  S8150C1 ::v5(){vfunc_called(this, "_ZN7S8150C12v5Ev");}
void  S8150C1 ::v6(){vfunc_called(this, "_ZN7S8150C12v6Ev");}
void  S8150C1 ::v7(){vfunc_called(this, "_ZN7S8150C12v7Ev");}
void  S8150C1 ::v8(){vfunc_called(this, "_ZN7S8150C12v8Ev");}
S8150C1 ::S8150C1(){ note_ctor("S8150C1", this);} // tgen

static void Test_S8150C1()
{
  extern Class_Descriptor cd_S8150C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S8150C1, buf);
    S8150C1 *dp, &lv = *(dp=new (buf) S8150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S8150C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8150C1)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S8150C1");
    check_field_offset(lv, s8150c1f0, ABISELECT(16,8), "S8150C1.s8150c1f0");
    test_class_info(&lv, &cd_S8150C1);
    dp->~S8150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8150C1(Test_S8150C1, "S8150C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S8150C1C1Ev();
extern void _ZN7S8150C1D1Ev();
Name_Map name_map_S8150C1[] = {
  NSPAIR(_ZN7S8150C1C1Ev),
  NSPAIR(_ZN7S8150C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S8150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S8150C1[];
extern void _ZN7S8150C1D1Ev();
extern void _ZN7S8150C1D0Ev();
extern void _ZN7S8150C12v1Ev();
extern void _ZN7S8150C12v2Ev();
extern void _ZN7S8150C12v3Ev();
extern void _ZN7S8150C12v4Ev();
extern void _ZN7S8150C12v5Ev();
extern void _ZN7S8150C12v6Ev();
extern void _ZN7S8150C12v7Ev();
extern void _ZN7S8150C12v8Ev();
static  VTBL_ENTRY vtc_S8150C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8150C1[0]),
  (VTBL_ENTRY)&_ZN7S8150C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8150C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8150C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S8150C1[];
extern  VTBL_ENTRY _ZTV7S8150C1[];
Class_Descriptor cd_S8150C1 = {  "S8150C1", // class name
  bases_S8150C1, 1,
  &(vtc_S8150C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S8150C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8150C1),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  S980C3  : S40C13_nt {
};
//SIG(-1 S980C3) C1{ BC2{ m Fi}}



static void Test_S980C3()
{
  extern Class_Descriptor cd_S980C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S980C3, buf);
    S980C3 &lv = *(new (buf) S980C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S980C3)");
    check2(__alignof__(lv), 4, "__alignof__(S980C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S980C3");
    test_class_info(&lv, &cd_S980C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C3(Test_S980C3, "S980C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S980C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S980C3 = {  "S980C3", // class name
  bases_S980C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S980C2  : S980C3 {
  unsigned int s980c2f0:1;
  unsigned int s980c2f1:1;
  int s980c2f2:4;
};
//SIG(-1 S980C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S980C2()
{
  extern Class_Descriptor cd_S980C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S980C2, buf);
    S980C2 &lv = *(new (buf) S980C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S980C2)");
    check2(__alignof__(lv), 4, "__alignof__(S980C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S980C3*), 0, "S980C2");
    check_base_class_offset(lv, (S980C3*), 0, "S980C2");
    set_bf_and_test(lv, s980c2f0, 4, 0, 1, 1, "S980C2");
    set_bf_and_test(lv, s980c2f1, 4, 1, 1, 1, "S980C2");
    set_bf_and_test(lv, s980c2f2, 4, 2, 4, 1, "S980C2");
    set_bf_and_test(lv, s980c2f2, 4, 2, 4, hide_sll(1LL<<3), "S980C2");
    test_class_info(&lv, &cd_S980C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C2(Test_S980C2, "S980C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S980C3;
static Base_Class bases_S980C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S980C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S980C2 = {  "S980C2", // class name
  bases_S980C2, 2,
  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  S980C1  : S980C2 {
  ::S1004C6_nt s980c1f0;
};
//SIG(1 S980C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m FC6{ m Fp}}}



static void Test_S980C1()
{
  extern Class_Descriptor cd_S980C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S980C1, buf);
    S980C1 &lv = *(new (buf) S980C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S980C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S980C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S980C3*)(S980C2*), 0, "S980C1");
    check_base_class_offset(lv, (S980C3*)(S980C2*), 0, "S980C1");
    check_base_class_offset(lv, (S980C2*), 0, "S980C1");
    check_field_offset(lv, s980c1f0, 8, "S980C1.s980c1f0");
    test_class_info(&lv, &cd_S980C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS980C1(Test_S980C1, "S980C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S980C3;
extern Class_Descriptor cd_S980C2;
static Base_Class bases_S980C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S980C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S980C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S980C1 = {  "S980C1", // class name
  bases_S980C1, 3,
  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  S18524C1  {
  __tsi64 s18524c1f0;
  short s18524c1f1;
  int s18524c1f2[3];
  ::S15950C2 s18524c1f3;
  ::S15950C2 s18524c1f4;
  virtual void  v1(); // _ZN8S18524C12v1Ev
  ~S18524C1(); // tgen
  S18524C1(); // tgen
};
//SIG(1 S18524C1) C1{ v1 FL Fs Fi[3] FC2{ m Fi Fp[11] FL Fc Fs[5] Fp} FC2}


void  S18524C1 ::v1(){vfunc_called(this, "_ZN8S18524C12v1Ev");}
S18524C1 ::~S18524C1(){ note_dtor("S18524C1", this);} // tgen
S18524C1 ::S18524C1(){ note_ctor("S18524C1", this);} // tgen

static void Test_S18524C1()
{
  extern Class_Descriptor cd_S18524C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,44)];
    init_test(&cd_S18524C1, buf);
    S18524C1 *dp, &lv = *(dp=new (buf) S18524C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,172), "sizeof(S18524C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18524C1)");
    check_field_offset(lv, s18524c1f0, ABISELECT(8,4), "S18524C1.s18524c1f0");
    check_field_offset(lv, s18524c1f1, ABISELECT(16,12), "S18524C1.s18524c1f1");
    check_field_offset(lv, s18524c1f2, ABISELECT(20,16), "S18524C1.s18524c1f2");
    check_field_offset(lv, s18524c1f3, ABISELECT(32,28), "S18524C1.s18524c1f3");
    check_field_offset(lv, s18524c1f4, ABISELECT(160,100), "S18524C1.s18524c1f4");
    test_class_info(&lv, &cd_S18524C1);
    dp->~S18524C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18524C1(Test_S18524C1, "S18524C1", ABISELECT(288,172));

#else // __cplusplus

extern void _ZN8S18524C1C1Ev();
extern void _ZN8S18524C1D1Ev();
Name_Map name_map_S18524C1[] = {
  NSPAIR(_ZN8S18524C1C1Ev),
  NSPAIR(_ZN8S18524C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18524C1[];
extern void _ZN8S18524C12v1Ev();
static  VTBL_ENTRY vtc_S18524C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18524C1[0]),
  (VTBL_ENTRY)&_ZN8S18524C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18524C1[];
extern  VTBL_ENTRY _ZTV8S18524C1[];
Class_Descriptor cd_S18524C1 = {  "S18524C1", // class name
  0,0,//no base classes
  &(vtc_S18524C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,172), // object size
  NSPAIRA(_ZTI8S18524C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18524C1),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  S3078C3  {
  virtual  ~S3078C3(); // _ZN7S3078C3D1Ev
  virtual void  v2(); // _ZN7S3078C32v2Ev
  virtual void  v3(); // _ZN7S3078C32v3Ev
  S3078C3(); // tgen
};
//SIG(-1 S3078C3) C1{ vd v1 v2}


 S3078C3 ::~S3078C3(){ note_dtor("S3078C3", this);}
void  S3078C3 ::v2(){vfunc_called(this, "_ZN7S3078C32v2Ev");}
void  S3078C3 ::v3(){vfunc_called(this, "_ZN7S3078C32v3Ev");}
S3078C3 ::S3078C3(){ note_ctor("S3078C3", this);} // tgen

static void Test_S3078C3()
{
  extern Class_Descriptor cd_S3078C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3078C3, buf);
    S3078C3 *dp, &lv = *(dp=new (buf) S3078C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3078C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C3)");
    test_class_info(&lv, &cd_S3078C3);
    dp->~S3078C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C3(Test_S3078C3, "S3078C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3078C3C1Ev();
extern void _ZN7S3078C3D1Ev();
Name_Map name_map_S3078C3[] = {
  NSPAIR(_ZN7S3078C3C1Ev),
  NSPAIR(_ZN7S3078C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3078C3[];
extern void _ZN7S3078C3D1Ev();
extern void _ZN7S3078C3D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
static  VTBL_ENTRY vtc_S3078C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C3[0]),
  (VTBL_ENTRY)&_ZN7S3078C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
Class_Descriptor cd_S3078C3 = {  "S3078C3", // class name
  0,0,//no base classes
  &(vtc_S3078C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3078C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3078C3),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  S3078C2  : S3078C3 {
  void *s3078c2f0;
  ::S793C8_nt s3078c2f1;
  virtual void  v4(); // _ZN7S3078C22v4Ev
  virtual void  v5(); // _ZN7S3078C22v5Ev
  ~S3078C2(); // tgen
  S3078C2(); // tgen
};
//SIG(-1 S3078C2) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ m FC4{ m FL[2]}}}


void  S3078C2 ::v4(){vfunc_called(this, "_ZN7S3078C22v4Ev");}
void  S3078C2 ::v5(){vfunc_called(this, "_ZN7S3078C22v5Ev");}
S3078C2 ::~S3078C2(){ note_dtor("S3078C2", this);} // tgen
S3078C2 ::S3078C2(){ note_ctor("S3078C2", this);} // tgen

static void Test_S3078C2()
{
  extern Class_Descriptor cd_S3078C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3078C2, buf);
    S3078C2 *dp, &lv = *(dp=new (buf) S3078C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3078C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C2)");
    check_base_class_offset(lv, (S3078C3*), 0, "S3078C2");
    check_field_offset(lv, s3078c2f0, ABISELECT(8,4), "S3078C2.s3078c2f0");
    check_field_offset(lv, s3078c2f1, ABISELECT(16,8), "S3078C2.s3078c2f1");
    test_class_info(&lv, &cd_S3078C2);
    dp->~S3078C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C2(Test_S3078C2, "S3078C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3078C2C1Ev();
extern void _ZN7S3078C2D1Ev();
Name_Map name_map_S3078C2[] = {
  NSPAIR(_ZN7S3078C2C1Ev),
  NSPAIR(_ZN7S3078C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3078C3;
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
static Base_Class bases_S3078C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3078C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3078C2[];
extern void _ZN7S3078C2D1Ev();
extern void _ZN7S3078C2D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
extern void _ZN7S3078C22v4Ev();
extern void _ZN7S3078C22v5Ev();
static  VTBL_ENTRY vtc_S3078C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C2[0]),
  (VTBL_ENTRY)&_ZN7S3078C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S3078C2[];
extern  VTBL_ENTRY _ZTV7S3078C2[];
Class_Descriptor cd_S3078C2 = {  "S3078C2", // class name
  bases_S3078C2, 1,
  &(vtc_S3078C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3078C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3078C2),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  S3078C1  : S3078C2 {
  virtual void  v1(); // _ZN7S3078C12v1Ev
  ~S3078C1(); // tgen
  S3078C1(); // tgen
};
//SIG(1 S3078C1) C1{ BC2{ BC3{ vd v2 v3} v4 v5 Fp FC4{ m FC5{ m FL[2]}}} v1}


void  S3078C1 ::v1(){vfunc_called(this, "_ZN7S3078C12v1Ev");}
S3078C1 ::~S3078C1(){ note_dtor("S3078C1", this);} // tgen
S3078C1 ::S3078C1(){ note_ctor("S3078C1", this);} // tgen

static void Test_S3078C1()
{
  extern Class_Descriptor cd_S3078C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3078C1, buf);
    S3078C1 *dp, &lv = *(dp=new (buf) S3078C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3078C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3078C1)");
    check_base_class_offset(lv, (S3078C3*)(S3078C2*), 0, "S3078C1");
    check_base_class_offset(lv, (S3078C2*), 0, "S3078C1");
    test_class_info(&lv, &cd_S3078C1);
    dp->~S3078C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3078C1(Test_S3078C1, "S3078C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3078C1C1Ev();
extern void _ZN7S3078C1D1Ev();
Name_Map name_map_S3078C1[] = {
  NSPAIR(_ZN7S3078C1C1Ev),
  NSPAIR(_ZN7S3078C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3078C3;
extern VTBL_ENTRY _ZTI7S3078C3[];
extern  VTBL_ENTRY _ZTV7S3078C3[];
extern Class_Descriptor cd_S3078C2;
extern VTBL_ENTRY _ZTI7S3078C2[];
extern  VTBL_ENTRY _ZTV7S3078C2[];
static Base_Class bases_S3078C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3078C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3078C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3078C1[];
extern void _ZN7S3078C1D1Ev();
extern void _ZN7S3078C1D0Ev();
extern void _ZN7S3078C32v2Ev();
extern void _ZN7S3078C32v3Ev();
extern void _ZN7S3078C22v4Ev();
extern void _ZN7S3078C22v5Ev();
extern void _ZN7S3078C12v1Ev();
static  VTBL_ENTRY vtc_S3078C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3078C1[0]),
  (VTBL_ENTRY)&_ZN7S3078C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3078C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3078C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3078C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3078C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3078C1[];
extern  VTBL_ENTRY _ZTV7S3078C1[];
Class_Descriptor cd_S3078C1 = {  "S3078C1", // class name
  bases_S3078C1, 2,
  &(vtc_S3078C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3078C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3078C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4683C3  {
  char s4683c3f0;
  int s4683c3f1;
  virtual  ~S4683C3(); // _ZN7S4683C3D1Ev
  virtual void  v3(); // _ZN7S4683C32v3Ev
  S4683C3(); // tgen
};
//SIG(-1 S4683C3) C1{ vd v1 Fc Fi}


 S4683C3 ::~S4683C3(){ note_dtor("S4683C3", this);}
void  S4683C3 ::v3(){vfunc_called(this, "_ZN7S4683C32v3Ev");}
S4683C3 ::S4683C3(){ note_ctor("S4683C3", this);} // tgen

static void Test_S4683C3()
{
  extern Class_Descriptor cd_S4683C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4683C3, buf);
    S4683C3 *dp, &lv = *(dp=new (buf) S4683C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4683C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C3)");
    check_field_offset(lv, s4683c3f0, ABISELECT(8,4), "S4683C3.s4683c3f0");
    check_field_offset(lv, s4683c3f1, ABISELECT(12,8), "S4683C3.s4683c3f1");
    test_class_info(&lv, &cd_S4683C3);
    dp->~S4683C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C3(Test_S4683C3, "S4683C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S4683C3C1Ev();
extern void _ZN7S4683C3D1Ev();
Name_Map name_map_S4683C3[] = {
  NSPAIR(_ZN7S4683C3C1Ev),
  NSPAIR(_ZN7S4683C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4683C3[];
extern void _ZN7S4683C3D1Ev();
extern void _ZN7S4683C3D0Ev();
extern void _ZN7S4683C32v3Ev();
static  VTBL_ENTRY vtc_S4683C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C3[0]),
  (VTBL_ENTRY)&_ZN7S4683C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
Class_Descriptor cd_S4683C3 = {  "S4683C3", // class name
  0,0,//no base classes
  &(vtc_S4683C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S4683C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4683C3),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  S4683C2  : S4683C3 {
  __tsi64 s4683c2f0[4];
  virtual  ~S4683C2(); // _ZN7S4683C2D1Ev
  virtual void  v4(); // _ZN7S4683C22v4Ev
  virtual void  v5(); // _ZN7S4683C22v5Ev
  S4683C2(); // tgen
};
//SIG(-1 S4683C2) C1{ BC2{ vd v3 Fc Fi} vd v1 v2 FL[4]}


 S4683C2 ::~S4683C2(){ note_dtor("S4683C2", this);}
void  S4683C2 ::v4(){vfunc_called(this, "_ZN7S4683C22v4Ev");}
void  S4683C2 ::v5(){vfunc_called(this, "_ZN7S4683C22v5Ev");}
S4683C2 ::S4683C2(){ note_ctor("S4683C2", this);} // tgen

static void Test_S4683C2()
{
  extern Class_Descriptor cd_S4683C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S4683C2, buf);
    S4683C2 *dp, &lv = *(dp=new (buf) S4683C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S4683C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C2)");
    check_base_class_offset(lv, (S4683C3*), 0, "S4683C2");
    check_field_offset(lv, s4683c2f0, ABISELECT(16,12), "S4683C2.s4683c2f0");
    test_class_info(&lv, &cd_S4683C2);
    dp->~S4683C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C2(Test_S4683C2, "S4683C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S4683C2C1Ev();
extern void _ZN7S4683C2D1Ev();
Name_Map name_map_S4683C2[] = {
  NSPAIR(_ZN7S4683C2C1Ev),
  NSPAIR(_ZN7S4683C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4683C3;
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
static Base_Class bases_S4683C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4683C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S4683C2[];
extern void _ZN7S4683C2D1Ev();
extern void _ZN7S4683C2D0Ev();
extern void _ZN7S4683C32v3Ev();
extern void _ZN7S4683C22v4Ev();
extern void _ZN7S4683C22v5Ev();
static  VTBL_ENTRY vtc_S4683C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C2[0]),
  (VTBL_ENTRY)&_ZN7S4683C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S4683C2[];
extern  VTBL_ENTRY _ZTV7S4683C2[];
Class_Descriptor cd_S4683C2 = {  "S4683C2", // class name
  bases_S4683C2, 1,
  &(vtc_S4683C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S4683C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4683C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4683C1  : S4683C2 {
  int s4683c1f0;
  virtual  ~S4683C1(); // _ZN7S4683C1D1Ev
  virtual void  v1(); // _ZN7S4683C12v1Ev
  virtual void  v2(); // _ZN7S4683C12v2Ev
  S4683C1(); // tgen
};
//SIG(1 S4683C1) C1{ BC2{ BC3{ vd v3 Fc Fi} vd v4 v5 FL[4]} vd v1 v2 Fi}


 S4683C1 ::~S4683C1(){ note_dtor("S4683C1", this);}
void  S4683C1 ::v1(){vfunc_called(this, "_ZN7S4683C12v1Ev");}
void  S4683C1 ::v2(){vfunc_called(this, "_ZN7S4683C12v2Ev");}
S4683C1 ::S4683C1(){ note_ctor("S4683C1", this);} // tgen

static void Test_S4683C1()
{
  extern Class_Descriptor cd_S4683C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S4683C1, buf);
    S4683C1 *dp, &lv = *(dp=new (buf) S4683C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S4683C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4683C1)");
    check_base_class_offset(lv, (S4683C3*)(S4683C2*), 0, "S4683C1");
    check_base_class_offset(lv, (S4683C2*), 0, "S4683C1");
    check_field_offset(lv, s4683c1f0, ABISELECT(48,44), "S4683C1.s4683c1f0");
    test_class_info(&lv, &cd_S4683C1);
    dp->~S4683C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4683C1(Test_S4683C1, "S4683C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S4683C1C1Ev();
extern void _ZN7S4683C1D1Ev();
Name_Map name_map_S4683C1[] = {
  NSPAIR(_ZN7S4683C1C1Ev),
  NSPAIR(_ZN7S4683C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4683C3;
extern VTBL_ENTRY _ZTI7S4683C3[];
extern  VTBL_ENTRY _ZTV7S4683C3[];
extern Class_Descriptor cd_S4683C2;
extern VTBL_ENTRY _ZTI7S4683C2[];
extern  VTBL_ENTRY _ZTV7S4683C2[];
static Base_Class bases_S4683C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4683C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4683C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4683C1[];
extern void _ZN7S4683C1D1Ev();
extern void _ZN7S4683C1D0Ev();
extern void _ZN7S4683C32v3Ev();
extern void _ZN7S4683C22v4Ev();
extern void _ZN7S4683C22v5Ev();
extern void _ZN7S4683C12v1Ev();
extern void _ZN7S4683C12v2Ev();
static  VTBL_ENTRY vtc_S4683C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4683C1[0]),
  (VTBL_ENTRY)&_ZN7S4683C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4683C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4683C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4683C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4683C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4683C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4683C1[];
extern  VTBL_ENTRY _ZTV7S4683C1[];
Class_Descriptor cd_S4683C1 = {  "S4683C1", // class name
  bases_S4683C1, 2,
  &(vtc_S4683C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S4683C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4683C1),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  S18844C1  {
  virtual  ~S18844C1(); // _ZN8S18844C1D1Ev
  virtual void  v1(); // _ZN8S18844C12v1Ev
  virtual void  v2(); // _ZN8S18844C12v2Ev
  virtual void  v3(); // _ZN8S18844C12v3Ev
  virtual void  v4(); // _ZN8S18844C12v4Ev
  virtual void  v5(); // _ZN8S18844C12v5Ev
  virtual void  v6(); // _ZN8S18844C12v6Ev
  virtual void  v7(); // _ZN8S18844C12v7Ev
  virtual void  v8(); // _ZN8S18844C12v8Ev
  virtual void  v9(); // _ZN8S18844C12v9Ev
  virtual void  v10(); // _ZN8S18844C13v10Ev
  virtual void  v11(); // _ZN8S18844C13v11Ev
  virtual void  v12(); // _ZN8S18844C13v12Ev
  virtual void  v13(); // _ZN8S18844C13v13Ev
  S18844C1(); // tgen
};
//SIG(1 S18844C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S18844C1 ::~S18844C1(){ note_dtor("S18844C1", this);}
void  S18844C1 ::v1(){vfunc_called(this, "_ZN8S18844C12v1Ev");}
void  S18844C1 ::v2(){vfunc_called(this, "_ZN8S18844C12v2Ev");}
void  S18844C1 ::v3(){vfunc_called(this, "_ZN8S18844C12v3Ev");}
void  S18844C1 ::v4(){vfunc_called(this, "_ZN8S18844C12v4Ev");}
void  S18844C1 ::v5(){vfunc_called(this, "_ZN8S18844C12v5Ev");}
void  S18844C1 ::v6(){vfunc_called(this, "_ZN8S18844C12v6Ev");}
void  S18844C1 ::v7(){vfunc_called(this, "_ZN8S18844C12v7Ev");}
void  S18844C1 ::v8(){vfunc_called(this, "_ZN8S18844C12v8Ev");}
void  S18844C1 ::v9(){vfunc_called(this, "_ZN8S18844C12v9Ev");}
void  S18844C1 ::v10(){vfunc_called(this, "_ZN8S18844C13v10Ev");}
void  S18844C1 ::v11(){vfunc_called(this, "_ZN8S18844C13v11Ev");}
void  S18844C1 ::v12(){vfunc_called(this, "_ZN8S18844C13v12Ev");}
void  S18844C1 ::v13(){vfunc_called(this, "_ZN8S18844C13v13Ev");}
S18844C1 ::S18844C1(){ note_ctor("S18844C1", this);} // tgen

static void Test_S18844C1()
{
  extern Class_Descriptor cd_S18844C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18844C1, buf);
    S18844C1 *dp, &lv = *(dp=new (buf) S18844C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18844C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18844C1)");
    test_class_info(&lv, &cd_S18844C1);
    dp->~S18844C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18844C1(Test_S18844C1, "S18844C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18844C1C1Ev();
extern void _ZN8S18844C1D1Ev();
Name_Map name_map_S18844C1[] = {
  NSPAIR(_ZN8S18844C1C1Ev),
  NSPAIR(_ZN8S18844C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18844C1[];
extern void _ZN8S18844C1D1Ev();
extern void _ZN8S18844C1D0Ev();
extern void _ZN8S18844C12v1Ev();
extern void _ZN8S18844C12v2Ev();
extern void _ZN8S18844C12v3Ev();
extern void _ZN8S18844C12v4Ev();
extern void _ZN8S18844C12v5Ev();
extern void _ZN8S18844C12v6Ev();
extern void _ZN8S18844C12v7Ev();
extern void _ZN8S18844C12v8Ev();
extern void _ZN8S18844C12v9Ev();
extern void _ZN8S18844C13v10Ev();
extern void _ZN8S18844C13v11Ev();
extern void _ZN8S18844C13v12Ev();
extern void _ZN8S18844C13v13Ev();
static  VTBL_ENTRY vtc_S18844C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18844C1[0]),
  (VTBL_ENTRY)&_ZN8S18844C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18844C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18844C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18844C13v13Ev,
};
extern VTBL_ENTRY _ZTI8S18844C1[];
extern  VTBL_ENTRY _ZTV8S18844C1[];
Class_Descriptor cd_S18844C1 = {  "S18844C1", // class name
  0,0,//no base classes
  &(vtc_S18844C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18844C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18844C1),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11721C4_nt  {
  void *s11721c4f0[2];
};
//SIG(-1 S11721C4_nt) C1{ Fp[2]}



//skip512 S11721C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11721C1  {
  ::S13686C3 s11721c1f0;
  ::S13686C6_nt s11721c1f1;
  ::S11721C4_nt s11721c1f2;
  ::S11721C4_nt s11721c1f3;
  void *s11721c1f4;
};
//SIG(1 S11721C1) C1{ FC2{ FL[2] Fl} FC3{ Fp[2]} FC4{ Fp[2]} FC4 Fp}



static void Test_S11721C1()
{
  {
    init_simple_test("S11721C1");
    S11721C1 lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S11721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11721C1)");
    check_field_offset(lv, s11721c1f0, 0, "S11721C1.s11721c1f0");
    check_field_offset(lv, s11721c1f1, ABISELECT(24,20), "S11721C1.s11721c1f1");
    check_field_offset(lv, s11721c1f2, ABISELECT(40,28), "S11721C1.s11721c1f2");
    check_field_offset(lv, s11721c1f3, ABISELECT(56,36), "S11721C1.s11721c1f3");
    check_field_offset(lv, s11721c1f4, ABISELECT(72,44), "S11721C1.s11721c1f4");
  }
}
static Arrange_To_Call_Me vS11721C1(Test_S11721C1, "S11721C1", ABISELECT(80,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21838C1  {
  void *s21838c1f0[3];
  int s21838c1f1;
  void *s21838c1f2;
  int s21838c1f3;
  ::S17556C15_nt s21838c1f4;
  int s21838c1f5;
  void  mf21838c1(); // _ZN8S21838C19mf21838c1Ev
  virtual  ~S21838C1(); // _ZN8S21838C1D1Ev
  S21838C1(); // tgen
};
//SIG(1 S21838C1) C1{ vd m Fp[3] Fi Fp Fi FC2{ m Fp Fi[2] FC3{ m}} Fi}


void  S21838C1 ::mf21838c1(){}
 S21838C1 ::~S21838C1(){ note_dtor("S21838C1", this);}
S21838C1 ::S21838C1(){ note_ctor("S21838C1", this);} // tgen

static void Test_S21838C1()
{
  extern Class_Descriptor cd_S21838C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S21838C1, buf);
    S21838C1 *dp, &lv = *(dp=new (buf) S21838C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S21838C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21838C1)");
    check_field_offset(lv, s21838c1f0, ABISELECT(8,4), "S21838C1.s21838c1f0");
    check_field_offset(lv, s21838c1f1, ABISELECT(32,16), "S21838C1.s21838c1f1");
    check_field_offset(lv, s21838c1f2, ABISELECT(40,20), "S21838C1.s21838c1f2");
    check_field_offset(lv, s21838c1f3, ABISELECT(48,24), "S21838C1.s21838c1f3");
    check_field_offset(lv, s21838c1f4, ABISELECT(56,28), "S21838C1.s21838c1f4");
    check_field_offset(lv, s21838c1f5, ABISELECT(80,44), "S21838C1.s21838c1f5");
    test_class_info(&lv, &cd_S21838C1);
    dp->~S21838C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21838C1(Test_S21838C1, "S21838C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S21838C1C1Ev();
extern void _ZN8S21838C1D1Ev();
Name_Map name_map_S21838C1[] = {
  NSPAIR(_ZN8S21838C1C1Ev),
  NSPAIR(_ZN8S21838C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21838C1[];
extern void _ZN8S21838C1D1Ev();
extern void _ZN8S21838C1D0Ev();
static  VTBL_ENTRY vtc_S21838C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21838C1[0]),
  (VTBL_ENTRY)&_ZN8S21838C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21838C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21838C1[];
extern  VTBL_ENTRY _ZTV8S21838C1[];
Class_Descriptor cd_S21838C1 = {  "S21838C1", // class name
  0,0,//no base classes
  &(vtc_S21838C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S21838C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21838C1),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  S7472C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7472C2(); // tgen
  S7472C2(); // tgen
};
//SIG(-1 S7472C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7472C2 ::~S7472C2(){ note_dtor("S7472C2", this);} // tgen
S7472C2 ::S7472C2(){ note_ctor("S7472C2", this);} // tgen

static void Test_S7472C2()
{
  extern Class_Descriptor cd_S7472C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7472C2, buf);
    S7472C2 *dp, &lv = *(dp=new (buf) S7472C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7472C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7472C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7472C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7472C2");
    test_class_info(&lv, &cd_S7472C2);
    dp->~S7472C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C2(Test_S7472C2, "S7472C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7472C2C1Ev();
extern void _ZN7S7472C2D1Ev();
Name_Map name_map_S7472C2[] = {
  NSPAIR(_ZN7S7472C2C1Ev),
  NSPAIR(_ZN7S7472C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7472C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7472C2[];
static  VTBL_ENTRY vtc_S7472C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
extern VTBL_ENTRY _ZTV7S7472C2[];
static  VTT_ENTRY vtt_S7472C2[] = {
  {&(_ZTV7S7472C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
Class_Descriptor cd_S7472C2 = {  "S7472C2", // class name
  bases_S7472C2, 3,
  &(vtc_S7472C2[0]), // expected_vtbl_contents
  &(vtt_S7472C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7472C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7472C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C2),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  S7472C6  : S7856C24 , virtual S7472C2 , virtual S7856C15 {
  ~S7472C6(); // tgen
  S7472C6(); // tgen
};
//SIG(-1 S7472C6) C1{ BC2{ m} VBC3{ VBC2 BC4{ m} VBC5{ m}} VBC4}


S7472C6 ::~S7472C6(){ note_dtor("S7472C6", this);} // tgen
S7472C6 ::S7472C6(){ note_ctor("S7472C6", this);} // tgen

static void Test_S7472C6()
{
  extern Class_Descriptor cd_S7472C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7472C6, buf);
    S7472C6 *dp, &lv = *(dp=new (buf) S7472C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7472C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C6)");
    /*is_ambiguous_... S7472C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*), 0, "S7472C6");
    check_base_class_offset(lv, (S7856C24*)(S7472C2*), ABISELECT(8,4), "S7472C6");
    check_base_class_offset(lv, (S7856C15*)(S7472C2*), 0, "S7472C6");
    check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C6");
    check_base_class_offset(lv, (S7472C2*), 0, "S7472C6");
    /*is_ambiguous_... S7472C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*), ABISELECT(8,4), "S7472C6");
    test_class_info(&lv, &cd_S7472C6);
    dp->~S7472C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C6(Test_S7472C6, "S7472C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7472C6C1Ev();
extern void _ZN7S7472C6D1Ev();
Name_Map name_map_S7472C6[] = {
  NSPAIR(_ZN7S7472C6C1Ev),
  NSPAIR(_ZN7S7472C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
static Base_Class bases_S7472C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7472C2,    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},
  {&cd_S7856C15,    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 _ZTI7S7472C6[];
static  VTBL_ENTRY vtc_S7472C6[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C6[0]),
};
extern VTBL_ENTRY _ZTV7S7472C6[];
static  VTBL_ENTRY _tg__ZTV7S7472C2__7S7472C6[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTT_ENTRY vtt_S7472C6[] = {
  {&(_ZTV7S7472C6[6]),  6,6},
  {&(_ZTV7S7472C6[6]),  6,6},
  {&(_tg__ZTV7S7472C2__7S7472C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C6[];
extern  VTBL_ENTRY _ZTV7S7472C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C6[];
Class_Descriptor cd_S7472C6 = {  "S7472C6", // class name
  bases_S7472C6, 6,
  &(vtc_S7472C6[0]), // expected_vtbl_contents
  &(vtt_S7472C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7472C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7472C6),6, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C6),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  S7472C1  : S7472C2 , virtual S7472C6 {
  ~S7472C1(); // tgen
  S7472C1(); // tgen
};
//SIG(1 S7472C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} VBC6{ BC3 VBC2 VBC4}}


S7472C1 ::~S7472C1(){ note_dtor("S7472C1", this);} // tgen
S7472C1 ::S7472C1(){ note_ctor("S7472C1", this);} // tgen

static void Test_S7472C1()
{
  extern Class_Descriptor cd_S7472C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7472C1, buf);
    S7472C1 *dp, &lv = *(dp=new (buf) S7472C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7472C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7472C1)");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C12*)(S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7472C2*), 0, "S7472C1");
    /*is_ambiguous_... S7472C6::S7856C24 */ AMB_check_base_class_offset(lv, (S7856C24*)(S7472C6*), ABISELECT(8,4), "S7472C1");
    /*is_ambiguous_... S7472C1::S7472C2 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C2*), ABISELECT(8,4), "S7472C1");
    check_base_class_offset(lv, (S7472C2*)(S7472C6*), ABISELECT(8,4), "S7472C1");
    /*is_ambiguous_... S7472C6::S7856C15 */ AMB_check_base_class_offset(lv, (S7856C15*)(S7472C6*), ABISELECT(16,8), "S7472C1");
    check_base_class_offset(lv, (S7472C6*), ABISELECT(8,4), "S7472C1");
    test_class_info(&lv, &cd_S7472C1);
    dp->~S7472C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7472C1(Test_S7472C1, "S7472C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7472C1C1Ev();
extern void _ZN7S7472C1D1Ev();
Name_Map name_map_S7472C1[] = {
  NSPAIR(_ZN7S7472C1C1Ev),
  NSPAIR(_ZN7S7472C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7472C2;
extern VTBL_ENTRY _ZTI7S7472C2[];
extern  VTBL_ENTRY _ZTV7S7472C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7472C6;
extern VTBL_ENTRY _ZTI7S7472C6[];
extern  VTBL_ENTRY _ZTV7S7472C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C6[];
static Base_Class bases_S7472C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7472C2,    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_S7856C24,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7856C15,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7472C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7856C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7472C6,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7472C1[];
static  VTBL_ENTRY vtc_S7472C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C1[0]),
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7472C1[0]),
};
extern VTBL_ENTRY _ZTV7S7472C1[];
static  VTBL_ENTRY _tg__ZTV7S7472C2__A__7S7472C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7472C6__7S7472C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7472C2__A1__7S7472C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7472C2[0]),
};
static  VTT_ENTRY vtt_S7472C1[] = {
  {&(_ZTV7S7472C1[7]),  7,13},
  {&(_tg__ZTV7S7472C2__A__7S7472C1[4]),  4,4},
  {&(_ZTV7S7472C1[13]),  13,13},
  {&(_ZTV7S7472C1[13]),  13,13},
  {&(_tg__ZTV7S7472C6__7S7472C1[6]),  6,6},
  {&(_tg__ZTV7S7472C6__7S7472C1[6]),  6,6},
  {&(_tg__ZTV7S7472C2__A1__7S7472C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7472C1[];
extern  VTBL_ENTRY _ZTV7S7472C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7472C1[];
Class_Descriptor cd_S7472C1 = {  "S7472C1", // class name
  bases_S7472C1, 9,
  &(vtc_S7472C1[0]), // expected_vtbl_contents
  &(vtt_S7472C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7472C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7472C1),13, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7472C1),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  S13532C2  {
  char s13532c2f0[4];
  int s13532c2f1;
  char s13532c2f2[512];
};
//SIG(-1 S13532C2) C1{ Fc[4] Fi Fc[512]}



static void Test_S13532C2()
{
  {
    init_simple_test("S13532C2");
    S13532C2 lv;
    check2(sizeof(lv), 520, "sizeof(S13532C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13532C2)");
    check_field_offset(lv, s13532c2f0, 0, "S13532C2.s13532c2f0");
    check_field_offset(lv, s13532c2f1, 4, "S13532C2.s13532c2f1");
    check_field_offset(lv, s13532c2f2, 8, "S13532C2.s13532c2f2");
  }
}
static Arrange_To_Call_Me vS13532C2(Test_S13532C2, "S13532C2", 520);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13532C1  {
  int s13532c1f0[5];
  char s13532c1f1[32];
  int s13532c1f2;
  void *s13532c1f3;
  int s13532c1f4;
  ::S13532C2 s13532c1f5;
};
//SIG(1 S13532C1) C1{ Fi[5] Fc[32] Fi Fp Fi FC2{ Fc[4] Fi Fc[512]}}



static void Test_S13532C1()
{
  {
    init_simple_test("S13532C1");
    S13532C1 lv;
    check2(sizeof(lv), ABISELECT(592,584), "sizeof(S13532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13532C1)");
    check_field_offset(lv, s13532c1f0, 0, "S13532C1.s13532c1f0");
    check_field_offset(lv, s13532c1f1, 20, "S13532C1.s13532c1f1");
    check_field_offset(lv, s13532c1f2, 52, "S13532C1.s13532c1f2");
    check_field_offset(lv, s13532c1f3, 56, "S13532C1.s13532c1f3");
    check_field_offset(lv, s13532c1f4, ABISELECT(64,60), "S13532C1.s13532c1f4");
    check_field_offset(lv, s13532c1f5, ABISELECT(68,64), "S13532C1.s13532c1f5");
  }
}
static Arrange_To_Call_Me vS13532C1(Test_S13532C1, "S13532C1", ABISELECT(592,584));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7470C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7470C2(); // tgen
  S7470C2(); // tgen
};
//SIG(-1 S7470C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7470C2 ::~S7470C2(){ note_dtor("S7470C2", this);} // tgen
S7470C2 ::S7470C2(){ note_ctor("S7470C2", this);} // tgen

static void Test_S7470C2()
{
  extern Class_Descriptor cd_S7470C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7470C2, buf);
    S7470C2 *dp, &lv = *(dp=new (buf) S7470C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7470C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7470C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7470C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7470C2");
    test_class_info(&lv, &cd_S7470C2);
    dp->~S7470C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C2(Test_S7470C2, "S7470C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7470C2C1Ev();
extern void _ZN7S7470C2D1Ev();
Name_Map name_map_S7470C2[] = {
  NSPAIR(_ZN7S7470C2C1Ev),
  NSPAIR(_ZN7S7470C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7470C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7470C2[];
static  VTBL_ENTRY vtc_S7470C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C2[0]),
};
extern VTBL_ENTRY _ZTV7S7470C2[];
static  VTT_ENTRY vtt_S7470C2[] = {
  {&(_ZTV7S7470C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7470C2[];
extern  VTBL_ENTRY _ZTV7S7470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C2[];
Class_Descriptor cd_S7470C2 = {  "S7470C2", // class name
  bases_S7470C2, 3,
  &(vtc_S7470C2[0]), // expected_vtbl_contents
  &(vtt_S7470C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7470C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7470C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C2),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  S7470C6  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7470C6(); // tgen
  S7470C6(); // tgen
};
//SIG(-1 S7470C6) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7470C6 ::~S7470C6(){ note_dtor("S7470C6", this);} // tgen
S7470C6 ::S7470C6(){ note_ctor("S7470C6", this);} // tgen

static void Test_S7470C6()
{
  extern Class_Descriptor cd_S7470C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7470C6, buf);
    S7470C6 *dp, &lv = *(dp=new (buf) S7470C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7470C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C6)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7470C6");
    check_base_class_offset(lv, (S7856C15*), 0, "S7470C6");
    check_base_class_offset(lv, (S7856C12*), 0, "S7470C6");
    test_class_info(&lv, &cd_S7470C6);
    dp->~S7470C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C6(Test_S7470C6, "S7470C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7470C6C1Ev();
extern void _ZN7S7470C6D1Ev();
Name_Map name_map_S7470C6[] = {
  NSPAIR(_ZN7S7470C6C1Ev),
  NSPAIR(_ZN7S7470C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7470C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7470C6[];
static  VTBL_ENTRY vtc_S7470C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C6[0]),
};
extern VTBL_ENTRY _ZTV7S7470C6[];
static  VTT_ENTRY vtt_S7470C6[] = {
  {&(_ZTV7S7470C6[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7470C6[];
extern  VTBL_ENTRY _ZTV7S7470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C6[];
Class_Descriptor cd_S7470C6 = {  "S7470C6", // class name
  bases_S7470C6, 3,
  &(vtc_S7470C6[0]), // expected_vtbl_contents
  &(vtt_S7470C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7470C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7470C6),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C6),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  S7470C1  : S7470C2 , S7470C6 {
  ~S7470C1(); // tgen
  S7470C1(); // tgen
};
//SIG(1 S7470C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}} BC6{ VBC3 BC4 VBC5}}


S7470C1 ::~S7470C1(){ note_dtor("S7470C1", this);} // tgen
S7470C1 ::S7470C1(){ note_ctor("S7470C1", this);} // tgen

static void Test_S7470C1()
{
  extern Class_Descriptor cd_S7470C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7470C1, buf);
    S7470C1 *dp, &lv = *(dp=new (buf) S7470C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7470C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7470C1)");
    check_base_class_offset(lv, (S7856C24*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C24*)(S7470C6*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C15*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C12*)(S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C12*)(S7470C6*), 0, "S7470C1");
    check_base_class_offset(lv, (S7470C2*), 0, "S7470C1");
    check_base_class_offset(lv, (S7856C15*)(S7470C6*), ABISELECT(8,4), "S7470C1");
    check_base_class_offset(lv, (S7470C6*), ABISELECT(8,4), "S7470C1");
    test_class_info(&lv, &cd_S7470C1);
    dp->~S7470C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7470C1(Test_S7470C1, "S7470C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7470C1C1Ev();
extern void _ZN7S7470C1D1Ev();
Name_Map name_map_S7470C1[] = {
  NSPAIR(_ZN7S7470C1C1Ev),
  NSPAIR(_ZN7S7470C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7470C2;
extern VTBL_ENTRY _ZTI7S7470C2[];
extern  VTBL_ENTRY _ZTV7S7470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C2[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7470C6;
extern VTBL_ENTRY _ZTI7S7470C6[];
extern  VTBL_ENTRY _ZTV7S7470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C6[];
static Base_Class bases_S7470C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7470C2,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7856C15,    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_S7470C6,    ABISELECT(8,4), //bcp->offset
    4, //bcp->virtual_function_table_offset
    4, //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},
  {0}};
extern VTBL_ENTRY _ZTI7S7470C1[];
static  VTBL_ENTRY vtc_S7470C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7470C1[0]),
};
extern VTBL_ENTRY _ZTV7S7470C1[];
static  VTBL_ENTRY _tg__ZTV7S7470C2__7S7470C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7470C6__7S7470C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7470C6[0]),
};
static  VTT_ENTRY vtt_S7470C1[] = {
  {&(_ZTV7S7470C1[4]),  4,8},
  {&(_tg__ZTV7S7470C2__7S7470C1[4]),  4,4},
  {&(_tg__ZTV7S7470C6__7S7470C1[4]),  4,4},
  {&(_ZTV7S7470C1[8]),  8,8},
};
extern VTBL_ENTRY _ZTI7S7470C1[];
extern  VTBL_ENTRY _ZTV7S7470C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7470C1[];
Class_Descriptor cd_S7470C1 = {  "S7470C1", // class name
  bases_S7470C1, 6,
  &(vtc_S7470C1[0]), // expected_vtbl_contents
  &(vtt_S7470C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7470C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7470C1),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7470C1),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  S18145C1  {
  void *s18145c1f0[3];
  ::S18423C26 s18145c1f1;
  int s18145c1f2;
  void *s18145c1f3;
  void  mf18145c1(); // _ZN8S18145C19mf18145c1Ev
};
//SIG(1 S18145C1) C1{ m Fp[3] FC2{ Fi FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp}


void  S18145C1 ::mf18145c1(){}

static void Test_S18145C1()
{
  {
    init_simple_test("S18145C1");
    S18145C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S18145C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18145C1)");
    check_field_offset(lv, s18145c1f0, 0, "S18145C1.s18145c1f0");
    check_field_offset(lv, s18145c1f1, ABISELECT(24,12), "S18145C1.s18145c1f1");
    check_field_offset(lv, s18145c1f2, ABISELECT(56,32), "S18145C1.s18145c1f2");
    check_field_offset(lv, s18145c1f3, ABISELECT(64,36), "S18145C1.s18145c1f3");
  }
}
static Arrange_To_Call_Me vS18145C1(Test_S18145C1, "S18145C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17095C3_nt  {
  int s17095c3f0[2];
  void  mf17095c3(); // _ZN11S17095C3_nt9mf17095c3Ev
};
//SIG(-1 S17095C3_nt) C1{ m Fi[2]}


void  S17095C3_nt ::mf17095c3(){}

//skip512 S17095C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17095C1  {
  int s17095c1f0[2];
  ::S40C9_nt s17095c1f1;
  ::S40C9_nt s17095c1f2;
  ::S17095C3_nt s17095c1f3;
  int s17095c1f4[2];
  void  mf17095c1(); // _ZN8S17095C19mf17095c1Ev
};
//SIG(1 S17095C1) C1{ m Fi[2] FC2{ m Fi[2]} FC2 FC3{ m Fi[2]} Fi[2]}


void  S17095C1 ::mf17095c1(){}

static void Test_S17095C1()
{
  {
    init_simple_test("S17095C1");
    S17095C1 lv;
    check2(sizeof(lv), 40, "sizeof(S17095C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17095C1)");
    check_field_offset(lv, s17095c1f0, 0, "S17095C1.s17095c1f0");
    check_field_offset(lv, s17095c1f1, 8, "S17095C1.s17095c1f1");
    check_field_offset(lv, s17095c1f2, 16, "S17095C1.s17095c1f2");
    check_field_offset(lv, s17095c1f3, 24, "S17095C1.s17095c1f3");
    check_field_offset(lv, s17095c1f4, 32, "S17095C1.s17095c1f4");
  }
}
static Arrange_To_Call_Me vS17095C1(Test_S17095C1, "S17095C1", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13439C1  {
  int s13439c1f0[4];
  char s13439c1f1[32];
  int s13439c1f2;
  void *s13439c1f3;
  ::S13532C2 s13439c1f4;
};
//SIG(1 S13439C1) C1{ Fi[4] Fc[32] Fi Fp FC2{ Fc[4] Fi Fc[512]}}



static void Test_S13439C1()
{
  {
    init_simple_test("S13439C1");
    S13439C1 lv;
    check2(sizeof(lv), ABISELECT(584,576), "sizeof(S13439C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13439C1)");
    check_field_offset(lv, s13439c1f0, 0, "S13439C1.s13439c1f0");
    check_field_offset(lv, s13439c1f1, 16, "S13439C1.s13439c1f1");
    check_field_offset(lv, s13439c1f2, 48, "S13439C1.s13439c1f2");
    check_field_offset(lv, s13439c1f3, ABISELECT(56,52), "S13439C1.s13439c1f3");
    check_field_offset(lv, s13439c1f4, ABISELECT(64,56), "S13439C1.s13439c1f4");
  }
}
static Arrange_To_Call_Me vS13439C1(Test_S13439C1, "S13439C1", ABISELECT(584,576));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9592C2  {
  virtual  ~S9592C2(); // _ZN7S9592C2D1Ev
  virtual void  v3(); // _ZN7S9592C22v3Ev
  virtual void  v4(); // _ZN7S9592C22v4Ev
  S9592C2(); // tgen
};
//SIG(-1 S9592C2) C1{ vd v1 v2}


 S9592C2 ::~S9592C2(){ note_dtor("S9592C2", this);}
void  S9592C2 ::v3(){vfunc_called(this, "_ZN7S9592C22v3Ev");}
void  S9592C2 ::v4(){vfunc_called(this, "_ZN7S9592C22v4Ev");}
S9592C2 ::S9592C2(){ note_ctor("S9592C2", this);} // tgen

static void Test_S9592C2()
{
  extern Class_Descriptor cd_S9592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9592C2, buf);
    S9592C2 *dp, &lv = *(dp=new (buf) S9592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9592C2)");
    test_class_info(&lv, &cd_S9592C2);
    dp->~S9592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9592C2(Test_S9592C2, "S9592C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9592C2C1Ev();
extern void _ZN7S9592C2D1Ev();
Name_Map name_map_S9592C2[] = {
  NSPAIR(_ZN7S9592C2C1Ev),
  NSPAIR(_ZN7S9592C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9592C2[];
extern void _ZN7S9592C2D1Ev();
extern void _ZN7S9592C2D0Ev();
extern void _ZN7S9592C22v3Ev();
extern void _ZN7S9592C22v4Ev();
static  VTBL_ENTRY vtc_S9592C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9592C2[0]),
  (VTBL_ENTRY)&_ZN7S9592C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9592C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9592C2[];
extern  VTBL_ENTRY _ZTV7S9592C2[];
Class_Descriptor cd_S9592C2 = {  "S9592C2", // class name
  0,0,//no base classes
  &(vtc_S9592C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9592C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9592C2),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  S9592C1  : S9592C2 {
  ::S1954C11 s9592c1f0;
  void *s9592c1f1;
  virtual  ~S9592C1(); // _ZN7S9592C1D1Ev
  virtual void  v1(); // _ZN7S9592C12v1Ev
  virtual void  v2(); // _ZN7S9592C12v2Ev
  S9592C1(); // tgen
};
//SIG(1 S9592C1) C1{ BC2{ vd v3 v4} vd v1 v2 FC3{ m Fp Fi[2]} Fp}


 S9592C1 ::~S9592C1(){ note_dtor("S9592C1", this);}
void  S9592C1 ::v1(){vfunc_called(this, "_ZN7S9592C12v1Ev");}
void  S9592C1 ::v2(){vfunc_called(this, "_ZN7S9592C12v2Ev");}
S9592C1 ::S9592C1(){ note_ctor("S9592C1", this);} // tgen

static void Test_S9592C1()
{
  extern Class_Descriptor cd_S9592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9592C1, buf);
    S9592C1 *dp, &lv = *(dp=new (buf) S9592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9592C1)");
    check_base_class_offset(lv, (S9592C2*), 0, "S9592C1");
    check_field_offset(lv, s9592c1f0, ABISELECT(8,4), "S9592C1.s9592c1f0");
    check_field_offset(lv, s9592c1f1, ABISELECT(24,16), "S9592C1.s9592c1f1");
    test_class_info(&lv, &cd_S9592C1);
    dp->~S9592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9592C1(Test_S9592C1, "S9592C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S9592C1C1Ev();
extern void _ZN7S9592C1D1Ev();
Name_Map name_map_S9592C1[] = {
  NSPAIR(_ZN7S9592C1C1Ev),
  NSPAIR(_ZN7S9592C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9592C2;
extern VTBL_ENTRY _ZTI7S9592C2[];
extern  VTBL_ENTRY _ZTV7S9592C2[];
static Base_Class bases_S9592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9592C1[];
extern void _ZN7S9592C1D1Ev();
extern void _ZN7S9592C1D0Ev();
extern void _ZN7S9592C22v3Ev();
extern void _ZN7S9592C22v4Ev();
extern void _ZN7S9592C12v1Ev();
extern void _ZN7S9592C12v2Ev();
static  VTBL_ENTRY vtc_S9592C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9592C1[0]),
  (VTBL_ENTRY)&_ZN7S9592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9592C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9592C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9592C1[];
extern  VTBL_ENTRY _ZTV7S9592C1[];
Class_Descriptor cd_S9592C1 = {  "S9592C1", // class name
  bases_S9592C1, 1,
  &(vtc_S9592C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S9592C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9592C1),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  S3719C2  : S3750C3_nt {
  virtual  ~S3719C2(); // _ZN7S3719C2D1Ev
  virtual void  v3(); // _ZN7S3719C22v3Ev
  virtual void  v4(); // _ZN7S3719C22v4Ev
  S3719C2(); // tgen
};
//SIG(-1 S3719C2) C1{ BC2{ vd m Fi} vd v1 v2}


 S3719C2 ::~S3719C2(){ note_dtor("S3719C2", this);}
void  S3719C2 ::v3(){vfunc_called(this, "_ZN7S3719C22v3Ev");}
void  S3719C2 ::v4(){vfunc_called(this, "_ZN7S3719C22v4Ev");}
S3719C2 ::S3719C2(){ note_ctor("S3719C2", this);} // tgen

static void Test_S3719C2()
{
  extern Class_Descriptor cd_S3719C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3719C2, buf);
    S3719C2 *dp, &lv = *(dp=new (buf) S3719C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3719C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3719C2)");
    check_base_class_offset(lv, (S3750C3_nt*), 0, "S3719C2");
    test_class_info(&lv, &cd_S3719C2);
    dp->~S3719C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3719C2(Test_S3719C2, "S3719C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3719C2C1Ev();
extern void _ZN7S3719C2D1Ev();
Name_Map name_map_S3719C2[] = {
  NSPAIR(_ZN7S3719C2C1Ev),
  NSPAIR(_ZN7S3719C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
static Base_Class bases_S3719C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S3719C2[];
extern void _ZN7S3719C2D1Ev();
extern void _ZN7S3719C2D0Ev();
extern void _ZN7S3719C22v3Ev();
extern void _ZN7S3719C22v4Ev();
static  VTBL_ENTRY vtc_S3719C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3719C2[0]),
  (VTBL_ENTRY)&_ZN7S3719C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3719C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3719C2[];
extern  VTBL_ENTRY _ZTV7S3719C2[];
Class_Descriptor cd_S3719C2 = {  "S3719C2", // class name
  bases_S3719C2, 1,
  &(vtc_S3719C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3719C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3719C2),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  S3719C1  : S3719C2 {
  __tsi64 s3719c1f0[2];
  virtual  ~S3719C1(); // _ZN7S3719C1D1Ev
  virtual void  v1(); // _ZN7S3719C12v1Ev
  virtual void  v2(); // _ZN7S3719C12v2Ev
  S3719C1(); // tgen
};
//SIG(1 S3719C1) C1{ BC2{ BC3{ vd m Fi} vd v3 v4} vd v1 v2 FL[2]}


 S3719C1 ::~S3719C1(){ note_dtor("S3719C1", this);}
void  S3719C1 ::v1(){vfunc_called(this, "_ZN7S3719C12v1Ev");}
void  S3719C1 ::v2(){vfunc_called(this, "_ZN7S3719C12v2Ev");}
S3719C1 ::S3719C1(){ note_ctor("S3719C1", this);} // tgen

static void Test_S3719C1()
{
  extern Class_Descriptor cd_S3719C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3719C1, buf);
    S3719C1 *dp, &lv = *(dp=new (buf) S3719C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3719C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3719C1)");
    check_base_class_offset(lv, (S3750C3_nt*)(S3719C2*), 0, "S3719C1");
    check_base_class_offset(lv, (S3719C2*), 0, "S3719C1");
    check_field_offset(lv, s3719c1f0, ABISELECT(16,8), "S3719C1.s3719c1f0");
    test_class_info(&lv, &cd_S3719C1);
    dp->~S3719C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3719C1(Test_S3719C1, "S3719C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S3719C1C1Ev();
extern void _ZN7S3719C1D1Ev();
Name_Map name_map_S3719C1[] = {
  NSPAIR(_ZN7S3719C1C1Ev),
  NSPAIR(_ZN7S3719C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3750C3_nt;
extern VTBL_ENTRY _ZTI10S3750C3_nt[];
extern  VTBL_ENTRY _ZTV10S3750C3_nt[];
extern Class_Descriptor cd_S3719C2;
extern VTBL_ENTRY _ZTI7S3719C2[];
extern  VTBL_ENTRY _ZTV7S3719C2[];
static Base_Class bases_S3719C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3750C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3719C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3719C1[];
extern void _ZN7S3719C1D1Ev();
extern void _ZN7S3719C1D0Ev();
extern void _ZN7S3719C22v3Ev();
extern void _ZN7S3719C22v4Ev();
extern void _ZN7S3719C12v1Ev();
extern void _ZN7S3719C12v2Ev();
static  VTBL_ENTRY vtc_S3719C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3719C1[0]),
  (VTBL_ENTRY)&_ZN7S3719C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3719C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3719C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3719C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3719C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3719C1[];
extern  VTBL_ENTRY _ZTV7S3719C1[];
Class_Descriptor cd_S3719C1 = {  "S3719C1", // class name
  bases_S3719C1, 2,
  &(vtc_S3719C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S3719C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3719C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11622C3  {
  int s11622c3f0;
  ::S5523C4_nt s11622c3f1;
  int s11622c3f2;
  ::S5523C4_nt s11622c3f3;
  int s11622c3f4;
  ::S5523C4_nt s11622c3f5;
};
//SIG(1 S11622C3) C1{ Fi FC2{ Fi[3]} Fi FC2 Fi FC2}



static void Test_S11622C3()
{
  {
    init_simple_test("S11622C3");
    S11622C3 lv;
    check2(sizeof(lv), 48, "sizeof(S11622C3)");
    check2(__alignof__(lv), 4, "__alignof__(S11622C3)");
    check_field_offset(lv, s11622c3f0, 0, "S11622C3.s11622c3f0");
    check_field_offset(lv, s11622c3f1, 4, "S11622C3.s11622c3f1");
    check_field_offset(lv, s11622c3f2, 16, "S11622C3.s11622c3f2");
    check_field_offset(lv, s11622c3f3, 20, "S11622C3.s11622c3f3");
    check_field_offset(lv, s11622c3f4, 32, "S11622C3.s11622c3f4");
    check_field_offset(lv, s11622c3f5, 36, "S11622C3.s11622c3f5");
  }
}
static Arrange_To_Call_Me vS11622C3(Test_S11622C3, "S11622C3", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11622C1  {
  ::S5523C4_nt s11622c1f0;
  ::S11622C3 s11622c1f1[2];
};
//SIG(1 S11622C1) C1{ FC2{ Fi[3]} FC3{ Fi FC2 Fi FC2 Fi FC2}[2]}



static void Test_S11622C1()
{
  {
    init_simple_test("S11622C1");
    S11622C1 lv;
    check2(sizeof(lv), 108, "sizeof(S11622C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11622C1)");
    check_field_offset(lv, s11622c1f0, 0, "S11622C1.s11622c1f0");
    check_field_offset(lv, s11622c1f1, 12, "S11622C1.s11622c1f1");
  }
}
static Arrange_To_Call_Me vS11622C1(Test_S11622C1, "S11622C1", 108);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18260C2  {
  __tsi64 s18260c2f0;
  ::S580C22_nt s18260c2f1;
  void  mf18260c2(); // _ZN8S18260C29mf18260c2Ev
};
//SIG(-1 S18260C2) C1{ m FL FC2{ m Fi Fc Fi}}


void  S18260C2 ::mf18260c2(){}

static void Test_S18260C2()
{
  {
    init_simple_test("S18260C2");
    S18260C2 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18260C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18260C2)");
    check_field_offset(lv, s18260c2f0, 0, "S18260C2.s18260c2f0");
    check_field_offset(lv, s18260c2f1, 8, "S18260C2.s18260c2f1");
  }
}
static Arrange_To_Call_Me vS18260C2(Test_S18260C2, "S18260C2", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18260C1  {
  void *s18260c1f0[3];
  ::S18260C2 s18260c1f1;
  char s18260c1f2[2];
  void  mf18260c1(); // _ZN8S18260C19mf18260c1Ev
};
//SIG(1 S18260C1) C1{ m Fp[3] FC2{ m FL FC3{ m Fi Fc Fi}} Fc[2]}


void  S18260C1 ::mf18260c1(){}

static void Test_S18260C1()
{
  {
    init_simple_test("S18260C1");
    S18260C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S18260C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18260C1)");
    check_field_offset(lv, s18260c1f0, 0, "S18260C1.s18260c1f0");
    check_field_offset(lv, s18260c1f1, ABISELECT(24,12), "S18260C1.s18260c1f1");
    check_field_offset(lv, s18260c1f2, ABISELECT(48,32), "S18260C1.s18260c1f2");
  }
}
static Arrange_To_Call_Me vS18260C1(Test_S18260C1, "S18260C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5522C4  : S5523C4_nt {
  void *s5522c4f0;
  int s5522c4f1;
};
//SIG(-1 S5522C4) C1{ BC2{ Fi[3]} Fp Fi}



static void Test_S5522C4()
{
  extern Class_Descriptor cd_S5522C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S5522C4, buf);
    S5522C4 &lv = *(new (buf) S5522C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5522C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C4)");
    check_base_class_offset(lv, (S5523C4_nt*), 0, "S5522C4");
    check_field_offset(lv, s5522c4f0, ABISELECT(16,12), "S5522C4.s5522c4f0");
    check_field_offset(lv, s5522c4f1, ABISELECT(24,16), "S5522C4.s5522c4f1");
    test_class_info(&lv, &cd_S5522C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C4(Test_S5522C4, "S5522C4", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
static Base_Class bases_S5522C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5522C4 = {  "S5522C4", // class name
  bases_S5522C4, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,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  S5522C3  : S5522C4 {
  void *s5522c3f0;
};
//SIG(-1 S5522C3) C1{ BC2{ BC3{ Fi[3]} Fp Fi} Fp}



static void Test_S5522C3()
{
  extern Class_Descriptor cd_S5522C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S5522C3, buf);
    S5522C3 &lv = *(new (buf) S5522C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S5522C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C3)");
    check_base_class_offset(lv, (S5523C4_nt*)(S5522C4*), 0, "S5522C3");
    check_base_class_offset(lv, (S5522C4*), 0, "S5522C3");
    check_field_offset(lv, s5522c3f0, ABISELECT(32,20), "S5522C3.s5522c3f0");
    test_class_info(&lv, &cd_S5522C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C3(Test_S5522C3, "S5522C3", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S5523C4_nt;
extern Class_Descriptor cd_S5522C4;
static Base_Class bases_S5522C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5523C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5522C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5522C3 = {  "S5522C3", // class name
  bases_S5522C3, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S5522C1  : S8568C3_nt {
  ::S5522C3 s5522c1f0;
};
//SIG(1 S5522C1) C1{ BC2{ Fi[2]} FC3{ BC4{ BC5{ Fi[3]} Fp Fi} Fp}}



static void Test_S5522C1()
{
  extern Class_Descriptor cd_S5522C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S5522C1, buf);
    S5522C1 &lv = *(new (buf) S5522C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S5522C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5522C1)");
    check_base_class_offset(lv, (S8568C3_nt*), 0, "S5522C1");
    check_field_offset(lv, s5522c1f0, 8, "S5522C1.s5522c1f0");
    test_class_info(&lv, &cd_S5522C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5522C1(Test_S5522C1, "S5522C1", ABISELECT(48,32));

#else // __cplusplus

extern Class_Descriptor cd_S8568C3_nt;
static Base_Class bases_S5522C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8568C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5522C1 = {  "S5522C1", // class name
  bases_S5522C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,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  S9458C2  {
  int s9458c2f0[4];
  virtual  ~S9458C2(); // _ZN7S9458C2D1Ev
  virtual void  v3(); // _ZN7S9458C22v3Ev
  virtual void  v4(); // _ZN7S9458C22v4Ev
  virtual void  v5(); // _ZN7S9458C22v5Ev
  virtual void  v6(); // _ZN7S9458C22v6Ev
  virtual void  v7(); // _ZN7S9458C22v7Ev
  S9458C2(); // tgen
};
//SIG(-1 S9458C2) C1{ vd v1 v2 v3 v4 v5 Fi[4]}


 S9458C2 ::~S9458C2(){ note_dtor("S9458C2", this);}
void  S9458C2 ::v3(){vfunc_called(this, "_ZN7S9458C22v3Ev");}
void  S9458C2 ::v4(){vfunc_called(this, "_ZN7S9458C22v4Ev");}
void  S9458C2 ::v5(){vfunc_called(this, "_ZN7S9458C22v5Ev");}
void  S9458C2 ::v6(){vfunc_called(this, "_ZN7S9458C22v6Ev");}
void  S9458C2 ::v7(){vfunc_called(this, "_ZN7S9458C22v7Ev");}
S9458C2 ::S9458C2(){ note_ctor("S9458C2", this);} // tgen

static void Test_S9458C2()
{
  extern Class_Descriptor cd_S9458C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S9458C2, buf);
    S9458C2 *dp, &lv = *(dp=new (buf) S9458C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9458C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9458C2)");
    check_field_offset(lv, s9458c2f0, ABISELECT(8,4), "S9458C2.s9458c2f0");
    test_class_info(&lv, &cd_S9458C2);
    dp->~S9458C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9458C2(Test_S9458C2, "S9458C2", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S9458C2C1Ev();
extern void _ZN7S9458C2D1Ev();
Name_Map name_map_S9458C2[] = {
  NSPAIR(_ZN7S9458C2C1Ev),
  NSPAIR(_ZN7S9458C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9458C2[];
extern void _ZN7S9458C2D1Ev();
extern void _ZN7S9458C2D0Ev();
extern void _ZN7S9458C22v3Ev();
extern void _ZN7S9458C22v4Ev();
extern void _ZN7S9458C22v5Ev();
extern void _ZN7S9458C22v6Ev();
extern void _ZN7S9458C22v7Ev();
static  VTBL_ENTRY vtc_S9458C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9458C2[0]),
  (VTBL_ENTRY)&_ZN7S9458C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9458C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9458C2[];
extern  VTBL_ENTRY _ZTV7S9458C2[];
Class_Descriptor cd_S9458C2 = {  "S9458C2", // class name
  0,0,//no base classes
  &(vtc_S9458C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9458C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9458C2),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  S9458C1  : S9458C2 {
  virtual  ~S9458C1(); // _ZN7S9458C1D1Ev
  virtual void  v1(); // _ZN7S9458C12v1Ev
  virtual void  v2(); // _ZN7S9458C12v2Ev
  S9458C1(); // tgen
};
//SIG(1 S9458C1) C1{ BC2{ vd v3 v4 v5 v6 v7 Fi[4]} vd v1 v2}


 S9458C1 ::~S9458C1(){ note_dtor("S9458C1", this);}
void  S9458C1 ::v1(){vfunc_called(this, "_ZN7S9458C12v1Ev");}
void  S9458C1 ::v2(){vfunc_called(this, "_ZN7S9458C12v2Ev");}
S9458C1 ::S9458C1(){ note_ctor("S9458C1", this);} // tgen

static void Test_S9458C1()
{
  extern Class_Descriptor cd_S9458C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S9458C1, buf);
    S9458C1 *dp, &lv = *(dp=new (buf) S9458C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9458C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9458C1)");
    check_base_class_offset(lv, (S9458C2*), 0, "S9458C1");
    test_class_info(&lv, &cd_S9458C1);
    dp->~S9458C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9458C1(Test_S9458C1, "S9458C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S9458C1C1Ev();
extern void _ZN7S9458C1D1Ev();
Name_Map name_map_S9458C1[] = {
  NSPAIR(_ZN7S9458C1C1Ev),
  NSPAIR(_ZN7S9458C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9458C2;
extern VTBL_ENTRY _ZTI7S9458C2[];
extern  VTBL_ENTRY _ZTV7S9458C2[];
static Base_Class bases_S9458C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9458C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S9458C1[];
extern void _ZN7S9458C1D1Ev();
extern void _ZN7S9458C1D0Ev();
extern void _ZN7S9458C22v3Ev();
extern void _ZN7S9458C22v4Ev();
extern void _ZN7S9458C22v5Ev();
extern void _ZN7S9458C22v6Ev();
extern void _ZN7S9458C22v7Ev();
extern void _ZN7S9458C12v1Ev();
extern void _ZN7S9458C12v2Ev();
static  VTBL_ENTRY vtc_S9458C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9458C1[0]),
  (VTBL_ENTRY)&_ZN7S9458C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9458C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9458C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9458C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9458C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9458C1[];
extern  VTBL_ENTRY _ZTV7S9458C1[];
Class_Descriptor cd_S9458C1 = {  "S9458C1", // class name
  bases_S9458C1, 1,
  &(vtc_S9458C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9458C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9458C1),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  S15543C1  {
  ::S18423C26 s15543c1f0;
  void *s15543c1f1[2];
  void  mf15543c1(); // _ZN8S15543C19mf15543c1Ev
};
//SIG(1 S15543C1) C1{ m FC2{ Fi FC3{ m Fp Fi FC4{ m}} Fi} Fp[2]}


void  S15543C1 ::mf15543c1(){}

static void Test_S15543C1()
{
  {
    init_simple_test("S15543C1");
    S15543C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S15543C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15543C1)");
    check_field_offset(lv, s15543c1f0, 0, "S15543C1.s15543c1f0");
    check_field_offset(lv, s15543c1f1, ABISELECT(32,20), "S15543C1.s15543c1f1");
  }
}
static Arrange_To_Call_Me vS15543C1(Test_S15543C1, "S15543C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12078C1  {
  ::S8611C4_nt s12078c1f0;
  ::S8611C4_nt s12078c1f1;
  int s12078c1f2;
  ::S8611C4_nt s12078c1f3;
  ::S40C35_nt s12078c1f4;
};
//SIG(1 S12078C1) C1{ FC2{ m Fi[3]} FC2 Fi FC2 FC3{ m Fi[4]}}



static void Test_S12078C1()
{
  {
    init_simple_test("S12078C1");
    S12078C1 lv;
    check2(sizeof(lv), 56, "sizeof(S12078C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12078C1)");
    check_field_offset(lv, s12078c1f0, 0, "S12078C1.s12078c1f0");
    check_field_offset(lv, s12078c1f1, 12, "S12078C1.s12078c1f1");
    check_field_offset(lv, s12078c1f2, 24, "S12078C1.s12078c1f2");
    check_field_offset(lv, s12078c1f3, 28, "S12078C1.s12078c1f3");
    check_field_offset(lv, s12078c1f4, 40, "S12078C1.s12078c1f4");
  }
}
static Arrange_To_Call_Me vS12078C1(Test_S12078C1, "S12078C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11002C2  {
  void *s11002c2f0;
  short s11002c2f1;
};
//SIG(1 S11002C2) C1{ Fp Fs}



static void Test_S11002C2()
{
  {
    init_simple_test("S11002C2");
    S11002C2 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S11002C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11002C2)");
    check_field_offset(lv, s11002c2f0, 0, "S11002C2.s11002c2f0");
    check_field_offset(lv, s11002c2f1, ABISELECT(8,4), "S11002C2.s11002c2f1");
  }
}
static Arrange_To_Call_Me vS11002C2(Test_S11002C2, "S11002C2", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11002C1  {
  char s11002c1f0[7];
  short s11002c1f1[6];
  ::S11002C2 s11002c1f2[5];
  void *s11002c1f3[3];
  int s11002c1f4;
};
//SIG(1 S11002C1) C1{ Fc[7] Fs[6] FC2{ Fp Fs}[5] Fp[3] Fi}



static void Test_S11002C1()
{
  {
    init_simple_test("S11002C1");
    S11002C1 lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S11002C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11002C1)");
    check_field_offset(lv, s11002c1f0, 0, "S11002C1.s11002c1f0");
    check_field_offset(lv, s11002c1f1, 8, "S11002C1.s11002c1f1");
    check_field_offset(lv, s11002c1f2, ABISELECT(24,20), "S11002C1.s11002c1f2");
    check_field_offset(lv, s11002c1f3, ABISELECT(104,60), "S11002C1.s11002c1f3");
    check_field_offset(lv, s11002c1f4, ABISELECT(128,72), "S11002C1.s11002c1f4");
  }
}
static Arrange_To_Call_Me vS11002C1(Test_S11002C1, "S11002C1", ABISELECT(136,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11357C1  {
  ::S11622C3 s11357c1f0[2];
};
//SIG(1 S11357C1) C1{ FC2{ Fi FC3{ Fi[3]} Fi FC3 Fi FC3}[2]}



static void Test_S11357C1()
{
  {
    init_simple_test("S11357C1");
    S11357C1 lv;
    check2(sizeof(lv), 96, "sizeof(S11357C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11357C1)");
    check_field_offset(lv, s11357c1f0, 0, "S11357C1.s11357c1f0");
  }
}
static Arrange_To_Call_Me vS11357C1(Test_S11357C1, "S11357C1", 96);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12358C1  {
  int s12358c1f0;
  ::S13532C2 s12358c1f1;
  int s12358c1f2;
  char s12358c1f3[32];
};
//SIG(1 S12358C1) C1{ Fi FC2{ Fc[4] Fi Fc[512]} Fi Fc[32]}



static void Test_S12358C1()
{
  {
    init_simple_test("S12358C1");
    S12358C1 lv;
    check2(sizeof(lv), 560, "sizeof(S12358C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12358C1)");
    check_field_offset(lv, s12358c1f0, 0, "S12358C1.s12358c1f0");
    check_field_offset(lv, s12358c1f1, 4, "S12358C1.s12358c1f1");
    check_field_offset(lv, s12358c1f2, 524, "S12358C1.s12358c1f2");
    check_field_offset(lv, s12358c1f3, 528, "S12358C1.s12358c1f3");
  }
}
static Arrange_To_Call_Me vS12358C1(Test_S12358C1, "S12358C1", 560);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S985C3  : S40C13_nt {
};
//SIG(-1 S985C3) C1{ BC2{ m Fi}}



static void Test_S985C3()
{
  extern Class_Descriptor cd_S985C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S985C3, buf);
    S985C3 &lv = *(new (buf) S985C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S985C3)");
    check2(__alignof__(lv), 4, "__alignof__(S985C3)");
    check_base_class_offset(lv, (S40C13_nt*), 0, "S985C3");
    test_class_info(&lv, &cd_S985C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C3(Test_S985C3, "S985C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
static Base_Class bases_S985C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S985C3 = {  "S985C3", // class name
  bases_S985C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S985C2  : S985C3 {
  unsigned int s985c2f0:1;
  unsigned int s985c2f1:1;
  int s985c2f2:4;
};
//SIG(-1 S985C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



static void Test_S985C2()
{
  extern Class_Descriptor cd_S985C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S985C2, buf);
    S985C2 &lv = *(new (buf) S985C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S985C2)");
    check2(__alignof__(lv), 4, "__alignof__(S985C2)");
    check_base_class_offset(lv, (S40C13_nt*)(S985C3*), 0, "S985C2");
    check_base_class_offset(lv, (S985C3*), 0, "S985C2");
    set_bf_and_test(lv, s985c2f0, 4, 0, 1, 1, "S985C2");
    set_bf_and_test(lv, s985c2f1, 4, 1, 1, 1, "S985C2");
    set_bf_and_test(lv, s985c2f2, 4, 2, 4, 1, "S985C2");
    set_bf_and_test(lv, s985c2f2, 4, 2, 4, hide_sll(1LL<<3), "S985C2");
    test_class_info(&lv, &cd_S985C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C2(Test_S985C2, "S985C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S985C3;
static Base_Class bases_S985C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S985C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S985C2 = {  "S985C2", // class name
  bases_S985C2, 2,
  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  S985C1  : S985C2 {
};
//SIG(1 S985C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4}}



static void Test_S985C1()
{
  extern Class_Descriptor cd_S985C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S985C1, buf);
    S985C1 &lv = *(new (buf) S985C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S985C1)");
    check2(__alignof__(lv), 4, "__alignof__(S985C1)");
    check_base_class_offset(lv, (S40C13_nt*)(S985C3*)(S985C2*), 0, "S985C1");
    check_base_class_offset(lv, (S985C3*)(S985C2*), 0, "S985C1");
    check_base_class_offset(lv, (S985C2*), 0, "S985C1");
    test_class_info(&lv, &cd_S985C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS985C1(Test_S985C1, "S985C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S40C13_nt;
extern VTBL_ENTRY _ZTI9S40C13_nt[];
extern Class_Descriptor cd_S985C3;
extern Class_Descriptor cd_S985C2;
static Base_Class bases_S985C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S40C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S985C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S985C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S985C1 = {  "S985C1", // class name
  bases_S985C1, 3,
  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  S18286C1  {
  void *s18286c1f0[3];
  ::S18423C15_nt s18286c1f1;
  char s18286c1f2[2];
  void  mf18286c1(); // _ZN8S18286C19mf18286c1Ev
};
//SIG(1 S18286C1) C1{ m Fp[3] FC2{ m Fp Fi FC3{ m}} Fc[2]}


void  S18286C1 ::mf18286c1(){}

static void Test_S18286C1()
{
  {
    init_simple_test("S18286C1");
    S18286C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18286C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18286C1)");
    check_field_offset(lv, s18286c1f0, 0, "S18286C1.s18286c1f0");
    check_field_offset(lv, s18286c1f1, ABISELECT(24,12), "S18286C1.s18286c1f1");
    check_field_offset(lv, s18286c1f2, ABISELECT(40,24), "S18286C1.s18286c1f2");
  }
}
static Arrange_To_Call_Me vS18286C1(Test_S18286C1, "S18286C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12584C1  {
  int s12584c1f0;
  ::S18423C15_nt s12584c1f1;
  ::S18423C15_nt s12584c1f2;
  int s12584c1f3;
  __tsi64 s12584c1f4;
};
//SIG(1 S12584C1) C1{ Fi FC2{ m Fp Fi FC3{ m}} FC2 Fi FL}



static void Test_S12584C1()
{
  {
    init_simple_test("S12584C1");
    S12584C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S12584C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12584C1)");
    check_field_offset(lv, s12584c1f0, 0, "S12584C1.s12584c1f0");
    check_field_offset(lv, s12584c1f1, ABISELECT(8,4), "S12584C1.s12584c1f1");
    check_field_offset(lv, s12584c1f2, ABISELECT(24,16), "S12584C1.s12584c1f2");
    check_field_offset(lv, s12584c1f3, ABISELECT(40,28), "S12584C1.s12584c1f3");
    check_field_offset(lv, s12584c1f4, ABISELECT(48,32), "S12584C1.s12584c1f4");
  }
}
static Arrange_To_Call_Me vS12584C1(Test_S12584C1, "S12584C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12976C1  {
  int s12976c1f0[19];
  char s12976c1f1[32];
  int s12976c1f2;
  ::S5523C4_nt s12976c1f3[8];
};
//SIG(1 S12976C1) C1{ Fi[19] Fc[32] Fi FC2{ Fi[3]}[8]}



static void Test_S12976C1()
{
  {
    init_simple_test("S12976C1");
    S12976C1 lv;
    check2(sizeof(lv), 208, "sizeof(S12976C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12976C1)");
    check_field_offset(lv, s12976c1f0, 0, "S12976C1.s12976c1f0");
    check_field_offset(lv, s12976c1f1, 76, "S12976C1.s12976c1f1");
    check_field_offset(lv, s12976c1f2, 108, "S12976C1.s12976c1f2");
    check_field_offset(lv, s12976c1f3, 112, "S12976C1.s12976c1f3");
  }
}
static Arrange_To_Call_Me vS12976C1(Test_S12976C1, "S12976C1", 208);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21688C1  {
  int s21688c1f0[5];
  ::S18423C15_nt s21688c1f1;
  void  mf21688c1(); // _ZN8S21688C19mf21688c1Ev
  virtual  ~S21688C1(); // _ZN8S21688C1D1Ev
  S21688C1(); // tgen
};
//SIG(1 S21688C1) C1{ vd m Fi[5] FC2{ m Fp Fi FC3{ m}}}


void  S21688C1 ::mf21688c1(){}
 S21688C1 ::~S21688C1(){ note_dtor("S21688C1", this);}
S21688C1 ::S21688C1(){ note_ctor("S21688C1", this);} // tgen

static void Test_S21688C1()
{
  extern Class_Descriptor cd_S21688C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S21688C1, buf);
    S21688C1 *dp, &lv = *(dp=new (buf) S21688C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S21688C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21688C1)");
    check_field_offset(lv, s21688c1f0, ABISELECT(8,4), "S21688C1.s21688c1f0");
    check_field_offset(lv, s21688c1f1, ABISELECT(32,24), "S21688C1.s21688c1f1");
    test_class_info(&lv, &cd_S21688C1);
    dp->~S21688C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21688C1(Test_S21688C1, "S21688C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S21688C1C1Ev();
extern void _ZN8S21688C1D1Ev();
Name_Map name_map_S21688C1[] = {
  NSPAIR(_ZN8S21688C1C1Ev),
  NSPAIR(_ZN8S21688C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21688C1[];
extern void _ZN8S21688C1D1Ev();
extern void _ZN8S21688C1D0Ev();
static  VTBL_ENTRY vtc_S21688C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21688C1[0]),
  (VTBL_ENTRY)&_ZN8S21688C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21688C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21688C1[];
extern  VTBL_ENTRY _ZTV8S21688C1[];
Class_Descriptor cd_S21688C1 = {  "S21688C1", // class name
  0,0,//no base classes
  &(vtc_S21688C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S21688C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21688C1),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  S12132C1  {
  ::S18423C15_nt s12132c1f0;
  ::S18423C15_nt s12132c1f1;
  ::S18423C15_nt s12132c1f2;
  int s12132c1f3;
};
//SIG(1 S12132C1) C1{ FC2{ m Fp Fi FC3{ m}} FC2 FC2 Fi}



static void Test_S12132C1()
{
  {
    init_simple_test("S12132C1");
    S12132C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S12132C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12132C1)");
    check_field_offset(lv, s12132c1f0, 0, "S12132C1.s12132c1f0");
    check_field_offset(lv, s12132c1f1, ABISELECT(16,12), "S12132C1.s12132c1f1");
    check_field_offset(lv, s12132c1f2, ABISELECT(32,24), "S12132C1.s12132c1f2");
    check_field_offset(lv, s12132c1f3, ABISELECT(48,36), "S12132C1.s12132c1f3");
  }
}
static Arrange_To_Call_Me vS12132C1(Test_S12132C1, "S12132C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C3  {
  char s14483c3f0[278];
  void  mf14483c3(); // _ZN8S14483C39mf14483c3Ev
};
//SIG(-1 S14483C3) C1{ m Fc[278]}


void  S14483C3 ::mf14483c3(){}

static void Test_S14483C3()
{
  {
    init_simple_test("S14483C3");
    S14483C3 lv;
    check2(sizeof(lv), 278, "sizeof(S14483C3)");
    check2(__alignof__(lv), 1, "__alignof__(S14483C3)");
    check_field_offset(lv, s14483c3f0, 0, "S14483C3.s14483c3f0");
  }
}
static Arrange_To_Call_Me vS14483C3(Test_S14483C3, "S14483C3", 278);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C2  {
  ::S14483C3 s14483c2f0;
  int s14483c2f1;
  void  mf14483c2(); // _ZN8S14483C29mf14483c2Ev
};
//SIG(-1 S14483C2) C1{ m FC2{ m Fc[278]} Fi}


void  S14483C2 ::mf14483c2(){}

static void Test_S14483C2()
{
  {
    init_simple_test("S14483C2");
    S14483C2 lv;
    check2(sizeof(lv), 284, "sizeof(S14483C2)");
    check2(__alignof__(lv), 4, "__alignof__(S14483C2)");
    check_field_offset(lv, s14483c2f0, 0, "S14483C2.s14483c2f0");
    check_field_offset(lv, s14483c2f1, 280, "S14483C2.s14483c2f1");
  }
}
static Arrange_To_Call_Me vS14483C2(Test_S14483C2, "S14483C2", 284);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14483C1  {
  void *s14483c1f0[2];
  ::S14483C2 s14483c1f1;
};
//SIG(1 S14483C1) C1{ Fp[2] FC2{ m FC3{ m Fc[278]} Fi}}



static void Test_S14483C1()
{
  {
    init_simple_test("S14483C1");
    S14483C1 lv;
    check2(sizeof(lv), ABISELECT(304,292), "sizeof(S14483C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14483C1)");
    check_field_offset(lv, s14483c1f0, 0, "S14483C1.s14483c1f0");
    check_field_offset(lv, s14483c1f1, ABISELECT(16,8), "S14483C1.s14483c1f1");
  }
}
static Arrange_To_Call_Me vS14483C1(Test_S14483C1, "S14483C1", ABISELECT(304,292));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13708C3  {
  __tsi64 s13708c3f0;
  void *s13708c3f1[2];
};
//SIG(-1 S13708C3) C1{ FL Fp[2]}



static void Test_S13708C3()
{
  {
    init_simple_test("S13708C3");
    S13708C3 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S13708C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13708C3)");
    check_field_offset(lv, s13708c3f0, 0, "S13708C3.s13708c3f0");
    check_field_offset(lv, s13708c3f1, 8, "S13708C3.s13708c3f1");
  }
}
static Arrange_To_Call_Me vS13708C3(Test_S13708C3, "S13708C3", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13708C1  {
  __tsi64 s13708c1f0;
  ::S13686C7 s13708c1f1;
  ::S13708C3 s13708c1f2;
};
//SIG(1 S13708C1) C1{ FL FC2{ FL Fp[2]} FC3{ FL Fp[2]}}



static void Test_S13708C1()
{
  {
    init_simple_test("S13708C1");
    S13708C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S13708C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13708C1)");
    check_field_offset(lv, s13708c1f0, 0, "S13708C1.s13708c1f0");
    check_field_offset(lv, s13708c1f1, 8, "S13708C1.s13708c1f1");
    check_field_offset(lv, s13708c1f2, ABISELECT(32,24), "S13708C1.s13708c1f2");
  }
}
static Arrange_To_Call_Me vS13708C1(Test_S13708C1, "S13708C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6306C1  : S7856C24 {
  ::S18423C15_nt s6306c1f0;
  virtual  ~S6306C1(); // _ZN7S6306C1D1Ev
  S6306C1(); // tgen
};
//SIG(1 S6306C1) C1{ BC2{ m} vd FC3{ m Fp Fi FC2}}


 S6306C1 ::~S6306C1(){ note_dtor("S6306C1", this);}
S6306C1 ::S6306C1(){ note_ctor("S6306C1", this);} // tgen

static void Test_S6306C1()
{
  extern Class_Descriptor cd_S6306C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6306C1, buf);
    S6306C1 *dp, &lv = *(dp=new (buf) S6306C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6306C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6306C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6306C1");
    check_field_offset(lv, s6306c1f0, ABISELECT(8,4), "S6306C1.s6306c1f0");
    test_class_info(&lv, &cd_S6306C1);
    dp->~S6306C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6306C1(Test_S6306C1, "S6306C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6306C1C1Ev();
extern void _ZN7S6306C1D1Ev();
Name_Map name_map_S6306C1[] = {
  NSPAIR(_ZN7S6306C1C1Ev),
  NSPAIR(_ZN7S6306C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6306C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6306C1[];
extern void _ZN7S6306C1D1Ev();
extern void _ZN7S6306C1D0Ev();
static  VTBL_ENTRY vtc_S6306C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6306C1[0]),
  (VTBL_ENTRY)&_ZN7S6306C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6306C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6306C1[];
extern  VTBL_ENTRY _ZTV7S6306C1[];
Class_Descriptor cd_S6306C1 = {  "S6306C1", // class name
  bases_S6306C1, 1,
  &(vtc_S6306C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6306C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6306C1),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  S18024C1  {
  void *s18024c1f0[2];
  ::S18423C15_nt s18024c1f1;
  void  mf18024c1(); // _ZN8S18024C19mf18024c1Ev
};
//SIG(1 S18024C1) C1{ m Fp[2] FC2{ m Fp Fi FC3{ m}}}


void  S18024C1 ::mf18024c1(){}

static void Test_S18024C1()
{
  {
    init_simple_test("S18024C1");
    S18024C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18024C1)");
    check_field_offset(lv, s18024c1f0, 0, "S18024C1.s18024c1f0");
    check_field_offset(lv, s18024c1f1, ABISELECT(16,8), "S18024C1.s18024c1f1");
  }
}
static Arrange_To_Call_Me vS18024C1(Test_S18024C1, "S18024C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18702C1  {
  ::S7445C11 s18702c1f0[2];
  virtual void  v1(); // _ZN8S18702C12v1Ev
  virtual void  v2(); // _ZN8S18702C12v2Ev
  virtual void  v3(); // _ZN8S18702C12v3Ev
  virtual void  v4(); // _ZN8S18702C12v4Ev
  ~S18702C1(); // tgen
  S18702C1(); // tgen
};
//SIG(1 S18702C1) C1{ v1 v2 v3 v4 FU2{ m FL Fp}[2]}


void  S18702C1 ::v1(){vfunc_called(this, "_ZN8S18702C12v1Ev");}
void  S18702C1 ::v2(){vfunc_called(this, "_ZN8S18702C12v2Ev");}
void  S18702C1 ::v3(){vfunc_called(this, "_ZN8S18702C12v3Ev");}
void  S18702C1 ::v4(){vfunc_called(this, "_ZN8S18702C12v4Ev");}
S18702C1 ::~S18702C1(){ note_dtor("S18702C1", this);} // tgen
S18702C1 ::S18702C1(){ note_ctor("S18702C1", this);} // tgen

static void Test_S18702C1()
{
  extern Class_Descriptor cd_S18702C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S18702C1, buf);
    S18702C1 *dp, &lv = *(dp=new (buf) S18702C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18702C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18702C1)");
    check_field_offset(lv, s18702c1f0, ABISELECT(8,4), "S18702C1.s18702c1f0");
    test_class_info(&lv, &cd_S18702C1);
    dp->~S18702C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18702C1(Test_S18702C1, "S18702C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S18702C1C1Ev();
extern void _ZN8S18702C1D1Ev();
Name_Map name_map_S18702C1[] = {
  NSPAIR(_ZN8S18702C1C1Ev),
  NSPAIR(_ZN8S18702C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18702C1[];
extern void _ZN8S18702C12v1Ev();
extern void _ZN8S18702C12v2Ev();
extern void _ZN8S18702C12v3Ev();
extern void _ZN8S18702C12v4Ev();
static  VTBL_ENTRY vtc_S18702C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18702C1[0]),
  (VTBL_ENTRY)&_ZN8S18702C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18702C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18702C1[];
extern  VTBL_ENTRY _ZTV8S18702C1[];
Class_Descriptor cd_S18702C1 = {  "S18702C1", // class name
  0,0,//no base classes
  &(vtc_S18702C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S18702C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18702C1),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  S16912C1  {
  int s16912c1f0;
  void *s16912c1f1;
  ::S1868C17 s16912c1f2;
  ::S40C13_nt s16912c1f3;
  void  mf16912c1(); // _ZN8S16912C19mf16912c1Ev
};
//SIG(1 S16912C1) C1{ m Fi Fp FC2{ m Fp} FC3{ m Fi}}


void  S16912C1 ::mf16912c1(){}

static void Test_S16912C1()
{
  {
    init_simple_test("S16912C1");
    S16912C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S16912C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16912C1)");
    check_field_offset(lv, s16912c1f0, 0, "S16912C1.s16912c1f0");
    check_field_offset(lv, s16912c1f1, ABISELECT(8,4), "S16912C1.s16912c1f1");
    check_field_offset(lv, s16912c1f2, ABISELECT(16,8), "S16912C1.s16912c1f2");
    check_field_offset(lv, s16912c1f3, ABISELECT(24,12), "S16912C1.s16912c1f3");
  }
}
static Arrange_To_Call_Me vS16912C1(Test_S16912C1, "S16912C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19924C2  {
  __tsi64 s19924c2f0[8];
  void *s19924c2f1[5];
  short s19924c2f2;
  virtual void  v1(); // _ZN8S19924C22v1Ev
  ~S19924C2(); // tgen
  S19924C2(); // tgen
};
//SIG(-1 S19924C2) C1{ v1 FL[8] Fp[5] Fs}


void  S19924C2 ::v1(){vfunc_called(this, "_ZN8S19924C22v1Ev");}
S19924C2 ::~S19924C2(){ note_dtor("S19924C2", this);} // tgen
S19924C2 ::S19924C2(){ note_ctor("S19924C2", this);} // tgen

static void Test_S19924C2()
{
  extern Class_Descriptor cd_S19924C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,24)];
    init_test(&cd_S19924C2, buf);
    S19924C2 *dp, &lv = *(dp=new (buf) S19924C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S19924C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19924C2)");
    check_field_offset(lv, s19924c2f0, ABISELECT(8,4), "S19924C2.s19924c2f0");
    check_field_offset(lv, s19924c2f1, ABISELECT(72,68), "S19924C2.s19924c2f1");
    check_field_offset(lv, s19924c2f2, ABISELECT(112,88), "S19924C2.s19924c2f2");
    test_class_info(&lv, &cd_S19924C2);
    dp->~S19924C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19924C2(Test_S19924C2, "S19924C2", ABISELECT(120,92));

#else // __cplusplus

extern void _ZN8S19924C2C1Ev();
extern void _ZN8S19924C2D1Ev();
Name_Map name_map_S19924C2[] = {
  NSPAIR(_ZN8S19924C2C1Ev),
  NSPAIR(_ZN8S19924C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19924C2[];
extern void _ZN8S19924C22v1Ev();
static  VTBL_ENTRY vtc_S19924C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19924C2[0]),
  (VTBL_ENTRY)&_ZN8S19924C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S19924C2[];
extern  VTBL_ENTRY _ZTV8S19924C2[];
Class_Descriptor cd_S19924C2 = {  "S19924C2", // class name
  0,0,//no base classes
  &(vtc_S19924C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,92), // object size
  NSPAIRA(_ZTI8S19924C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19924C2),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  S19924C1  : virtual S19924C2 {
  ::S19924C2 s19924c1f0;
  ~S19924C1(); // tgen
  S19924C1(); // tgen
};
//SIG(1 S19924C1) C1{ VBC2{ v1 FL[8] Fp[5] Fs} FC2}


S19924C1 ::~S19924C1(){ note_dtor("S19924C1", this);} // tgen
S19924C1 ::S19924C1(){ note_ctor("S19924C1", this);} // tgen

static void Test_S19924C1()
{
  extern Class_Descriptor cd_S19924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,48)];
    init_test(&cd_S19924C1, buf);
    S19924C1 *dp, &lv = *(dp=new (buf) S19924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,188), "sizeof(S19924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19924C1)");
    check_base_class_offset(lv, (S19924C2*), ABISELECT(128,96), "S19924C1");
    check_field_offset(lv, s19924c1f0, ABISELECT(8,4), "S19924C1.s19924c1f0");
    test_class_info(&lv, &cd_S19924C1);
    dp->~S19924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19924C1(Test_S19924C1, "S19924C1", ABISELECT(248,188));

#else // __cplusplus

extern void _ZN8S19924C1C1Ev();
extern void _ZN8S19924C1D1Ev();
Name_Map name_map_S19924C1[] = {
  NSPAIR(_ZN8S19924C1C1Ev),
  NSPAIR(_ZN8S19924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19924C2;
extern VTBL_ENTRY _ZTI8S19924C2[];
extern  VTBL_ENTRY _ZTV8S19924C2[];
static Base_Class bases_S19924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19924C2,    ABISELECT(128,96), //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 _ZTI8S19924C1[];
extern void _ZN8S19924C22v1Ev();
static  VTBL_ENTRY vtc_S19924C1[] = {
  ABISELECT(128,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19924C1[0]),
  0,
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S19924C1[0]),
  (VTBL_ENTRY)&_ZN8S19924C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19924C1[];
static  VTT_ENTRY vtt_S19924C1[] = {
  {&(_ZTV8S19924C1[3]),  3,7},
  {&(_ZTV8S19924C1[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19924C1[];
extern  VTBL_ENTRY _ZTV8S19924C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19924C1[];
Class_Descriptor cd_S19924C1 = {  "S19924C1", // class name
  bases_S19924C1, 1,
  &(vtc_S19924C1[0]), // expected_vtbl_contents
  &(vtt_S19924C1[0]), // expected_vtt_contents
  ABISELECT(248,188), // object size
  NSPAIRA(_ZTI8S19924C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19924C1),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19924C1),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  S18736C1  {
  void *s18736c1f0;
  long double s18736c1f1[2];
  long s18736c1f2;
  virtual void  v1(); // _ZN8S18736C12v1Ev
  virtual void  v2(); // _ZN8S18736C12v2Ev
  virtual void  v3(); // _ZN8S18736C12v3Ev
  virtual void  v4(); // _ZN8S18736C12v4Ev
  virtual void  v5(); // _ZN8S18736C12v5Ev
  ~S18736C1(); // tgen
  S18736C1(); // tgen
};
//SIG(1 S18736C1) C1{ v1 v2 v3 v4 v5 Fp FD[2] Fl}


void  S18736C1 ::v1(){vfunc_called(this, "_ZN8S18736C12v1Ev");}
void  S18736C1 ::v2(){vfunc_called(this, "_ZN8S18736C12v2Ev");}
void  S18736C1 ::v3(){vfunc_called(this, "_ZN8S18736C12v3Ev");}
void  S18736C1 ::v4(){vfunc_called(this, "_ZN8S18736C12v4Ev");}
void  S18736C1 ::v5(){vfunc_called(this, "_ZN8S18736C12v5Ev");}
S18736C1 ::~S18736C1(){ note_dtor("S18736C1", this);} // tgen
S18736C1 ::S18736C1(){ note_ctor("S18736C1", this);} // tgen

static void Test_S18736C1()
{
  extern Class_Descriptor cd_S18736C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S18736C1, buf);
    S18736C1 *dp, &lv = *(dp=new (buf) S18736C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18736C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18736C1)");
    check_field_offset(lv, s18736c1f0, ABISELECT(8,4), "S18736C1.s18736c1f0");
    check_field_offset(lv, s18736c1f1, ABISELECT(16,8), "S18736C1.s18736c1f1");
    check_field_offset(lv, s18736c1f2, ABISELECT(48,32), "S18736C1.s18736c1f2");
    test_class_info(&lv, &cd_S18736C1);
    dp->~S18736C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18736C1(Test_S18736C1, "S18736C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S18736C1C1Ev();
extern void _ZN8S18736C1D1Ev();
Name_Map name_map_S18736C1[] = {
  NSPAIR(_ZN8S18736C1C1Ev),
  NSPAIR(_ZN8S18736C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18736C1[];
extern void _ZN8S18736C12v1Ev();
extern void _ZN8S18736C12v2Ev();
extern void _ZN8S18736C12v3Ev();
extern void _ZN8S18736C12v4Ev();
extern void _ZN8S18736C12v5Ev();
static  VTBL_ENTRY vtc_S18736C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18736C1[0]),
  (VTBL_ENTRY)&_ZN8S18736C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18736C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18736C1[];
extern  VTBL_ENTRY _ZTV8S18736C1[];
Class_Descriptor cd_S18736C1 = {  "S18736C1", // class name
  0,0,//no base classes
  &(vtc_S18736C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S18736C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18736C1),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  S7473C2  : virtual S7856C24 , S7856C15 , virtual S7856C12 {
  ~S7473C2(); // tgen
  S7473C2(); // tgen
};
//SIG(-1 S7473C2) C1{ VBC2{ m} BC3{ m} VBC4{ m}}


S7473C2 ::~S7473C2(){ note_dtor("S7473C2", this);} // tgen
S7473C2 ::S7473C2(){ note_ctor("S7473C2", this);} // tgen

static void Test_S7473C2()
{
  extern Class_Descriptor cd_S7473C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7473C2, buf);
    S7473C2 *dp, &lv = *(dp=new (buf) S7473C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7473C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7473C2)");
    check_base_class_offset(lv, (S7856C24*), 0, "S7473C2");
    check_base_class_offset(lv, (S7856C15*), 0, "S7473C2");
    check_base_class_offset(lv, (S7856C12*), 0, "S7473C2");
    test_class_info(&lv, &cd_S7473C2);
    dp->~S7473C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7473C2(Test_S7473C2, "S7473C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7473C2C1Ev();
extern void _ZN7S7473C2D1Ev();
Name_Map name_map_S7473C2[] = {
  NSPAIR(_ZN7S7473C2C1Ev),
  NSPAIR(_ZN7S7473C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
static Base_Class bases_S7473C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7473C2[];
static  VTBL_ENTRY vtc_S7473C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C2[0]),
};
extern VTBL_ENTRY _ZTV7S7473C2[];
static  VTT_ENTRY vtt_S7473C2[] = {
  {&(_ZTV7S7473C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7473C2[];
extern  VTBL_ENTRY _ZTV7S7473C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C2[];
Class_Descriptor cd_S7473C2 = {  "S7473C2", // class name
  bases_S7473C2, 3,
  &(vtc_S7473C2[0]), // expected_vtbl_contents
  &(vtt_S7473C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7473C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7473C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7473C2),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  S7473C1  : S7473C2 {
  ~S7473C1(); // tgen
  S7473C1(); // tgen
};
//SIG(1 S7473C1) C1{ BC2{ VBC3{ m} BC4{ m} VBC5{ m}}}


S7473C1 ::~S7473C1(){ note_dtor("S7473C1", this);} // tgen
S7473C1 ::S7473C1(){ note_ctor("S7473C1", this);} // tgen

static void Test_S7473C1()
{
  extern Class_Descriptor cd_S7473C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7473C1, buf);
    S7473C1 *dp, &lv = *(dp=new (buf) S7473C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7473C1)");
    check_base_class_offset(lv, (S7856C24*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7856C15*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7856C12*)(S7473C2*), 0, "S7473C1");
    check_base_class_offset(lv, (S7473C2*), 0, "S7473C1");
    test_class_info(&lv, &cd_S7473C1);
    dp->~S7473C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7473C1(Test_S7473C1, "S7473C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7473C1C1Ev();
extern void _ZN7S7473C1D1Ev();
Name_Map name_map_S7473C1[] = {
  NSPAIR(_ZN7S7473C1C1Ev),
  NSPAIR(_ZN7S7473C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
extern Class_Descriptor cd_S7856C15;
extern VTBL_ENTRY _ZTI8S7856C15[];
extern Class_Descriptor cd_S7856C12;
extern VTBL_ENTRY _ZTI8S7856C12[];
extern Class_Descriptor cd_S7473C2;
extern VTBL_ENTRY _ZTI7S7473C2[];
extern  VTBL_ENTRY _ZTV7S7473C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C2[];
static Base_Class bases_S7473C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7856C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7473C2,    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
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7473C1[];
static  VTBL_ENTRY vtc_S7473C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C1[0]),
};
extern VTBL_ENTRY _ZTV7S7473C1[];
static  VTBL_ENTRY _tg__ZTV7S7473C2__7S7473C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7473C2[0]),
};
static  VTT_ENTRY vtt_S7473C1[] = {
  {&(_ZTV7S7473C1[4]),  4,4},
  {&(_tg__ZTV7S7473C2__7S7473C1[4]),  4,4},
};
extern VTBL_ENTRY _ZTI7S7473C1[];
extern  VTBL_ENTRY _ZTV7S7473C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7473C1[];
Class_Descriptor cd_S7473C1 = {  "S7473C1", // class name
  bases_S7473C1, 4,
  &(vtc_S7473C1[0]), // expected_vtbl_contents
  &(vtt_S7473C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7473C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7473C1),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7473C1),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  S14532C2  {
  int s14532c2f0;
  void *s14532c2f1[9];
};
//SIG(-1 S14532C2) C1{ Fi Fp[9]}



static void Test_S14532C2()
{
  {
    init_simple_test("S14532C2");
    S14532C2 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S14532C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14532C2)");
    check_field_offset(lv, s14532c2f0, 0, "S14532C2.s14532c2f0");
    check_field_offset(lv, s14532c2f1, ABISELECT(8,4), "S14532C2.s14532c2f1");
  }
}
static Arrange_To_Call_Me vS14532C2(Test_S14532C2, "S14532C2", ABISELECT(80,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14532C1  {
  void *s14532c1f0[2];
  int s14532c1f1[2];
  ::S14532C2 s14532c1f2;
};
//SIG(1 S14532C1) C1{ Fp[2] Fi[2] FC2{ Fi Fp[9]}}



static void Test_S14532C1()
{
  {
    init_simple_test("S14532C1");
    S14532C1 lv;
    check2(sizeof(lv), ABISELECT(104,56), "sizeof(S14532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14532C1)");
    check_field_offset(lv, s14532c1f0, 0, "S14532C1.s14532c1f0");
    check_field_offset(lv, s14532c1f1, ABISELECT(16,8), "S14532C1.s14532c1f1");
    check_field_offset(lv, s14532c1f2, ABISELECT(24,16), "S14532C1.s14532c1f2");
  }
}
static Arrange_To_Call_Me vS14532C1(Test_S14532C1, "S14532C1", ABISELECT(104,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5976C2  {
  void *s5976c2f0;
  ::S17566C3_nt s5976c2f1;
  char s5976c2f2;
  void  mf5976c2(); // _ZN7S5976C28mf5976c2Ev
};
//SIG(-1 S5976C2) C1{ m Fp FC2{ m FL[4]} Fc}


void  S5976C2 ::mf5976c2(){}

static void Test_S5976C2()
{
  {
    init_simple_test("S5976C2");
    S5976C2 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S5976C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5976C2)");
    check_field_offset(lv, s5976c2f0, 0, "S5976C2.s5976c2f0");
    check_field_offset(lv, s5976c2f1, ABISELECT(8,4), "S5976C2.s5976c2f1");
    check_field_offset(lv, s5976c2f2, ABISELECT(40,36), "S5976C2.s5976c2f2");
  }
}
static Arrange_To_Call_Me vS5976C2(Test_S5976C2, "S5976C2", ABISELECT(48,40));

#else // __cplusplus

Class_Descriptor cd_S5976C2 = {  "S5976C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5976C1  : S5976C2 {
};
//SIG(1 S5976C1) C1{ BC2{ m Fp FC3{ m FL[4]} Fc}}



static void Test_S5976C1()
{
  extern Class_Descriptor cd_S5976C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S5976C1, buf);
    S5976C1 &lv = *(new (buf) S5976C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S5976C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5976C1)");
    check_base_class_offset(lv, (S5976C2*), 0, "S5976C1");
    test_class_info(&lv, &cd_S5976C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5976C1(Test_S5976C1, "S5976C1", ABISELECT(48,40));

#else // __cplusplus

extern Class_Descriptor cd_S5976C2;
static Base_Class bases_S5976C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5976C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5976C1 = {  "S5976C1", // class name
  bases_S5976C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18768C1  {
  __tsi64 s18768c1f0;
  int s18768c1f1;
  virtual void  v1(); // _ZN8S18768C12v1Ev
  virtual void  v2(); // _ZN8S18768C12v2Ev
  virtual void  v3(); // _ZN8S18768C12v3Ev
  virtual void  v4(); // _ZN8S18768C12v4Ev
  virtual void  v5(); // _ZN8S18768C12v5Ev
  virtual void  v6(); // _ZN8S18768C12v6Ev
  ~S18768C1(); // tgen
  S18768C1(); // tgen
};
//SIG(1 S18768C1) C1{ v1 v2 v3 v4 v5 v6 FL Fi}


void  S18768C1 ::v1(){vfunc_called(this, "_ZN8S18768C12v1Ev");}
void  S18768C1 ::v2(){vfunc_called(this, "_ZN8S18768C12v2Ev");}
void  S18768C1 ::v3(){vfunc_called(this, "_ZN8S18768C12v3Ev");}
void  S18768C1 ::v4(){vfunc_called(this, "_ZN8S18768C12v4Ev");}
void  S18768C1 ::v5(){vfunc_called(this, "_ZN8S18768C12v5Ev");}
void  S18768C1 ::v6(){vfunc_called(this, "_ZN8S18768C12v6Ev");}
S18768C1 ::~S18768C1(){ note_dtor("S18768C1", this);} // tgen
S18768C1 ::S18768C1(){ note_ctor("S18768C1", this);} // tgen

static void Test_S18768C1()
{
  extern Class_Descriptor cd_S18768C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18768C1, buf);
    S18768C1 *dp, &lv = *(dp=new (buf) S18768C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18768C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18768C1)");
    check_field_offset(lv, s18768c1f0, ABISELECT(8,4), "S18768C1.s18768c1f0");
    check_field_offset(lv, s18768c1f1, ABISELECT(16,12), "S18768C1.s18768c1f1");
    test_class_info(&lv, &cd_S18768C1);
    dp->~S18768C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18768C1(Test_S18768C1, "S18768C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18768C1C1Ev();
extern void _ZN8S18768C1D1Ev();
Name_Map name_map_S18768C1[] = {
  NSPAIR(_ZN8S18768C1C1Ev),
  NSPAIR(_ZN8S18768C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18768C1[];
extern void _ZN8S18768C12v1Ev();
extern void _ZN8S18768C12v2Ev();
extern void _ZN8S18768C12v3Ev();
extern void _ZN8S18768C12v4Ev();
extern void _ZN8S18768C12v5Ev();
extern void _ZN8S18768C12v6Ev();
static  VTBL_ENTRY vtc_S18768C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18768C1[0]),
  (VTBL_ENTRY)&_ZN8S18768C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18768C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18768C1[];
extern  VTBL_ENTRY _ZTV8S18768C1[];
Class_Descriptor cd_S18768C1 = {  "S18768C1", // class name
  0,0,//no base classes
  &(vtc_S18768C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18768C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18768C1),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  S16344C1  {
  ::S1113C13_nt s16344c1f0;
  ::S1868C17 s16344c1f1;
  void  mf16344c1(); // _ZN8S16344C19mf16344c1Ev
};
//SIG(1 S16344C1) C1{ m FC2{ m Fp Fi} FC3{ m Fp}}


void  S16344C1 ::mf16344c1(){}

static void Test_S16344C1()
{
  {
    init_simple_test("S16344C1");
    S16344C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16344C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16344C1)");
    check_field_offset(lv, s16344c1f0, 0, "S16344C1.s16344c1f0");
    check_field_offset(lv, s16344c1f1, ABISELECT(16,8), "S16344C1.s16344c1f1");
  }
}
static Arrange_To_Call_Me vS16344C1(Test_S16344C1, "S16344C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17277C1  {
  int s17277c1f0[6];
  __tsi64 s17277c1f1[14];
  char s17277c1f2[3];
  void *s17277c1f3;
  void  mf17277c1(); // _ZN8S17277C19mf17277c1Ev
};
//SIG(1 S17277C1) C1{ m Fi[6] FL[14] Fc[3] Fp}


void  S17277C1 ::mf17277c1(){}

static void Test_S17277C1()
{
  {
    init_simple_test("S17277C1");
    S17277C1 lv;
    check2(sizeof(lv), ABISELECT(152,144), "sizeof(S17277C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17277C1)");
    check_field_offset(lv, s17277c1f0, 0, "S17277C1.s17277c1f0");
    check_field_offset(lv, s17277c1f1, 24, "S17277C1.s17277c1f1");
    check_field_offset(lv, s17277c1f2, 136, "S17277C1.s17277c1f2");
    check_field_offset(lv, s17277c1f3, ABISELECT(144,140), "S17277C1.s17277c1f3");
  }
}
static Arrange_To_Call_Me vS17277C1(Test_S17277C1, "S17277C1", ABISELECT(152,144));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12268C1  {
  int s12268c1f0;
  char s12268c1f1[32];
  int s12268c1f2[2];
  char s12268c1f3[64];
};
//SIG(1 S12268C1) C1{ Fi Fc[32] Fi[2] Fc[64]}



static void Test_S12268C1()
{
  {
    init_simple_test("S12268C1");
    S12268C1 lv;
    check2(sizeof(lv), 108, "sizeof(S12268C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12268C1)");
    check_field_offset(lv, s12268c1f0, 0, "S12268C1.s12268c1f0");
    check_field_offset(lv, s12268c1f1, 4, "S12268C1.s12268c1f1");
    check_field_offset(lv, s12268c1f2, 36, "S12268C1.s12268c1f2");
    check_field_offset(lv, s12268c1f3, 44, "S12268C1.s12268c1f3");
  }
}
static Arrange_To_Call_Me vS12268C1(Test_S12268C1, "S12268C1", 108);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16073C1  {
  ::S40C35_nt s16073c1f0;
  void *s16073c1f1;
  int s16073c1f2;
  void *s16073c1f3;
  void  mf16073c1(); // _ZN8S16073C19mf16073c1Ev
};
//SIG(1 S16073C1) C1{ m FC2{ m Fi[4]} Fp Fi Fp}


void  S16073C1 ::mf16073c1(){}

static void Test_S16073C1()
{
  {
    init_simple_test("S16073C1");
    S16073C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16073C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16073C1)");
    check_field_offset(lv, s16073c1f0, 0, "S16073C1.s16073c1f0");
    check_field_offset(lv, s16073c1f1, 16, "S16073C1.s16073c1f1");
    check_field_offset(lv, s16073c1f2, ABISELECT(24,20), "S16073C1.s16073c1f2");
    check_field_offset(lv, s16073c1f3, ABISELECT(32,24), "S16073C1.s16073c1f3");
  }
}
static Arrange_To_Call_Me vS16073C1(Test_S16073C1, "S16073C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S18650C2  {
  __tsi64 s18650c2f0[2];
  void  mf18650c2(); // _ZN8S18650C29mf18650c2Ev
};
//SIG(1 S18650C2) U1{ m FL[2]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18650C1  {
  ::S18650C2 s18650c1f0;
  virtual void  v1(); // _ZN8S18650C12v1Ev
  virtual void  v2(); // _ZN8S18650C12v2Ev
  virtual void  v3(); // _ZN8S18650C12v3Ev
  ~S18650C1(); // tgen
  S18650C1(); // tgen
};
//SIG(1 S18650C1) C1{ v1 v2 v3 FU2{ m FL[2]}}


void  S18650C1 ::v1(){vfunc_called(this, "_ZN8S18650C12v1Ev");}
void  S18650C1 ::v2(){vfunc_called(this, "_ZN8S18650C12v2Ev");}
void  S18650C1 ::v3(){vfunc_called(this, "_ZN8S18650C12v3Ev");}
S18650C1 ::~S18650C1(){ note_dtor("S18650C1", this);} // tgen
S18650C1 ::S18650C1(){ note_ctor("S18650C1", this);} // tgen

static void Test_S18650C1()
{
  extern Class_Descriptor cd_S18650C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S18650C1, buf);
    S18650C1 *dp, &lv = *(dp=new (buf) S18650C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18650C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18650C1)");
    check_field_offset(lv, s18650c1f0, ABISELECT(8,4), "S18650C1.s18650c1f0");
    test_class_info(&lv, &cd_S18650C1);
    dp->~S18650C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18650C1(Test_S18650C1, "S18650C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S18650C1C1Ev();
extern void _ZN8S18650C1D1Ev();
Name_Map name_map_S18650C1[] = {
  NSPAIR(_ZN8S18650C1C1Ev),
  NSPAIR(_ZN8S18650C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18650C1[];
extern void _ZN8S18650C12v1Ev();
extern void _ZN8S18650C12v2Ev();
extern void _ZN8S18650C12v3Ev();
static  VTBL_ENTRY vtc_S18650C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18650C1[0]),
  (VTBL_ENTRY)&_ZN8S18650C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18650C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18650C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18650C1[];
extern  VTBL_ENTRY _ZTV8S18650C1[];
Class_Descriptor cd_S18650C1 = {  "S18650C1", // class name
  0,0,//no base classes
  &(vtc_S18650C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S18650C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18650C1),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  S11671C1  {
  ::S8565C3_nt s11671c1f0;
  ::S8565C3_nt s11671c1f1;
  int s11671c1f2;
  char s11671c1f3[28];
};
//SIG(1 S11671C1) C1{ FC2{ Fi} FC2 Fi Fc[28]}



static void Test_S11671C1()
{
  {
    init_simple_test("S11671C1");
    S11671C1 lv;
    check2(sizeof(lv), 40, "sizeof(S11671C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11671C1)");
    check_field_offset(lv, s11671c1f0, 0, "S11671C1.s11671c1f0");
    check_field_offset(lv, s11671c1f1, 4, "S11671C1.s11671c1f1");
    check_field_offset(lv, s11671c1f2, 8, "S11671C1.s11671c1f2");
    check_field_offset(lv, s11671c1f3, 12, "S11671C1.s11671c1f3");
  }
}
static Arrange_To_Call_Me vS11671C1(Test_S11671C1, "S11671C1", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14122C1  {
  void *s14122c1f0;
  ::S13708C3 s14122c1f1[63];
};
//SIG(1 S14122C1) C1{ Fp FC2{ FL Fp[2]}[63]}



static void Test_S14122C1()
{
  {
    init_simple_test("S14122C1");
    S14122C1 lv;
    check2(sizeof(lv), ABISELECT(1520,1012), "sizeof(S14122C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14122C1)");
    check_field_offset(lv, s14122c1f0, 0, "S14122C1.s14122c1f0");
    check_field_offset(lv, s14122c1f1, ABISELECT(8,4), "S14122C1.s14122c1f1");
  }
}
static Arrange_To_Call_Me vS14122C1(Test_S14122C1, "S14122C1", ABISELECT(1520,1012));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14121C1  {
  void *s14121c1f0;
  ::S13708C3 s14121c1f1[42];
};
//SIG(1 S14121C1) C1{ Fp FC2{ FL Fp[2]}[42]}



static void Test_S14121C1()
{
  {
    init_simple_test("S14121C1");
    S14121C1 lv;
    check2(sizeof(lv), ABISELECT(1016,676), "sizeof(S14121C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14121C1)");
    check_field_offset(lv, s14121c1f0, 0, "S14121C1.s14121c1f0");
    check_field_offset(lv, s14121c1f1, ABISELECT(8,4), "S14121C1.s14121c1f1");
  }
}
static Arrange_To_Call_Me vS14121C1(Test_S14121C1, "S14121C1", ABISELECT(1016,676));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17580C1  {
  void *s17580c1f0;
  ::S580C22_nt s17580c1f1;
  void  mf17580c1(); // _ZN8S17580C19mf17580c1Ev
};
//SIG(1 S17580C1) C1{ m Fp FC2{ m Fi Fc Fi}}


void  S17580C1 ::mf17580c1(){}

static void Test_S17580C1()
{
  {
    init_simple_test("S17580C1");
    S17580C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17580C1)");
    check_field_offset(lv, s17580c1f0, 0, "S17580C1.s17580c1f0");
    check_field_offset(lv, s17580c1f1, ABISELECT(8,4), "S17580C1.s17580c1f1");
  }
}
static Arrange_To_Call_Me vS17580C1(Test_S17580C1, "S17580C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14481C1  {
  void *s14481c1f0[2];
  ::S14483C3 s14481c1f1;
};
//SIG(1 S14481C1) C1{ Fp[2] FC2{ m Fc[278]}}



static void Test_S14481C1()
{
  {
    init_simple_test("S14481C1");
    S14481C1 lv;
    check2(sizeof(lv), ABISELECT(296,288), "sizeof(S14481C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14481C1)");
    check_field_offset(lv, s14481c1f0, 0, "S14481C1.s14481c1f0");
    check_field_offset(lv, s14481c1f1, ABISELECT(16,8), "S14481C1.s14481c1f1");
  }
}
static Arrange_To_Call_Me vS14481C1(Test_S14481C1, "S14481C1", ABISELECT(296,288));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5612C2  {
  ::S14532C2 s5612c2f0;
  void  mf5612c2(); // _ZN7S5612C28mf5612c2Ev
};
//SIG(-1 S5612C2) C1{ m FC2{ Fi Fp[9]}}


void  S5612C2 ::mf5612c2(){}

static void Test_S5612C2()
{
  {
    init_simple_test("S5612C2");
    S5612C2 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S5612C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5612C2)");
    check_field_offset(lv, s5612c2f0, 0, "S5612C2.s5612c2f0");
  }
}
static Arrange_To_Call_Me vS5612C2(Test_S5612C2, "S5612C2", ABISELECT(80,40));

#else // __cplusplus

Class_Descriptor cd_S5612C2 = {  "S5612C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5612C1  : S5612C2 {
};
//SIG(1 S5612C1) C1{ BC2{ m FC3{ Fi Fp[9]}}}



static void Test_S5612C1()
{
  extern Class_Descriptor cd_S5612C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S5612C1, buf);
    S5612C1 &lv = *(new (buf) S5612C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S5612C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5612C1)");
    check_base_class_offset(lv, (S5612C2*), 0, "S5612C1");
    test_class_info(&lv, &cd_S5612C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5612C1(Test_S5612C1, "S5612C1", ABISELECT(80,40));

#else // __cplusplus

extern Class_Descriptor cd_S5612C2;
static Base_Class bases_S5612C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5612C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5612C1 = {  "S5612C1", // class name
  bases_S5612C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14490C1  {
  void *s14490c1f0[2];
  ::S8611C4_nt s14490c1f1;
};
//SIG(1 S14490C1) C1{ Fp[2] FC2{ m Fi[3]}}



static void Test_S14490C1()
{
  {
    init_simple_test("S14490C1");
    S14490C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S14490C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14490C1)");
    check_field_offset(lv, s14490c1f0, 0, "S14490C1.s14490c1f0");
    check_field_offset(lv, s14490c1f1, ABISELECT(16,8), "S14490C1.s14490c1f1");
  }
}
static Arrange_To_Call_Me vS14490C1(Test_S14490C1, "S14490C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14899C1  {
  short s14899c1f0[2];
  int s14899c1f1[3];
  __tsi64 s14899c1f2[2];
};
//SIG(1 S14899C1) C1{ Fs[2] Fi[3] FL[2]}



static void Test_S14899C1()
{
  {
    init_simple_test("S14899C1");
    S14899C1 lv;
    check2(sizeof(lv), 32, "sizeof(S14899C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14899C1)");
    check_field_offset(lv, s14899c1f0, 0, "S14899C1.s14899c1f0");
    check_field_offset(lv, s14899c1f1, 4, "S14899C1.s14899c1f1");
    check_field_offset(lv, s14899c1f2, 16, "S14899C1.s14899c1f2");
  }
}
static Arrange_To_Call_Me vS14899C1(Test_S14899C1, "S14899C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16906C1  {
  int s16906c1f0;
  void *s16906c1f1;
  ::S40C13_nt s16906c1f2;
  void  mf16906c1(); // _ZN8S16906C19mf16906c1Ev
};
//SIG(1 S16906C1) C1{ m Fi Fp FC2{ m Fi}}


void  S16906C1 ::mf16906c1(){}

static void Test_S16906C1()
{
  {
    init_simple_test("S16906C1");
    S16906C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16906C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16906C1)");
    check_field_offset(lv, s16906c1f0, 0, "S16906C1.s16906c1f0");
    check_field_offset(lv, s16906c1f1, ABISELECT(8,4), "S16906C1.s16906c1f1");
    check_field_offset(lv, s16906c1f2, ABISELECT(16,8), "S16906C1.s16906c1f2");
  }
}
static Arrange_To_Call_Me vS16906C1(Test_S16906C1, "S16906C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15105C1  {
  char s15105c1f0;
  int s15105c1f1[3];
  char s15105c1f2[48];
  void  mf15105c1(); // _ZN8S15105C19mf15105c1Ev
};
//SIG(1 S15105C1) C1{ m Fc Fi[3] Fc[48]}


void  S15105C1 ::mf15105c1(){}

static void Test_S15105C1()
{
  {
    init_simple_test("S15105C1");
    S15105C1 lv;
    check2(sizeof(lv), 64, "sizeof(S15105C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15105C1)");
    check_field_offset(lv, s15105c1f0, 0, "S15105C1.s15105c1f0");
    check_field_offset(lv, s15105c1f1, 4, "S15105C1.s15105c1f1");
    check_field_offset(lv, s15105c1f2, 16, "S15105C1.s15105c1f2");
  }
}
static Arrange_To_Call_Me vS15105C1(Test_S15105C1, "S15105C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18376C1  {
  void *s18376c1f0[5];
  int s18376c1f1[2];
  void *s18376c1f2;
  void  mf18376c1(); // _ZN8S18376C19mf18376c1Ev
};
//SIG(1 S18376C1) C1{ m Fp[5] Fi[2] Fp}


void  S18376C1 ::mf18376c1(){}

static void Test_S18376C1()
{
  {
    init_simple_test("S18376C1");
    S18376C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18376C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18376C1)");
    check_field_offset(lv, s18376c1f0, 0, "S18376C1.s18376c1f0");
    check_field_offset(lv, s18376c1f1, ABISELECT(40,20), "S18376C1.s18376c1f1");
    check_field_offset(lv, s18376c1f2, ABISELECT(48,28), "S18376C1.s18376c1f2");
  }
}
static Arrange_To_Call_Me vS18376C1(Test_S18376C1, "S18376C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17774C1  {
  void *s17774c1f0;
  int s17774c1f1[2];
  char s17774c1f2[2];
  void  mf17774c1(); // _ZN8S17774C19mf17774c1Ev
};
//SIG(1 S17774C1) C1{ m Fp Fi[2] Fc[2]}


void  S17774C1 ::mf17774c1(){}

static void Test_S17774C1()
{
  {
    init_simple_test("S17774C1");
    S17774C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17774C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17774C1)");
    check_field_offset(lv, s17774c1f0, 0, "S17774C1.s17774c1f0");
    check_field_offset(lv, s17774c1f1, ABISELECT(8,4), "S17774C1.s17774c1f1");
    check_field_offset(lv, s17774c1f2, ABISELECT(16,12), "S17774C1.s17774c1f2");
  }
}
static Arrange_To_Call_Me vS17774C1(Test_S17774C1, "S17774C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20225C2  {
  virtual void  v4(); // _ZN8S20225C22v4Ev
  ~S20225C2(); // tgen
  S20225C2(); // tgen
};
//SIG(-1 S20225C2) C1{ v1}


void  S20225C2 ::v4(){vfunc_called(this, "_ZN8S20225C22v4Ev");}
S20225C2 ::~S20225C2(){ note_dtor("S20225C2", this);} // tgen
S20225C2 ::S20225C2(){ note_ctor("S20225C2", this);} // tgen

static void Test_S20225C2()
{
  extern Class_Descriptor cd_S20225C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20225C2, buf);
    S20225C2 *dp, &lv = *(dp=new (buf) S20225C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20225C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20225C2)");
    test_class_info(&lv, &cd_S20225C2);
    dp->~S20225C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20225C2(Test_S20225C2, "S20225C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20225C2C1Ev();
extern void _ZN8S20225C2D1Ev();
Name_Map name_map_S20225C2[] = {
  NSPAIR(_ZN8S20225C2C1Ev),
  NSPAIR(_ZN8S20225C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20225C2[];
extern void _ZN8S20225C22v4Ev();
static  VTBL_ENTRY vtc_S20225C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20225C2[0]),
  (VTBL_ENTRY)&_ZN8S20225C22v4Ev,
};
extern VTBL_ENTRY _ZTI8S20225C2[];
extern  VTBL_ENTRY _ZTV8S20225C2[];
Class_Descriptor cd_S20225C2 = {  "S20225C2", // class name
  0,0,//no base classes
  &(vtc_S20225C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20225C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20225C2),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  S20225C1  : virtual S20225C2 {
  virtual void  v1(); // _ZN8S20225C12v1Ev
  virtual void  v2(); // _ZN8S20225C12v2Ev
  virtual void  v3(); // _ZN8S20225C12v3Ev
  ~S20225C1(); // tgen
  S20225C1(); // tgen
};
//SIG(1 S20225C1) C1{ VBC2{ v4} v1 v2 v3}


void  S20225C1 ::v1(){vfunc_called(this, "_ZN8S20225C12v1Ev");}
void  S20225C1 ::v2(){vfunc_called(this, "_ZN8S20225C12v2Ev");}
void  S20225C1 ::v3(){vfunc_called(this, "_ZN8S20225C12v3Ev");}
S20225C1 ::~S20225C1(){ note_dtor("S20225C1", this);} // tgen
S20225C1 ::S20225C1(){ note_ctor("S20225C1", this);} // tgen

static void Test_S20225C1()
{
  extern Class_Descriptor cd_S20225C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20225C1, buf);
    S20225C1 *dp, &lv = *(dp=new (buf) S20225C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20225C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20225C1)");
    check_base_class_offset(lv, (S20225C2*), 0, "S20225C1");
    test_class_info(&lv, &cd_S20225C1);
    dp->~S20225C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20225C1(Test_S20225C1, "S20225C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20225C1C1Ev();
extern void _ZN8S20225C1D1Ev();
Name_Map name_map_S20225C1[] = {
  NSPAIR(_ZN8S20225C1C1Ev),
  NSPAIR(_ZN8S20225C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20225C2;
extern VTBL_ENTRY _ZTI8S20225C2[];
extern  VTBL_ENTRY _ZTV8S20225C2[];
static Base_Class bases_S20225C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20225C2,    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 _ZTI8S20225C1[];
extern void _ZN8S20225C22v4Ev();
extern void _ZN8S20225C12v1Ev();
extern void _ZN8S20225C12v2Ev();
extern void _ZN8S20225C12v3Ev();
static  VTBL_ENTRY vtc_S20225C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20225C1[0]),
  (VTBL_ENTRY)&_ZN8S20225C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20225C12v3Ev,
};
extern VTBL_ENTRY _ZTV8S20225C1[];
static  VTT_ENTRY vtt_S20225C1[] = {
  {&(_ZTV8S20225C1[4]),  4,8},
  {&(_ZTV8S20225C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S20225C1[];
extern  VTBL_ENTRY _ZTV8S20225C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20225C1[];
Class_Descriptor cd_S20225C1 = {  "S20225C1", // class name
  bases_S20225C1, 1,
  &(vtc_S20225C1[0]), // expected_vtbl_contents
  &(vtt_S20225C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20225C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20225C1),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20225C1),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  S10335C3_nt  {
};
//SIG(-1 S10335C3_nt) C1{}



//skip512 S10335C3_nt

#else // __cplusplus

Class_Descriptor cd_S10335C3_nt = {  "S10335C3_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  S10335C4  {
};
//SIG(-1 S10335C4) C1{}



static void Test_S10335C4()
{
  {
    init_simple_test("S10335C4");
    S10335C4 lv;
    check2(sizeof(lv), 1, "sizeof(S10335C4)");
    check2(__alignof__(lv), 1, "__alignof__(S10335C4)");
  }
}
static Arrange_To_Call_Me vS10335C4(Test_S10335C4, "S10335C4", 1);

#else // __cplusplus

Class_Descriptor cd_S10335C4 = {  "S10335C4", // 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  S10335C1  : S20291C14_nt , S10335C3_nt , S10335C4 {
};
//SIG(1 S10335C1) C1{ BC2{} BC3{} BC4{}}



static void Test_S10335C1()
{
  extern Class_Descriptor cd_S10335C1;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S10335C1, buf);
    S10335C1 &lv = *(new (buf) S10335C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S10335C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10335C1)");
    check_base_class_offset(lv, (S20291C14_nt*), 0, "S10335C1");
    check_base_class_offset(lv, (S10335C3_nt*), 0, "S10335C1");
    check_base_class_offset(lv, (S10335C4*), 0, "S10335C1");
    test_class_info(&lv, &cd_S10335C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10335C1(Test_S10335C1, "S10335C1", 1);

#else // __cplusplus

extern Class_Descriptor cd_S20291C14_nt;
extern Class_Descriptor cd_S10335C3_nt;
extern Class_Descriptor cd_S10335C4;
static Base_Class bases_S10335C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S10335C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S10335C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10335C1 = {  "S10335C1", // class name
  bases_S10335C1, 3,
  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  S6324C1  : S7856C24 {
  void *s6324c1f0;
  int s6324c1f1;
  virtual  ~S6324C1(); // _ZN7S6324C1D1Ev
  S6324C1(); // tgen
};
//SIG(1 S6324C1) C1{ BC2{ m} vd Fp Fi}


 S6324C1 ::~S6324C1(){ note_dtor("S6324C1", this);}
S6324C1 ::S6324C1(){ note_ctor("S6324C1", this);} // tgen

static void Test_S6324C1()
{
  extern Class_Descriptor cd_S6324C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6324C1, buf);
    S6324C1 *dp, &lv = *(dp=new (buf) S6324C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6324C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6324C1)");
    check_base_class_offset(lv, (S7856C24*), 0, "S6324C1");
    check_field_offset(lv, s6324c1f0, ABISELECT(8,4), "S6324C1.s6324c1f0");
    check_field_offset(lv, s6324c1f1, ABISELECT(16,8), "S6324C1.s6324c1f1");
    test_class_info(&lv, &cd_S6324C1);
    dp->~S6324C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6324C1(Test_S6324C1, "S6324C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6324C1C1Ev();
extern void _ZN7S6324C1D1Ev();
Name_Map name_map_S6324C1[] = {
  NSPAIR(_ZN7S6324C1C1Ev),
  NSPAIR(_ZN7S6324C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S6324C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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 _ZTI7S6324C1[];
extern void _ZN7S6324C1D1Ev();
extern void _ZN7S6324C1D0Ev();
static  VTBL_ENTRY vtc_S6324C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6324C1[0]),
  (VTBL_ENTRY)&_ZN7S6324C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6324C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6324C1[];
extern  VTBL_ENTRY _ZTV7S6324C1[];
Class_Descriptor cd_S6324C1 = {  "S6324C1", // class name
  bases_S6324C1, 1,
  &(vtc_S6324C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6324C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6324C1),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  S13948C1  {
  __tsi64 s13948c1f0[2];
  void *s13948c1f1;
  int s13948c1f2[2];
};
//SIG(1 S13948C1) C1{ FL[2] Fp Fi[2]}



static void Test_S13948C1()
{
  {
    init_simple_test("S13948C1");
    S13948C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S13948C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13948C1)");
    check_field_offset(lv, s13948c1f0, 0, "S13948C1.s13948c1f0");
    check_field_offset(lv, s13948c1f1, 16, "S13948C1.s13948c1f1");
    check_field_offset(lv, s13948c1f2, ABISELECT(24,20), "S13948C1.s13948c1f2");
  }
}
static Arrange_To_Call_Me vS13948C1(Test_S13948C1, "S13948C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14551C1  {
  void *s14551c1f0[2];
  int s14551c1f1[5];
  char s14551c1f2;
};
//SIG(1 S14551C1) C1{ Fp[2] Fi[5] Fc}



static void Test_S14551C1()
{
  {
    init_simple_test("S14551C1");
    S14551C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S14551C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14551C1)");
    check_field_offset(lv, s14551c1f0, 0, "S14551C1.s14551c1f0");
    check_field_offset(lv, s14551c1f1, ABISELECT(16,8), "S14551C1.s14551c1f1");
    check_field_offset(lv, s14551c1f2, ABISELECT(36,28), "S14551C1.s14551c1f2");
  }
}
static Arrange_To_Call_Me vS14551C1(Test_S14551C1, "S14551C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16881C1  {
  int s16881c1f0;
  void *s16881c1f1;
  char s16881c1f2[2];
  void  mf16881c1(); // _ZN8S16881C19mf16881c1Ev
};
//SIG(1 S16881C1) C1{ m Fi Fp Fc[2]}


void  S16881C1 ::mf16881c1(){}

static void Test_S16881C1()
{
  {
    init_simple_test("S16881C1");
    S16881C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16881C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16881C1)");
    check_field_offset(lv, s16881c1f0, 0, "S16881C1.s16881c1f0");
    check_field_offset(lv, s16881c1f1, ABISELECT(8,4), "S16881C1.s16881c1f1");
    check_field_offset(lv, s16881c1f2, ABISELECT(16,8), "S16881C1.s16881c1f2");
  }
}
static Arrange_To_Call_Me vS16881C1(Test_S16881C1, "S16881C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10334C1  : S20291C14_nt , S7856C24 {
  void *s10334c1f0;
};
//SIG(1 S10334C1) C1{ BC2{} BC3{ m} Fp}



static void Test_S10334C1()
{
  extern Class_Descriptor cd_S10334C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S10334C1, buf);
    S10334C1 &lv = *(new (buf) S10334C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S10334C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10334C1)");
    check_base_class_offset(lv, (S20291C14_nt*), 0, "S10334C1");
    check_base_class_offset(lv, (S7856C24*), 0, "S10334C1");
    check_field_offset(lv, s10334c1f0, 0, "S10334C1.s10334c1f0");
    test_class_info(&lv, &cd_S10334C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10334C1(Test_S10334C1, "S10334C1", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S20291C14_nt;
extern Class_Descriptor cd_S7856C24;
extern VTBL_ENTRY _ZTI8S7856C24[];
static Base_Class bases_S10334C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20291C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7856C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10334C1 = {  "S10334C1", // class name
  bases_S10334C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13909C1  {
  __tsi64 s13909c1f0[2];
  char s13909c1f1[193];
};
//SIG(1 S13909C1) C1{ FL[2] Fc[193]}



static void Test_S13909C1()
{
  {
    init_simple_test("S13909C1");
    S13909C1 lv;
    check2(sizeof(lv), ABISELECT(216,212), "sizeof(S13909C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13909C1)");
    check_field_offset(lv, s13909c1f0, 0, "S13909C1.s13909c1f0");
    check_field_offset(lv, s13909c1f1, 16, "S13909C1.s13909c1f1");
  }
}
static Arrange_To_Call_Me vS13909C1(Test_S13909C1, "S13909C1", ABISELECT(216,212));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10920C1  {
  char s10920c1f0[4];
  void *s10920c1f1[10];
};
//SIG(1 S10920C1) C1{ Fc[4] Fp[10]}



static void Test_S10920C1()
{
  {
    init_simple_test("S10920C1");
    S10920C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S10920C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10920C1)");
    check_field_offset(lv, s10920c1f0, 0, "S10920C1.s10920c1f0");
    check_field_offset(lv, s10920c1f1, ABISELECT(8,4), "S10920C1.s10920c1f1");
  }
}
static Arrange_To_Call_Me vS10920C1(Test_S10920C1, "S10920C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14647C1  {
  void *s14647c1f0[3];
  long s14647c1f1[2];
};
//SIG(1 S14647C1) C1{ Fp[3] Fl[2]}



static void Test_S14647C1()
{
  {
    init_simple_test("S14647C1");
    S14647C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S14647C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14647C1)");
    check_field_offset(lv, s14647c1f0, 0, "S14647C1.s14647c1f0");
    check_field_offset(lv, s14647c1f1, ABISELECT(24,12), "S14647C1.s14647c1f1");
  }
}
static Arrange_To_Call_Me vS14647C1(Test_S14647C1, "S14647C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12725C1  {
  int s12725c1f0;
  void *s12725c1f1;
  __tsi64 s12725c1f2[3];
};
//SIG(1 S12725C1) C1{ Fi Fp FL[3]}



static void Test_S12725C1()
{
  {
    init_simple_test("S12725C1");
    S12725C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S12725C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12725C1)");
    check_field_offset(lv, s12725c1f0, 0, "S12725C1.s12725c1f0");
    check_field_offset(lv, s12725c1f1, ABISELECT(8,4), "S12725C1.s12725c1f1");
    check_field_offset(lv, s12725c1f2, ABISELECT(16,8), "S12725C1.s12725c1f2");
  }
}
static Arrange_To_Call_Me vS12725C1(Test_S12725C1, "S12725C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13928C1  {
  long s13928c1f0[2];
  int s13928c1f1;
  void *s13928c1f2;
};
//SIG(1 S13928C1) C1{ Fl[2] Fi Fp}



static void Test_S13928C1()
{
  {
    init_simple_test("S13928C1");
    S13928C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S13928C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13928C1)");
    check_field_offset(lv, s13928c1f0, 0, "S13928C1.s13928c1f0");
    check_field_offset(lv, s13928c1f1, ABISELECT(16,8), "S13928C1.s13928c1f1");
    check_field_offset(lv, s13928c1f2, ABISELECT(24,12), "S13928C1.s13928c1f2");
  }
}
static Arrange_To_Call_Me vS13928C1(Test_S13928C1, "S13928C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14196C1  {
  void *s14196c1f0;
  int s14196c1f1;
  unsigned int s14196c1f2:1;
};
//SIG(1 S14196C1) C1{ Fp Fi Fi:1}



static void Test_S14196C1()
{
  {
    init_simple_test("S14196C1");
    static S14196C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S14196C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14196C1)");
    check_field_offset(lv, s14196c1f0, 0, "S14196C1.s14196c1f0");
    check_field_offset(lv, s14196c1f1, ABISELECT(8,4), "S14196C1.s14196c1f1");
    set_bf_and_test(lv, s14196c1f2, ABISELECT(12,8), 0, 1, 1, "S14196C1");
  }
}
static Arrange_To_Call_Me vS14196C1(Test_S14196C1, "S14196C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17837C1  {
  void *s17837c1f0;
  long s17837c1f1[2];
  void  mf17837c1(); // _ZN8S17837C19mf17837c1Ev
};
//SIG(1 S17837C1) C1{ m Fp Fl[2]}


void  S17837C1 ::mf17837c1(){}

static void Test_S17837C1()
{
  {
    init_simple_test("S17837C1");
    S17837C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17837C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17837C1)");
    check_field_offset(lv, s17837c1f0, 0, "S17837C1.s17837c1f0");
    check_field_offset(lv, s17837c1f1, ABISELECT(8,4), "S17837C1.s17837c1f1");
  }
}
static Arrange_To_Call_Me vS17837C1(Test_S17837C1, "S17837C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12307C1  {
  int s12307c1f0;
  char s12307c1f1[44];
};
//SIG(1 S12307C1) C1{ Fi Fc[44]}



static void Test_S12307C1()
{
  {
    init_simple_test("S12307C1");
    S12307C1 lv;
    check2(sizeof(lv), 48, "sizeof(S12307C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12307C1)");
    check_field_offset(lv, s12307c1f0, 0, "S12307C1.s12307c1f0");
    check_field_offset(lv, s12307c1f1, 4, "S12307C1.s12307c1f1");
  }
}
static Arrange_To_Call_Me vS12307C1(Test_S12307C1, "S12307C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17282C1  {
  int s17282c1f0[65];
  void  mf17282c1(); // _ZN8S17282C19mf17282c1Ev
};
//SIG(1 S17282C1) C1{ m Fi[65]}


void  S17282C1 ::mf17282c1(){}

static void Test_S17282C1()
{
  {
    init_simple_test("S17282C1");
    S17282C1 lv;
    check2(sizeof(lv), 260, "sizeof(S17282C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17282C1)");
    check_field_offset(lv, s17282c1f0, 0, "S17282C1.s17282c1f0");
  }
}
static Arrange_To_Call_Me vS17282C1(Test_S17282C1, "S17282C1", 260);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10967C1  {
  char s10967c1f0[565];
};
//SIG(1 S10967C1) C1{ Fc[565]}



static void Test_S10967C1()
{
  {
    init_simple_test("S10967C1");
    S10967C1 lv;
    check2(sizeof(lv), 565, "sizeof(S10967C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10967C1)");
    check_field_offset(lv, s10967c1f0, 0, "S10967C1.s10967c1f0");
  }
}
static Arrange_To_Call_Me vS10967C1(Test_S10967C1, "S10967C1", 565);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14792C1  {
  short s14792c1f0;
  char s14792c1f1;
};
//SIG(1 S14792C1) C1{ Fs Fc}



static void Test_S14792C1()
{
  {
    init_simple_test("S14792C1");
    S14792C1 lv;
    check2(sizeof(lv), 4, "sizeof(S14792C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14792C1)");
    check_field_offset(lv, s14792c1f0, 0, "S14792C1.s14792c1f0");
    check_field_offset(lv, s14792c1f1, 2, "S14792C1.s14792c1f1");
  }
}
static Arrange_To_Call_Me vS14792C1(Test_S14792C1, "S14792C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

